.. 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.1_py_pi5:
1.3.1 Motor
=============
Einführung
-----------------
In diesem Projekt werden wir lernen, wie man einen Gleichstrommotor mit einem L293D antreibt
und ihn im Uhrzeigersinn und gegen den Uhrzeigersinn drehen lässt. Da der Gleichstrommotor
einen größeren Strom benötigt, verwenden wir aus Sicherheitsgründen das Power Supply
Modul, um die Motoren zu versorgen.
Benötigte Komponenten
------------------------------
Für dieses Projekt benötigen wir die folgenden Komponenten.
.. image:: ../python_pi5/img/1.3.1_motor_list.png
Schaltplan
------------------
.. image:: ../python_pi5/img/1.3.1_motor_schematic.png
Experimentelle Verfahren
---------------------------
**Schritt 1:** Bauen Sie den Schaltkreis auf.
.. image:: ../python_pi5/img/1.3.1_motor_circuit.png
.. note::
Das Power-Modul kann eine 9V-Batterie mit dem 9V-Batterie
Schnalle im Kit anwenden. Stecken Sie die Jumperkappe des Power-Moduls in die 5V
Busleisten des Steckbretts.
.. image:: ../python_pi5/img/1.3.1_motor_battery.jpeg
**Schritt 2:** Wechseln Sie in den Ordner des Codes.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/python-pi5
**Schritt 3:** Ausführen.
.. raw:: html
.. code-block::
sudo python3 1.3.1_Motor_zero.py
Wenn der Code ausgeführt wird, dreht sich der Motor zuerst 5 Sekunden lang im Uhrzeigersinn, dann stoppt er für 5 Sekunden,
danach dreht er sich 5 Sekunden lang gegen den Uhrzeigersinn; anschließend stoppt der Motor
für 5 Sekunden. Diese Serie von Aktionen wird wiederholt ausgeführt.
.. 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 unten stehenden Code **Modifizieren/Zurücksetzen/Kopieren/Ausführen/Stoppen**. Aber bevor Sie das tun, müssen Sie zum Quellcode-Pfad wie ``davinci-kit-for-raspberry-pi/python-pi5`` gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Auswirkungen zu sehen.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import Motor
from time import sleep
# Initialisieren Sie den Motor mit GPIO Zero, indem Sie GPIO-Pins für Vorwärts (17), Rückwärts (27) und Enable (22) Kontrolle angeben
motor = Motor(forward=17, backward=27, enable=22)
try:
# Hauptfunktion zur Steuerung der Richtung und Bewegung des Motors.
# Wechselt die Drehrichtung des Motors zwischen im Uhrzeigersinn und gegen den Uhrzeigersinn mit Stopps dazwischen.
actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Motoraktionen für Lesbarkeit definieren
while True:
# Durch die definierten Aktionen zyklen, um die Motordrehrichtung zu steuern
for action in ['CW', 'STOP', 'CCW', 'STOP']:
actions[action]() # Führen Sie die aktuelle Aktion aus (vorwärts, stoppen, rückwärts, stoppen)
print(f"{action}") # Zeigen Sie die aktuelle Aktion in der Konsole an
sleep(5) # Pause für 5 Sekunden, bevor Sie zur nächsten Aktion übergehen
except KeyboardInterrupt:
# Tastaturunterbrechung (z. B. Ctrl+C) sauber behandeln
pass
**Code-Erklärung**
#. Diese Importanweisungen holen die Klasse ``Motor`` aus der Bibliothek ``gpiozero`` und die Funktion ``sleep`` aus dem Modul ``time``.
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import Motor
from time import sleep
#. Diese Zeile initialisiert ein ``Motor``-Objekt und gibt die GPIO-Pins für Vorwärts (17), Rückwärts (27) und Enable (22) Kontrolle an.
.. code-block:: python
# Initialisieren Sie den Motor mit GPIO Zero, indem Sie GPIO-Pins für Vorwärts (17), Rückwärts (27) und Enable (22) Kontrolle angeben
motor = Motor(forward=17, backward=27, enable=22)
#. Die Aktionen zur Motorsteuerung sind in einem Wörterbuch für die Lesbarkeit definiert. Eine unendliche Schleife (`while True`) iteriert durch diese Aktionen und führt jede für 5 Sekunden aus.
.. code-block:: python
try:
# Hauptfunktion zur Steuerung der Richtung und Bewegung des Motors.
# Wechselt die Drehrichtung des Motors zwischen im Uhrzeigersinn und gegen den Uhrzeigersinn mit Stopps dazwischen.
actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Motoraktionen für Lesbarkeit definieren
while True:
# Durch die definierten Aktionen zyklen, um die Motordrehrichtung zu steuern
for action in ['CW', 'STOP', 'CCW', 'STOP']:
actions[action]() # Führen Sie die aktuelle Aktion aus (vorwärts, stoppen, rückwärts, stoppen)
print(f"{action}") # Zeigen Sie die aktuelle Aktion in der Konsole an
sleep(5) # Pause für 5 Sekunden, bevor Sie zur nächsten Aktion übergehen
#. Dieser Abschnitt ermöglicht es, das Programm sicher mit einer Tastaturunterbrechung (Ctrl+C) zu beenden, ohne Fehler zu verursachen.
.. code-block:: python
except KeyboardInterrupt:
# Tastaturunterbrechung (z. B. Ctrl+C) sauber behandeln
pass