Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
2.1.9 Joystick
Bemerkung
Abhängig von Ihrer Kit-Version identifizieren Sie bitte, ob Sie ADC0834 oder MCP3008 haben, und fahren Sie mit dem entsprechenden Abschnitt fort.
Einleitung
In diesem Projekt lernen wir, 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.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
IN DIESEM KIT ENTHALTENE TEILE |
LINK |
|---|---|---|
Raphael Kit |
337 |
Sie können sie auch separat über die unten stehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
|---|---|
- |
|
- |
Schaltplan
Wenn die Daten des Joysticks gelesen werden, gibt es Unterschiede zwischen den Achsen: Die Daten der X- und Y-Achse sind analog, was bedeutet, dass der ADC0834 verwendet wird, um den analogen Wert in einen digitalen Wert umzuwandeln. Die Daten der Z-Achse sind digital, sodass Sie direkt den GPIO zum Lesen verwenden können, oder Sie können auch den ADC zum Lesen verwenden.
Experimentelle Verfahren
Schritt 1: Bauen Sie den Schaltkreis auf.
Schritt 2: Wechseln Sie zum Ordner des Codes.
cd ~/raphael-kit/python-pi5
Schritt 3: Führen Sie den Code aus.
sudo python3 2.1.9_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.
Warnung
Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte If gpiozero doesn’t work.
Code
Bemerkung
Sie können den unten stehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Aber zuvor müssen Sie zum Quellcodepfad wie raphael-kit/python-pi5 gehen. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen.
#!/usr/bin/env python3
from gpiozero import Button
import ADC0834
import time
# Initialize the button connected to GPIO pin 22
BtnPin = Button(22)
# Setup the ADC0834 ADC
ADC0834.setup()
try:
# Main loop to read and print ADC values and button state
while True:
# Read X and Y values from ADC channels 0 and 1
x_val = ADC0834.getResult(0)
y_val = ADC0834.getResult(1)
# Read the state of the button (pressed or not)
Btn_val = BtnPin.value
# Print the X, Y, and button values
print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val))
# Delay of 0.2 seconds before the next read
time.sleep(0.2)
# Gracefully handle script termination (e.g., via KeyboardInterrupt)
except KeyboardInterrupt:
pass
Code-Erklärung
Importiert die Klasse
Buttonaus der Bibliothekgpiozerozur Verwaltung eines Buttons, der mit einem GPIO-Pin verbunden ist. Importiert ebenfalls die BibliothekADC0834für die Schnittstelle mit dem ADC0834 ADC (Analog-Digital-Wandler) Modul.#!/usr/bin/env python3 from gpiozero import Button import ADC0834 import time
Initialisiert einen Button, der mit dem GPIO-Pin 22 verbunden ist, und richtet das ADC0834-Modul für die Nutzung ein.
# Initialize the button connected to GPIO pin 22 BtnPin = Button(22) # Setup the ADC0834 ADC ADC0834.setup()
Die VRX- und VRY-Verbindungen des Joysticks sind mit CH0 und CH1 des ADC0834 verbunden. Dies ermöglicht das Lesen der Werte von CH0 und CH1, die dann in den Variablen
x_valundy_valgespeichert werden. Zusätzlich wird der SW-Wert des Joysticks gelesen und der VariablenBtn_valzugewiesen. Die abgerufenen Werte vonx_val,y_valundBtn_valwerden anschließend mit der Funktionprint()angezeigt.try: # Main loop to read and print ADC values and button state while True: # Read X and Y values from ADC channels 0 and 1 x_val = ADC0834.getResult(0) y_val = ADC0834.getResult(1) # Read the state of the button (pressed or not) Btn_val = BtnPin.value # Print the X, Y, and button values print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val)) # Delay of 0.2 seconds before the next read time.sleep(0.2) # Gracefully handle script termination (e.g., via KeyboardInterrupt) except KeyboardInterrupt: pass