.. note:: 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 [|link_sf_facebook|] und treten Sie heute bei! .. _2.1.6_py_pi5: 2.1.6 Joystick ============== .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Je nach deiner Kit-Version überprüfe bitte, ob du **ADC0834** oder **MCP3008** hast, und fahre mit dem entsprechenden Abschnitt fort. 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. .. image:: ../python_pi5/img/2.1.9_joystick_list.png 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. .. image:: ../python_pi5/img/2.1.9_joystick_schematic_1.png .. image:: ../python_pi5/img/2.1.9_joystick_schematic_2.png Experimentelle Verfahren ---------------------------- **Schritt 1:** Bauen Sie den Schaltkreis auf. .. image:: ../python_pi5/img/2.1.9_Joystick_circuit.png **Schritt 2:** Wechseln Sie in den Ordner des Codes. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Schritt 3:** Ausführen. .. raw:: html .. code-block:: 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. .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` **Code** .. note:: 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 ``davinci-kit-for-raspberry-pi/python-pi5`` gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Auswirkungen zu sehen. .. raw:: html .. code-block:: python #!/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 Bibliothek ``ADC0834`` für die Schnittstelle mit dem ADC0834-ADC (Analog-Digital-Umwandler) Modul. .. code-block:: python #!/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. .. code-block:: python # 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`` und ``y_val`` gespeichert werden. Zusätzlich wird der SW-Wert des Joysticks gelesen und der Variablen ``Btn_val`` zugewiesen. Die abgerufenen Werte von ``x_val``, ``y_val`` und ``Btn_val`` werden anschließend mit der Funktion ``print()`` angezeigt. .. code-block:: python 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