Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie mit anderen Enthusiasten tiefer in die Welt von 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 exklusiven Einblicken.

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

  • Festliche Aktionen und Verlosungen: Nehmen Sie an Gewinnspielen und saisonalen Aktionen teil.

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

Hindernisvermeidung

In diesem Projekt verwendet der PiCrawler ein Ultraschallmodul, um Hindernisse vor ihm zu erkennen. Wenn der PiCrawler ein Hindernis erkennt, sendet er ein Signal und sucht nach einer anderen Richtung, um weiterzugehen.

../_images/avoid1.png

Code ausführen

cd ~/picrawler/examples
sudo python3 avoid.py

Nach dem Start des Codes wird der PiCrawler vorwärts gehen. Wenn er feststellt, dass der Abstand zum Hindernis weniger als 10 cm beträgt, stoppt er, gibt einen Warnton aus, dreht sich nach links und hält an. Wenn in der neuen Richtung kein Hindernis ist oder der Abstand größer als 10 cm ist, bewegt er sich weiter vorwärts.

Code

Bemerkung

Sie können den unten stehenden Code bearbeiten/zurücksetzen/kopieren/ausführen/stoppen. Gehen Sie dazu zunächst in das Verzeichnis des Quellcodes, z. B. picrawler\examples. Nach der Bearbeitung können Sie den Code direkt ausführen, um den Effekt zu sehen.

from picrawler import Picrawler
from robot_hat import TTS, Music
from robot_hat import Ultrasonic
from robot_hat import Pin
import time

tts = TTS()
music = Music()

crawler = Picrawler()
sonar = Ultrasonic(Pin("D2") ,Pin("D3"))
music.music_set_volume(100)

alert_distance = 15
speed = 80

def main():
    distance = sonar.read()
    print(distance)
    if distance < 0:
        pass
    elif distance <= alert_distance:
        try:
            music.sound_play_threading('./sounds/sign.wav', volume=100)
        except Exception as e:
            print(e)
        crawler.do_action('turn left angle',3,speed)
        time.sleep(0.2)
    else :
        crawler.do_action('forward', 1,speed)
        time.sleep(0.2)

if __name__ == "__main__":
    while True:
        main()

Funktionsweise

Sie können den Abstand ermitteln, indem Sie die Klasse Ultrasonic importieren.

from robot_hat import Ultrasonic

Dann initialisieren Sie die Ultraschall-Pins.

sonar = Ultrasonic(Pin("D2") ,Pin("D3"))

Hier ist das Hauptprogramm.

  • Lesen Sie die vom Ultraschallmodul erkannten Abstände und filtern Sie Werte kleiner als 0 heraus (wenn das Ultraschallmodul zu weit vom Hindernis entfernt ist oder die Daten nicht korrekt gelesen werden können, erscheint distance < 0).

  • Wenn der Abstand kleiner oder gleich dem alert_distance (dem zuvor festgelegten Schwellenwert, der 10 beträgt) ist, wird der Soundeffekt sign.wav abgespielt. Der PiCrawler führt turn left angle aus.

  • Wenn der Abstand größer als alert_distance ist, bewegt sich der PiCrawler vorwärts.

distance = sonar.read()
print(distance)
if distance < 0:
    pass
elif distance <= alert_distance:
    try:
        music.sound_play_threading('./sounds/sign.wav', volume=100)
    except Exception as e:
        print(e)
    crawler.do_action('turn left angle',3,speed)
    time.sleep(0.2)
else :
    crawler.do_action('forward', 1,speed)
    time.sleep(0.2)

Bemerkung

Sie können verschiedene Soundeffekte oder Musikdateien im Ordner musics oder sounds über Filezilla-Software hinzufügen.