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 Servomotor
Einleitung
In diesem Projekt lernen wir, wie man einen Servomotor rotieren lässt.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
IN DIESEM KIT ENTHALTENE TEILE |
LINK |
|---|---|---|
Raphael Kit |
337 |
Sie können sie auch separat über die unten stehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
|---|---|
Schaltplan
Experimentelle Verfahren
Schritt 1: Bauen Sie den Schaltkreis auf.
Schritt 2: Wechseln Sie in den Ordner des Codes.
cd ~/raphael-kit/python-pi5
Schritt 3: Führen Sie die ausführbare Datei aus.
sudo python3 1.3.2_Servo_zero.py
Nachdem das Programm ausgeführt wurde, wird der Servomotor von 0 Grad über 90 Grad zu 180 Grad rotieren und dann von 180 Grad über 90 Grad zurück zu 0 Grad, in einem Kreis.
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 unten stehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Aber zuvor müssen Sie zum Quellcodepfad wie raphael-kit/python-pi5 gehen. 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 Servo
from time import sleep
# Set the GPIO pin number where the servo motor is connected
myGPIO = 18
# Define a correction factor to fine-tune servo pulse width
myCorrection = 0.45
maxPW = (2.0 + myCorrection) / 1000 # Calculate maximum pulse width
minPW = (1.0 - myCorrection) / 1000 # Calculate minimum pulse width
# Initialize the Servo object with custom pulse widths
servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
try:
while True:
# Position the servo at the middle and wait
servo.mid()
print("mid") # Indicate current position
sleep(0.5) # Brief pause for 0.5 seconds
# Move the servo to its minimum position and wait
servo.min()
print("min") # Indicate current position
sleep(1) # Hold position for 1 second
# Return the servo to the middle position and wait
servo.mid()
print("mid") # Indicate current position
sleep(0.5) # Brief pause for 0.5 seconds
# Move the servo to its maximum position and wait
servo.max()
print("max") # Indicate current position
sleep(1) # Hold position for 1 second
except KeyboardInterrupt:
# Gracefully terminate the script on a keyboard interrupt (Ctrl+C)
pass
Code-Erklärung
Diese Importanweisungen holen die Klasse
Servofür die Servosteuerung und die Funktionsleepfür die Zeitsteuerung.#!/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.
# Set the GPIO pin number where the servo motor is connected myGPIO = 18
Diese Zeilen definieren einen Korrekturfaktor und verwenden ihn, um die maximale und minimale Impulsbreite für den Servo zu berechnen und damit seinen Bewegungsbereich fein abzustimmen.
# Define a correction factor to fine-tune servo pulse width myCorrection = 0.45 maxPW = (2.0 + myCorrection) / 1000 # Calculate maximum pulse width minPW = (1.0 - myCorrection) / 1000 # Calculate minimum pulse width
Initialisiert das Servo-Objekt mit der angegebenen GPIO-Pin-Nummer und benutzerdefinierten Impulsbreiten.
# Initialize the Servo object with custom pulse widths 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 an den Mittel-, Min- und Max-Punkten positioniert, mit jeder Position, die ausgedruckt und für eine bestimmte Dauer gehalten wird.
try: while True: # Position the servo at the middle and wait servo.mid() print("mid") # Indicate current position sleep(0.5) # Brief pause for 0.5 seconds # Move the servo to its minimum position and wait servo.min() print("min") # Indicate current position sleep(1) # Hold position for 1 second # Return the servo to the middle position and wait servo.mid() print("mid") # Indicate current position sleep(0.5) # Brief pause for 0.5 seconds # Move the servo to its maximum position and wait servo.max() print("max") # Indicate current position sleep(1) # Hold position for 1 second except KeyboardInterrupt: # Gracefully terminate the script on a keyboard interrupt (Ctrl+C) pass