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.2 Mikroschalter
Einführung
In diesem Projekt lernen wir, wie ein Mikroschalter verwendet wird, um zwei LEDs zu steuern. Ein Mikroschalter ist ein sehr empfindliches Bauteil, das bereits bei geringem Druck ausgelöst wird. Er wird häufig in Sicherheitssystemen eingesetzt, um zu verhindern, dass Maschinen oder Türen unter unsicheren Bedingungen betrieben werden.
Benötigte Komponenten
Um dieses Projekt durchzuführen, benötigen Sie die folgenden Komponenten:
KOMPONENTE |
KAUFLINK |
|---|---|
- |
|
- |
|
Raspberry Pi |
- |
Schaltplan
Der Mikroschalter ist mit GPIO17 verbunden, und zwei LEDs sind mit GPIO22 und GPIO27 verbunden. Wenn der Mikroschalter gedrückt wird, leuchtet die rote LED; wenn er losgelassen wird, leuchtet die gelbe LED.
Verdrahtungsdiagramm
Folgen Sie diesen Schritten, um die Schaltung aufzubauen:
Verbinden Sie einen Anschluss des Mikroschalters mit GPIO17 und den anderen mit Masse (GND).
Verbinden Sie die Anoden der beiden LEDs über Strombegrenzungswiderstände mit GPIO22 (gelb) und GPIO27 (rot).
Verbinden Sie die Kathoden beider LEDs mit 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.2_MicroSwitch.py
Dieses Python-Skript steuert zwei LEDs abhängig vom Zustand eines mit dem Raspberry Pi verbundenen Mikroschalters. Beim Ausführen passiert Folgendes:
Mikroschalter gedrückt:
LED1 (verbunden mit GPIO-Pin 22) schaltet sich ein.
LED2 (verbunden mit GPIO-Pin 27) schaltet sich aus.
Mikroschalter losgelassen:
LED1 schaltet sich aus.
LED2 schaltet sich ein.
Das Programm überprüft kontinuierlich alle 0,5 Sekunden den Zustand des Mikroschalters und passt den Zustand der LEDs entsprechend an.
Das Skript läuft unbegrenzt weiter, bis es durch Drücken von
Ctrl+Cbeendet wird.
Code
Der folgende Python-Code schaltet zwischen zwei LEDs um, abhängig vom Zustand des Mikroschalters:
#!/usr/bin/env python3
from fusion_hat.pin import Pin, Mode, Pull
from time import sleep # Import sleep function for delays
# Initialize micro switch on GPIO pin 17
micro_switch = Pin(17, mode=Mode.IN, pull=Pull.DOWN)
# Initialize LED1 connected to GPIO pin 22
led1 = Pin(22,mode=Mode.OUT)
# Initialize LED2 connected to GPIO pin 27
led2 = Pin(27,mode=Mode.OUT)
try:
# Continuously check the state of the micro switch and control LEDs accordingly
while True:
if micro_switch.value() == 1: # If the micro switch is pressed
led1.high() # Turn on LED1
led2.low() # Turn off LED2
else: # If the micro switch is not pressed
led1.low() # Turn off LED1
led2.high() # Turn on LED2
sleep(0.5) # Pause for 0.5 seconds before checking the switch again
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
pass
Code verstehen
Bibliotheken importieren
Die
fusion_hat-Bibliothek ermöglicht eine einfache Steuerung der GPIO-Pins, und dietime-Bibliothek wird für Zeitverzögerungen verwendet.from fusion_hat.pin import Pin, Mode, Pull from time import sleep # Importiert die sleep-Funktion für Verzögerungen
Initialisierung der Komponenten
Der Mikroschalter ist mit GPIO17 verbunden und verwendet keinen Pull-up-Widerstand, während die LEDs mit GPIO22 und GPIO27 verbunden sind.
# Initialisiere den Mikroschalter an GPIO-Pin 17 micro_switch = Pin(17, mode=Mode.IN, pull=Pull.DOWN) # Initialisiere LED1 an GPIO-Pin 22 led1 = Pin(22,mode=Mode.OUT) # Initialisiere LED2 an GPIO-Pin 27 led2 = Pin(27,mode=Mode.OUT)
Verarbeitung des Schalterzustands
Das Programm überprüft in einer Schleife den Zustand des Mikroschalters. Wenn er gedrückt wird, schaltet sich LED1 ein und LED2 aus. Wenn er losgelassen wird, schaltet sich LED1 aus und LED2 ein.
while True: if micro_switch.value() == 1: led1.on() led2.off() else: led1.off() led2.on() sleep(0.5)
Interrupt-Behandlung
Der
try-except-Block stellt sicher, dass das Skript sauber beendet wird, wenn es mit Ctrl+C unterbrochen wird.except KeyboardInterrupt: pass
Fehlerbehebung
LEDs reagieren nicht
Ursache: Falsche GPIO-Verdrahtung oder Pin-Konfiguration.
Lösung: Stellen Sie sicher, dass LED1 mit GPIO-Pin 22 und LED2 mit GPIO-Pin 27 verbunden ist und beide LEDs mit passenden Widerständen versehen sind. Überprüfen Sie außerdem die Verbindung des Mikroschalters zu GPIO-Pin 17.
Mikroschalter wird nicht erkannt
Ursache: Der Mikroschalter ist möglicherweise nicht korrekt konfiguriert oder benötigt einen Pull-up/Pull-down-Widerstand.
Lösung: Prüfen Sie, ob
pull = Pin.PULL_UPzu Ihrer Schalterkonfiguration passt. Falls der Schalter einen Pull-up benötigt, aktivieren Sie diesen in der Initialisierung.
LEDs flackern oder verhalten sich unregelmäßig
Ursache: Prellen des Schalters (Button Bounce).
Lösung: Fügen Sie eine softwarebasierte Entprellung hinzu, indem Sie nach dem Erkennen eines Tastendrucks eine kurze Verzögerung einfügen:
if micro_switch.value() == 1: sleep(0.05) # Entprell-Verzögerung
Erweiterungsideen
Anpassbare Verzögerung
Ermöglichen Sie dem Benutzer, die Verzögerung dynamisch zu ändern, um die Reaktionszeit der LEDs fein einzustellen:
delay = float(input("Enter delay in seconds: ")) while True: sleep(delay)
Akustisches Feedback
Fügen Sie einen Buzzer hinzu, der beim Drücken oder Loslassen des Schalters ein akustisches Signal erzeugt:
from fusion_hat import Buzzer buzzer = Buzzer(Pin(22)) if micro_switch.value() == 1: buzzer.on() else: buzzer.off()
Fazit
Dieses Projekt zeigt, wie ein Mikroschalter verwendet werden kann, um LEDs mit dem Fusion HAT+ zu steuern. Mikroschalter sind vielseitige Bauteile, die häufig in Sicherheitssystemen, Benutzeroberflächen und industriellen Steuerungen eingesetzt werden. Durch Experimente mit ihnen eröffnen sich viele Möglichkeiten für weiterführende Projekte.