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!
1.3.2 Servo
Einführung
In diesem Projekt lernen wir, wie man den Servomotor rotieren lässt.
Erforderliche Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Schaltplan
Versuchsdurchführung
Schritt 1: Bauen Sie die Schaltung.
Schritt 2: Gehen Sie in den Ordner mit dem Code.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Schritt 3: Führen Sie die ausführbare Datei aus.
sudo python3 1.3.2_Servo_zero.py
Nach Ausführung des Programms wird der Servomotor sich von 0 Grad auf 90 Grad bis 180 Grad drehen und dann von 180 Grad auf 90 Grad bis 0 Grad, in einem Kreis.
Warnung
Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte Wenn gpiozero nicht funktioniert.
Code
Bemerkung
Sie können den folgenden Code Ändern/Zurücksetzen/Kopieren/Ausführen/Stoppen. Bevor Sie das tun, müssen Sie jedoch zum Quellcodepfad wie davinci-kit-for-raspberry-pi/python-pi5 gehen. Nach der Änderung des Codes können Sie ihn direkt ausführen, um die Wirkung zu sehen.
#!/usr/bin/env python3
from gpiozero import Servo
from time import sleep
# Legen Sie die GPIO-Pin-Nummer fest, an die der Servomotor angeschlossen ist
myGPIO = 18
# Definieren Sie einen Korrekturfaktor, um die Pulsbreite des Servos feinzutunen
myCorrection = 0.45
maxPW = (2.0 + myCorrection) / 1000 # Berechnen Sie die maximale Pulsbreite
minPW = (1.0 - myCorrection) / 1000 # Berechnen Sie die minimale Pulsbreite
# Initialisieren Sie das Servo-Objekt mit benutzerdefinierten Pulsbreiten
servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
try:
while True:
# Positionieren Sie den Servo in der Mitte und warten Sie
servo.mid()
print("Mitte") # Aktuelle Position anzeigen
sleep(0.5) # Kurze Pause für 0,5 Sekunden
# Bewegen Sie den Servo in die Minimalposition und warten Sie
servo.min()
print("Minimal") # Aktuelle Position anzeigen
sleep(1) # Position für 1 Sekunde halten
# Bringen Sie den Servo in die Mitte zurück und warten Sie
servo.mid()
print("Mitte") # Aktuelle Position anzeigen
sleep(0.5) # Kurze Pause für 0,5 Sekunden
# Bewegen Sie den Servo in die Maximalposition und warten Sie
servo.max()
print("Maximal") # Aktuelle Position anzeigen
sleep(1) # Position für 1 Sekunde halten
except KeyboardInterrupt:
# Beenden Sie das Skript ordnungsgemäß bei einer Tastaturunterbrechung (Strg+C)
pass
Code Erklärung
Diese Import-Anweisungen bringen die
ServoKlasse für die Servosteuerung und die Funktionsleepfür die Zeitmessung.#!/usr/bin/env python3 from gpiozero import Servo from time import sleep
Legt die GPIO-Pin-Nummer 18 für den Anschluss des Servomotors fest.
# Legen Sie die GPIO-Pin-Nummer fest, an die der Servomotor angeschlossen ist myGPIO = 18
Diese Zeilen definieren einen Korrekturfaktor und verwenden ihn, um die maximale und minimale Pulsbreite für den Servo zu berechnen, um seinen Bewegungsbereich fein abzustimmen.
# Definieren Sie einen Korrekturfaktor, um die Pulsbreite des Servos feinzutunen myCorrection = 0.45 maxPW = (2.0 + myCorrection) / 1000 # Berechnen Sie die maximale Pulsbreite minPW = (1.0 - myCorrection) / 1000 # Berechnen Sie die minimale Pulsbreite
Initialisiert das Servo-Objekt mit dem angegebenen GPIO-Pin und benutzerdefinierten Pulsbreiten.
# Initialisieren Sie das Servo-Objekt mit benutzerdefinierten Pulsbreiten servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
Der try-Block enthält eine while True-Schleife, um den Servo kontinuierlich zu bewegen. Der Servo wird in den Positionen Mitte, Minimal und Maximal positioniert, wobei jede Position gedruckt und für eine bestimmte Dauer gehalten wird.
try: while True: # Positionieren Sie den Servo in der Mitte und warten Sie servo.mid() print("Mitte") # Aktuelle Position anzeigen sleep(0.5) # Kurze Pause für 0,5 Sekunden # Bewegen Sie den Servo in die Minimalposition und warten Sie servo.min() print("Minimal") # Aktuelle Position anzeigen sleep(1) # Position für 1 Sekunde halten # Bringen Sie den Servo in die Mitte zurück und warten Sie servo.mid() print("Mitte") # Aktuelle Position anzeigen sleep(0.5) # Kurze Pause für 0,5 Sekunden # Bewegen Sie den Servo in die Maximalposition und warten Sie servo.max() print("Maximal") # Aktuelle Position anzeigen sleep(1) # Position für 1 Sekunde halten except KeyboardInterrupt: # Beenden Sie das Skript ordnungsgemäß bei einer Tastaturunterbrechung (Strg+C) pass