2.1.6 Joystick¶
Einführung¶
In diesem Projekt werden wir lernen, wie ein Joystick funktioniert. Wir bedienen den Joystick und zeigen die Ergebnisse auf dem Bildschirm an.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Schaltplan¶
Wenn die Daten des Joysticks gelesen werden, gibt es einige Unterschiede zwischen den Achsen: Daten der X- und Y-Achse sind analog, wofür der ADC0834 benötigt wird, um den analogen Wert in einen digitalen Wert umzuwandeln. Daten der Z-Achse sind digital, also können Sie diese direkt mit dem GPIO lesen, oder Sie können auch den ADC verwenden, um zu lesen.
Experimentelle Verfahren¶
Schritt 1: Bauen Sie den Schaltkreis auf.
Schritt 2: Wechseln Sie in den Ordner des Codes.
cd ~/raphael-kit/python-pi5
Schritt 3: Ausführen.
sudo python3 2.1.6_Joystick_zero.py
Nachdem der Code ausgeführt wurde, drehen Sie den Joystick, dann werden die entsprechenden Werte von x, y, Btn auf dem Bildschirm angezeigt.
Code
Bemerkung
Sie können den unten stehenden Code Modifizieren/Zurücksetzen/Kopieren/Ausführen/Stoppen. Aber bevor Sie das tun, müssen Sie zum Quellcode-Pfad wie raphael-kit/python-pi5
gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Auswirkungen zu sehen.
#!/usr/bin/env python3
from gpiozero import Button
import ADC0834
import time
# Initialisieren Sie den Button, der mit GPIO-Pin 22 verbunden ist
BtnPin = Button(22)
# Richten Sie den ADC0834-ADC ein
ADC0834.setup()
try:
# Hauptschleife zum Lesen und Anzeigen der ADC-Werte und des Knopfzustands
while True:
# Lesen Sie die X- und Y-Werte von den ADC-Kanälen 0 und 1
x_val = ADC0834.getResult(0)
y_val = ADC0834.getResult(1)
# Lesen Sie den Zustand des Knopfes (gedrückt oder nicht)
Btn_val = BtnPin.value
# Drucken Sie die X-, Y- und Knopfwerte aus
print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val))
# Verzögerung von 0,2 Sekunden vor dem nächsten Lesen
time.sleep(0.2)
# Eleganter Ausstieg bei Skriptbeendigung (z. B. durch KeyboardInterrupt)
except KeyboardInterrupt:
pass
Code-Erklärung
Dieser Abschnitt importiert die Klasse Button aus der Bibliothek
gpiozero
zur Verwaltung eines Buttons, der mit einem GPIO-Pin verbunden ist. Es importiert auch die BibliothekADC0834
für die Schnittstelle mit dem ADC0834-ADC (Analog-Digital-Umwandler) Modul.#!/usr/bin/env python3 from gpiozero import Button import ADC0834 import time
Initialisiert einen Button, der mit GPIO-Pin 22 verbunden ist, und richtet das ADC0834-Modul zur Verwendung ein.
# Initialisieren Sie den Button, der mit GPIO-Pin 22 verbunden ist BtnPin = Button(22) # Richten Sie den ADC0834-ADC ein ADC0834.setup()
Die VRX- und VRY-Verbindungen des Joysticks sind mit CH0 bzw. CH1 des ADC0834 verbunden. Diese Einrichtung ermöglicht das Lesen der Werte von CH0 und CH1, die dann in den Variablen
x_val
undy_val
gespeichert werden. Zusätzlich wird der SW-Wert des Joysticks gelesen und der VariablenBtn_val
zugewiesen. Die abgerufenen Werte vonx_val
,y_val
undBtn_val
werden anschließend mit der Funktionprint()
angezeigt.try: # Hauptschleife zum Lesen und Anzeigen der ADC-Werte und des Knopfzustands while True: # Lesen Sie die X- und Y-Werte von den ADC-Kanälen 0 und 1 x_val = ADC0834.getResult(0) y_val = ADC0834.getResult(1) # Lesen Sie den Zustand des Knopfes (gedrückt oder nicht) Btn_val = BtnPin.value # Drucken Sie die X-, Y- und Knopfwerte aus print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val)) # Verzögerung von 0,2 Sekunden vor dem nächsten Lesen time.sleep(0.2) # Eleganter Ausstieg bei Skriptbeendigung (z. B. durch KeyboardInterrupt) except KeyboardInterrupt: pass