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.5 IR-Hindernisvermeidungssensor
Einführung
In diesem Projekt werden wir den IR-Hindernisvermeidungssensor kennenlernen, ein Sensormodul, das zur Erkennung von Hindernissen auf kurze Distanzen verwendet werden kann. Es zeichnet sich durch geringe Störungen, einfache Montage und Benutzerfreundlichkeit aus und findet breite Anwendung in der Roboter-Hindernisvermeidung, Hindernisvermeidungswagen, Montagelinienzählung usw.
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.5_IrObstacle_zero.py
Nachdem der Code ausgeführt wurde, leuchtet die Ausgangsanzeige auf dem Modul auf, und „Detected Barrier!“ wird wiederholt auf dem Bildschirm gedruckt, solange Ihre Hand vor dem Sensor des Moduls ist.
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 Button
import time
# Initialize the obstacle sensor connected to GPIO pin 17
# The sensor is configured with a pull-up resistor
obstacle_sensor = Button(17, pull_up=True)
try:
# Continuously monitor for obstacles
while True:
if obstacle_sensor.is_pressed: # Check if the sensor is triggered
print("Detected Barrier!") # Print a message when an obstacle is detected
time.sleep(1) # Delay for 1 second to avoid repetitive messages
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) for a clean and safe exit
pass
Code-Erklärung
Diese Zeile legt fest, dass das Skript mit Python 3 ausgeführt wird. Sie importiert die Klasse
Buttonvon gpiozero (verwendet für den Hindernissensor) und das Modultimefür Verzögerungen.#!/usr/bin/env python3 from gpiozero import Button import time
Initialisiert einen Hindernissensor, verbunden mit GPIO Pin 17 mit einem internen Pull-up-Widerstand.
# Initialize the obstacle sensor connected to GPIO pin 17 # The sensor is configured with a pull-up resistor obstacle_sensor = Button(17, pull_up=True)
In einer fortlaufenden Schleife überprüft das Programm, ob der Hindernissensor aktiviert ist (
is_pressed). Wenn ein Hindernis erkannt wird, druckt es „Detected Barrier!“ und wartet dann eine Sekunde (um wiederholte Nachrichten zu vermeiden). Dietry-except-Struktur wird verwendet, um eine KeyboardInterrupt für einen sauberen Ausstieg zu behandeln.try: # Continuously monitor for obstacles while True: if obstacle_sensor.is_pressed: # Check if the sensor is triggered print("Detected Barrier!") # Print a message when an obstacle is detected time.sleep(1) # Delay for 1 second to avoid repetitive messages except KeyboardInterrupt: # Handle KeyboardInterrupt (Ctrl+C) for a clean and safe exit pass