Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Probleme nach dem Kauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Sneak Peeks.

  • Sonderrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu entdecken und zu gestalten? Klicken Sie auf [here] und treten Sie noch heute bei!

2.1 Taster

Einführung

In diesem Projekt lernen wir, wie ein Taster verwendet wird, um eine LED zu steuern. Taster sind grundlegende Eingabegeräte, die in vielen elektronischen Projekten eingesetzt werden, um mit Schaltungen und Systemen zu interagieren.


Benötigte Komponenten

Um dieses Projekt durchzuführen, benötigen Sie die folgenden Komponenten:

KOMPONENTE

KAUFLINK

Steckbrett

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Taste

BUY

Fusion HAT+

-

Raspberry Pi

-


Schaltplan

Wir verwenden einen normalerweise offenen Taster als Eingang für den Raspberry Pi. Wenn der Taster gedrückt wird, erhält GPIO17 ein High-Signal (3,3 V). Der Raspberry Pi erkennt dieses Signal und schaltet die LED ein. Die Schaltungsverbindungen sind in den folgenden Diagrammen dargestellt:

../_images/2.1.1_sch.png

Verdrahtungsdiagramm

Folgen Sie diesen Schritten, um die Schaltung aufzubauen:

  1. Verbinden Sie die Anode (langer Pin) der LED über einen strombegrenzenden Widerstand mit einem GPIO-Pin (GPIO22).

  2. Verbinden Sie die Kathode (kurzer Pin) der LED mit Masse (GND).

  3. Verbinden Sie einen Anschluss des Tasters mit GPIO17 und den anderen Anschluss mit Masse (GND).

../_images/2.1.1_bb.png

Beispiel ausführen

Der gesamte Beispielcode, der in diesem Tutorial verwendet wird, befindet sich im Verzeichnis ai-lab-kit. Folgen Sie diesen Schritten, um das Beispiel auszuführen:

cd ~/ai-lab-kit/python/
sudo python3 2.1_Button.py

Dieses Python-Skript demonstriert eine interaktive Schaltung, bei der ein Taster eine LED steuert. Beim Ausführen passiert Folgendes:

  1. Beim Drücken des Tasters (verbunden mit GPIO-Pin 17) wird die LED (verbunden mit GPIO-Pin 22) eingeschaltet.

  2. Beim Loslassen des Tasters wird die LED ausgeschaltet.

  3. Das Programm läuft unbegrenzt weiter und überwacht Tastendrücke und -freigaben, um die LED entsprechend zu steuern.


Code

Der folgende Python-Code schaltet die LED abhängig vom Drücken und Loslassen des Tasters ein bzw. aus:

#!/usr/bin/env python3
from fusion_hat.pin import Pin, Mode, Pull
from signal import pause  # Import pause function from signal module

# Initialize an LED object on GPIO pin 22
led = Pin(22,mode=Mode.OUT)
# Initialize a Button object on GPIO pin 17
button = Pin(17, mode=Mode.IN, pull=Pull.DOWN)

# # Link the button's "when_activated" event to the LED's high() method
button.when_activated = led.high

# # Link the button's "when_deactivated" event to the LED's low() method
button.when_deactivated = led.low

# Run an event loop that waits for button events and keeps the script running
print("CTRL + C to exit")
pause()

Code verstehen

  1. Bibliotheken importieren

    Die fusion_hat-Bibliothek stellt eine einfache Schnittstelle zur Steuerung der GPIO-Pins bereit, und das Modul signal wird verwendet, um das Programm dauerhaft laufen zu lassen.

    #!/usr/bin/env python3
    from fusion_hat.pin import Pin, Mode, Pull
    from signal import pause  # Importiere die Funktion pause aus dem signal-Modul
    
  2. Initialisierung der Komponenten

    Die LED ist mit GPIO-Pin 22 verbunden, und der Taster ist mit GPIO-Pin 17 verbunden.

    # Initialisiere ein LED-Objekt auf GPIO-Pin 22
    led = Pin(22,mode=Mode.OUT)
    # Initialisiere ein Button-Objekt auf GPIO-Pin 17
    button = Pin(17, mode=Mode.IN, pull=Pull.DOWN)
    
  3. Ereignisbehandlung

    Die Ereignisse when_activated und when_deactivated werden jeweils mit den Methoden high() und low() der LED verknüpft. Dadurch wird sichergestellt, dass die LED eingeschaltet wird, wenn der Taster gedrückt wird, und ausgeschaltet wird, wenn der Taster losgelassen wird.

    button.when_activated = led.high
    button.when_deactivated = led.low
    
  4. Ereignisschleife

    Die Funktion pause() hält das Programm aktiv und wartet auf Ereignisse beim Drücken und Loslassen des Tasters.

    pause()
    

Fehlerbehebung

  1. LED leuchtet nicht

    • Ursache: Falscher GPIO-Pin oder fehlerhafte LED-Verdrahtung.

    • Lösung: Überprüfen Sie, ob das positive Bein der LED mit GPIO-Pin 22 verbunden ist und das negative Bein über einen Widerstand mit Masse (GND).

  2. Tastendruck hat keine Wirkung

    • Ursache: Falsche Verdrahtung des Tasters oder falsche GPIO-Konfiguration.

    • Lösung: Stellen Sie sicher, dass der Taster korrekt mit GPIO-Pin 17 und Masse (GND) verbunden ist.

  3. LED bleibt immer an oder aus, unabhängig vom Tastenzustand

    • Ursache: Der Taster löst möglicherweise keine Ereignisse aus.

    • Lösung: Überprüfen Sie die Funktion des Tasters, indem Sie seine Verbindung mit einem Multimeter oder einer einfachen Testschaltung prüfen.


Erweiterungsideen

  1. LED-Zustand umschalten (Toggle)

    Ändern Sie das Skript so, dass der LED-Zustand bei jedem Tastendruck umgeschaltet wird, anstatt sie direkt ein- oder auszuschalten:

    def toggle():
       if led.value() == 1:
          led.off()
       else:
          led.on()
    
    button.when_activated = toggle
    
  2. Mehrere LEDs steuern

    Steuern Sie mehrere LEDs mit einem einzigen Taster und wechseln Sie zwischen verschiedenen Mustern:

    leds = [LED(17), LED(27), LED(22)]
    current_led = 0
    
    def cycle_leds():
       global current_led
       leds[current_led].off()
       current_led = (current_led + 1) % len(leds)
       leds[current_led].on()
    
    button.when_activated = cycle_leds
    
  3. Dauer des Tastendrucks

    Fügen Sie Funktionen hinzu, die unterschiedliche Aktionen ausführen, je nachdem wie lange der Taster gedrückt wird:

    from time import time
    
    press_time = None
    
    def start_timer():
       global press_time
       press_time = time()
    
    def check_duration():
       global press_time
       duration = time() - press_time
       if duration < 2:
          led.on()
       else:
          led.off()
    
    button.when_activated = start_timer
    button.when_deactivated = check_duration
    
  4. Entprellung (Debouncing)

    Implementieren Sie eine softwarebasierte Entprellung für eine genauere Erkennung von Tastendrücken:

    from time import time
    
    press_time = None
    debounce_time = 0.2
    
    def press():
       global press_time
       press_time = time()
    
    def debounce():
       global press_time
       current_time = time()
       duration = current_time - press_time
       if duration < debounce_time:
          return
       else:
          led.on()
    
    button.when_activated = press
    button.when_deactivated = debounce
    

Fazit

Dieses Projekt zeigt, wie ein Taster verwendet werden kann, um eine LED mit dem Fusion HAT+ zu steuern. Taster sind vielseitige Komponenten und können in zahlreichen Anwendungen eingesetzt werden – von einfachen Schaltungen bis hin zu komplexen interaktiven Systemen.