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.2.6 Geschwindigkeitssensormodul
Einführung
In diesem Projekt werden wir den Einsatz des Geschwindigkeitssensormoduls kennenlernen. Ein Geschwindigkeitssensormodul ist eine Art Tachometer, der zur Messung der Geschwindigkeit eines rotierenden Objekts wie eines Motors verwendet wird.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM SET |
LINK |
|---|---|---|
Raphael Kit |
337 |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
|---|---|
- |
Schaltplan
Experimentelle Verfahren
Schritt 1: Baue die Schaltung.
Schritt 2: Wechsle das Verzeichnis.
cd ~/raphael-kit/python-pi5
Schritt 3: Ausführen.
sudo python3 2.2.6_speed_sensor_module_zero.py
Nachdem der Code ausgeführt wurde, leuchtet die grüne LED. Wenn Sie ein Hindernis in die Lücke des Geschwindigkeitssensormoduls platzieren, wird „Light was blocked“ auf dem Bildschirm gedruckt und die rote LED leuchtet auf. Entfernen Sie das Hindernis und die grüne LED leuchtet wieder auf.
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 untenstehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Bevor Sie das tun, müssen Sie jedoch zum Quellcodepfad wie raphael-kit/python-pi5 wechseln. 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 LED, Button
from signal import pause
# Initialize GPIO pins for the speed sensor and LEDs using GPIO Zero library
speed_sensor = Button(17, pull_up=False) # Speed sensor connected to GPIO pin 17 without pull-up
green_led = LED(27) # Green LED connected to GPIO pin 27
red_led = LED(22) # Red LED connected to GPIO pin 22
def update_leds():
"""
Update the state of LEDs based on the speed sensor.
- If the sensor is pressed (triggered), the red LED is turned on and a message is printed.
- If the sensor is released (not triggered), the green LED is turned on.
"""
if speed_sensor.is_pressed:
green_led.off() # Turn off green LED
red_led.on() # Turn on red LED
print('Light was blocked') # Print message indicating sensor is triggered
else:
green_led.on() # Turn on green LED
red_led.off() # Turn off red LED
try:
# Main loop to continuously check sensor state
while True:
# Update LEDs based on sensor state changes
speed_sensor.when_pressed = update_leds # Update LEDs when sensor is pressed
speed_sensor.when_released = update_leds # Update LEDs when sensor is released
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) for a graceful script termination
pass
Code-Erklärung
Die
gpiozeroBibliothek wird importiert, um ihreLEDundButtonKlassen für die Interaktion mit den GPIO-Pins zu nutzen. DiesignalBibliothek wird für diepauseFunktion importiert, die verwendet wird, um das Skript am Laufen zu halten.#!/usr/bin/env python3 from gpiozero import LED, Button from signal import pause
speed_sensor wird als
Buttonan GPIO Pin 17 gesetzt. Der Parameterpull_up=Falsegibt an, dass der interne Pull-up-Widerstand nicht verwendet wird.green_ledundred_ledwerden alsLEDObjekte initialisiert, die mit den GPIO Pins 27 und 22 verbunden sind.# Initialize GPIO pins for the speed sensor and LEDs using GPIO Zero library speed_sensor = Button(17, pull_up=False) # Speed sensor connected to GPIO pin 17 without pull-up green_led = LED(27) # Green LED connected to GPIO pin 27 red_led = LED(22) # Red LED connected to GPIO pin 22
Die Funktion
update_ledsüberprüft den Zustand des Geschwindigkeitssensors. Wenn der Sensor ausgelöst wird (aktiviert), schaltet sie die grüne LED aus, die rote LED ein und gibt eine Nachricht aus. Wenn der Sensor freigegeben wird, macht sie das Gegenteil.def update_leds(): """ Update the state of LEDs based on the speed sensor. - If the sensor is pressed (triggered), the red LED is turned on and a message is printed. - If the sensor is released (not triggered), the green LED is turned on. """ if speed_sensor.is_pressed: green_led.off() # Turn off green LED red_led.on() # Turn on red LED print('Light was blocked') # Print message indicating sensor is triggered else: green_led.on() # Turn on green LED red_led.off() # Turn off red LED
Die Hauptschleife überprüft kontinuierlich den Zustand des Geschwindigkeitssensors. Die Attribute
when_pressedundwhen_releasedsind Ereignishandler, die die Funktionupdate_ledsaufrufen, wenn sich der Sensorzustand ändert. Der try-except-Block dient zur Behandlung eines KeyboardInterrupt für einen eleganten Ausstieg.try: # Main loop to continuously check sensor state while True: # Update LEDs based on sensor state changes speed_sensor.when_pressed = update_leds # Update LEDs when sensor is pressed speed_sensor.when_released = update_leds # Update LEDs when sensor is released except KeyboardInterrupt: # Handle KeyboardInterrupt (Ctrl+C) for a graceful script termination pass