Zum Inhalt

Joystick Bricklet

Joystick Bricklet

Joystick Bricklet

Ein 2-achsiger Joystick, dessen Position in x- und y-Koordinaten ausgelesen werden kann. Ebenfalls kann man den Joystick drücken. Ob gedrückt wurde oder nicht kann ebenfalls ausgelesen werden.

Initialisierung

Code um das Bricklet anzusteuern

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Adressierung
# Diese beiden Zeilen nur 1x pro Programm nutzen:
HOST = "localhost"
PORT = 4223

# UID des Bricklets
joystickBrickletUID = "xxx" # UID aus dem Brick Viewer

# Import der wichtigen Funktionen
from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_joystick_v2 import BrickletJoystickV2

# Verbindung herstellen
ipcon = IPConnection()
joystickBricklet = BrickletJoystickV2(joystickBrickletUID, ipcon)
ipcon.connect(HOST, PORT)

Funktionen im Hauptprogramm

Das Bricklet auslesen

x, y = joystickBricklet.get_position()

gibt die x- und y-Koordinaten des Joysticks aus. Die x-Achse ist die vertikale Achse bezüglich der Beschriftung auf dem Bricklet. x=0 und y=0 entspricht der neutralen Position in der Mitte. Die Koordinaten können die Werte -100 bis 100 annehmen.

pressed = joystickBricklet.is_pressed()

gibt den Wert in true oder false aus, wenn der Drücker gedrückt ist zum Zeitpunkt der Auslesung.

Callback-Funktionen

Das Joystick-Bricklet bietet zwei Callbackfunktionen an. Einmal eine, welche auf das Drücken des Joysticks reagiert und eine welche auf die Position reagiert.

Callback-Funktion registrieren

Callbackfunktionen für das Drücken registrieren:

joystickBricklet.register_callback(joystickBricklet.CALLBACK_PRESSED, joystickCallbackPressed)
Der Funktion joystickCallbackPressed wird ein Parameter true oder false übergeben. joystickCallbackPressed sollte dann so definiert werden: def joystickCallbackPressed(pressed):

Callbackfunktionen für Position registrieren:

joystickBricklet.register_callback(joystickBricklet.CALLBACK_POSITION, joystickCallbackPosition)
Der Funktion joystickCallbackPosition werden zwei Parameter für die x- und y-Positionen übergeben. joystickCallbackPosition sollte dann so definiert werden: def joystickCallbackPosition(x,y):

Callback-Funktion konfigurieren

Callbackfunktion für das Drücken konfigurieren:

joystickBricklet.set_pressed_callback_configuration(period, value_has_to_change)

Callbackfunktion für Position konfigurieren

joystickBricklet.set_position_callback_configuration(period, value_has_to_change) 

Bedeutung der Parameter:

  • period: Wert in ms in der die Temperatur überprüft werden soll. Standardwert 0, deaktiviert die Callbackfunktion.
  • value_has_to_change: True oder False. Falls True, dann wird die Callbackfunktion nur aufgerufen, wenn sie die Temperatur geändert hat. Standardwert False

Ein Beispiel für eine mögliche Konfigurationen:

  • joystickBricklet.set_pressed_callback_configuration(10, True)ruft die Callback-Funktion auf, falls der Joystick gedrückt wurde. Dies wird alle 10 ms überprüft.
  • joystickBricklet.set_position_callback_configuration(100, True)ruft die Callback-Funktion auf, falls der Joystick bewegt wurde. Dies wird alle 100 ms überprüft. Dieser Wert muss man je nach Anwendung überprüfen und anpassen.

Beispiel für joystickCallbackPressed und joystickCallbackPosition

# Die Funktion welche aktiviert wird, wenn der Joystick gedrückt wird
def joystickCallbackPressed(pressed):
    print("Pressed: " + str(pressed))
    print("")

# Die Funktion welche aktiviert wird, wenn der Joystick bewegt wird
def joystickCallbackPosition(x, y):
    print("Position X: " + str(x))
    print("Position Y: " + str(y))
    print("")