.. 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 ======================== Einleitung ------------------- In diesem Projekt lernen wir, wie man mit einem L293D einen Gleichstrommotor antreibt und ihn im Uhrzeigersinn sowie gegen den Uhrzeigersinn drehen lässt. Da der Gleichstrommotor einen höheren Strom benötigt, verwenden wir aus Sicherheitsgründen hier das Stromversorgungsmodul, um den Motor mit Strom 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 Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - IN DIESEM KIT ENTHALTENE TEILE - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können sie auch separat über die unten stehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENVORSTELLUNG - KAUF-LINK * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_power_module` - \- * - :ref:`cpn_l293d` - \- * - :ref:`cpn_motor` - |link_motor_buy| 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 Stromversorgungsmodul kann mit dem 9V-Batterieclip im Kit eine 9V-Batterie verwenden. Stecken Sie die Jumperkappe des Stromversorgungsmoduls in die 5V-Stromschienen des Breadboards. .. image:: ../python_pi5/img/1.3.1_motor_battery.jpeg **Schritt 2**: Wechseln Sie in den Ordner des Codes. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Schritt 3**: Ausführen. .. raw:: html .. code-block:: sudo python3 1.3.1_Motor_zero.py Während der Code ausgeführt wird, dreht sich der Motor zunächst 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 wieder für 5 Sekunden. Diese Reihe 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 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. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import Motor from time import sleep # Initialize the Motor with GPIO Zero, specifying GPIO pins for forward (17), backward (27), and enable (22) control motor = Motor(forward=17, backward=27, enable=22) try: # Main function to control the motor's direction and movement. # Alternates motor rotation between clockwise and counterclockwise with stops in between. actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Define motor actions for readability while True: # Loop through the defined actions to control motor direction for action in ['CW', 'STOP', 'CCW', 'STOP']: actions[action]() # Execute the current action (forward, stop, backward, stop) print(f"{action}") # Display the current action in the console sleep(5) # Pause for 5 seconds before proceeding to the next action except KeyboardInterrupt: # Gracefully handle a keyboard interrupt (e.g., Ctrl+C) to stop the program 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, wobei die GPIO-Pins für Vorwärts (17), Rückwärts (27) und Enable (22) Steuerung angegeben werden. .. code-block:: python # Initialize the Motor with GPIO Zero, specifying GPIO pins for forward (17), backward (27), and enable (22) control motor = Motor(forward=17, backward=27, enable=22) #. Die Aktionen für die Motorsteuerung sind in einem Wörterbuch für bessere Lesbarkeit definiert. Eine Endlosschleife (`while True`) iteriert durch diese Aktionen und führt jede für 5 Sekunden aus. .. code-block:: python try: # Main function to control the motor's direction and movement. # Alternates motor rotation between clockwise and counterclockwise with stops in between. actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Define motor actions for readability while True: # Loop through the defined actions to control motor direction for action in ['CW', 'STOP', 'CCW', 'STOP']: actions[action]() # Execute the current action (forward, stop, backward, stop) print(f"{action}") # Display the current action in the console sleep(5) # Pause for 5 seconds before proceeding to the next action #. Dieser Abschnitt ermöglicht es, das Programm sicher mit einem Tastaturinterrupt (Strg+C) zu beenden, ohne Fehler zu verursachen. .. code-block:: python except KeyboardInterrupt: # Gracefully handle a keyboard interrupt (e.g., Ctrl+C) to stop the program pass