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

../_images/mcp3008_and_adc0834.jpg

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.

../_images/2.1.9_joystick_list.png

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

IN DIESEM KIT ENTHALTENE TEILE

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch separat über die unten stehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Joystick-Modul

-

ADC0834

-

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.

../_images/2.1.9_joystick_schematic_1.png ../_images/2.1.9_joystick_schematic_2.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/2.1.9_Joystick_circuit.png

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

  1. Importiert die Klasse Button aus der Bibliothek gpiozero zur Verwaltung eines Buttons, der mit einem GPIO-Pin verbunden ist. Importiert ebenfalls die Bibliothek ADC0834 für die Schnittstelle mit dem ADC0834 ADC (Analog-Digital-Wandler) Modul.

    #!/usr/bin/env python3
    from gpiozero import Button
    import ADC0834
    import time
    
  2. 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()
    
  3. 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_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.

    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