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 [here] und treten Sie heute bei!
5. Alle Aktionen stoppen
Nach den vorherigen Kapiteln können Sie feststellen, dass die Servo-Steuerung von PiDog in drei Threads unterteilt ist. Dies ermöglicht es PiDog, Kopf und Körper gleichzeitig zu bewegen, sogar mit zwei Codezeilen.
Hier sind einige Funktionen, die mit den drei Servo-Threads arbeiten:
Pidog.wait_all_done()
Warten, bis alle Aktionen in den Puffern für Beinaktionen, Kopf und Schwanz ausgeführt wurden
Pidog.body_stop()
Stoppen Sie alle Aktionen von Beinen, Kopf und Schwanz
Pidog.stop_and_lie()
Stoppen Sie alle Aktionen von Beinen, Kopf und Schwanz und setzen Sie dann auf die „Liegen“-Pose zurück
Pidog.close()
Stoppen Sie alle Aktionen, setzen Sie auf die „Liegen“-Pose zurück und schließen Sie alle Threads, normalerweise beim Beenden eines Programms verwendet
Hier sind einige häufige Anwendungen:
from pidog import Pidog
import time
my_dog = Pidog()
try:
# Vorbereitung Liegestütz
my_dog.legs_move([[45, 35, -45, -35, 80, 70, -80, -70]], speed=30)
my_dog.head_move([[0, 0, 0]], pitch_comp=-10, speed=80)
my_dog.wait_all_done() # warten, bis alle Aktionen ausgeführt sind
time.sleep(0.5)
# Liegestütz
leg_pushup_action = [
[90, -30, -90, 30, 80, 70, -80, -70],
[45, 35, -45, -35, 80, 70, -80, -70],
]
head_pushup_action = [
[0, 0, -30],
[0, 0, 20],
]
# Puffer mit Aktionen füllen
for _ in range(50):
my_dog.legs_move(leg_pushup_action, immediately=False, speed=50)
my_dog.head_move(head_pushup_action, pitch_comp=-10, immediately=False, speed=50)
# Pufferlänge anzeigen
print(f"Länge des Beinpuffers (Start): {len(my_dog.legs_action_buffer)}")
# 5 Sekunden halten & Pufferlänge anzeigen
time.sleep(5)
print(f"Länge des Beinpuffers (5s): {len(my_dog.legs_action_buffer)}")
# Aktion stoppen & Pufferlänge anzeigen
my_dog.stop_and_lie()
print(f"Länge des Beinpuffers (Stopp): {len(my_dog.legs_action_buffer)}")
except KeyboardInterrupt:
pass
except Exception as e:
print(f"\033[31mFEHLER: {e}\033[m")
finally:
print("Schließe ...")
my_dog.close() # alle Servo-Threads schließen