.. note:: 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 [|link_sf_facebook|] und treten Sie heute bei! .. _1.3.2_py_pi5: 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. .. image:: ../python_pi5/img/1.3.2_servo_list.png Schaltplan -------------------- .. image:: ../img/image337.png Versuchsdurchführung ----------------------- **Schritt 1:** Bauen Sie die Schaltung. .. image:: ../img/image125.png **Schritt 2**: Gehen Sie in den Ordner mit dem Code. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Schritt 3**: Führen Sie die ausführbare Datei aus. .. raw:: html .. code-block:: 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. .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` **Code** .. note:: 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. .. raw:: html .. code-block:: python #!/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 ``Servo`` Klasse für die Servosteuerung und die Funktion ``sleep`` für die Zeitmessung. .. code-block:: python #!/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. .. code-block:: python # 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. .. code-block:: python # 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. .. code-block:: python # 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. .. code-block:: python 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