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 |
|---|---|
- |
|
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:
Verdrahtungsdiagramm
Folgen Sie diesen Schritten, um die Schaltung aufzubauen:
Verbinden Sie die Anode (langer Pin) der LED über einen strombegrenzenden Widerstand mit einem GPIO-Pin (GPIO22).
Verbinden Sie die Kathode (kurzer Pin) der LED mit Masse (GND).
Verbinden Sie einen Anschluss des Tasters mit GPIO17 und den anderen Anschluss mit Masse (GND).
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:
Beim Drücken des Tasters (verbunden mit GPIO-Pin 17) wird die LED (verbunden mit GPIO-Pin 22) eingeschaltet.
Beim Loslassen des Tasters wird die LED ausgeschaltet.
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
Bibliotheken importieren
Die
fusion_hat-Bibliothek stellt eine einfache Schnittstelle zur Steuerung der GPIO-Pins bereit, und das Modulsignalwird 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
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)
Ereignisbehandlung
Die Ereignisse
when_activatedundwhen_deactivatedwerden jeweils mit den Methodenhigh()undlow()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
Ereignisschleife
Die Funktion
pause()hält das Programm aktiv und wartet auf Ereignisse beim Drücken und Loslassen des Tasters.pause()
Fehlerbehebung
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).
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.
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
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
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
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
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.