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.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.

../_images/1.3.1_motor_list.png

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

IN DIESEM KIT ENTHALTENE TEILE

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch separat über die unten stehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Stromversorgungsmodul

-

L293D

-

Gleichstrommotor

KAUFEN

Schaltplan

../_images/1.3.1_motor_schematic.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/1.3.1_motor_circuit.png

Bemerkung

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.

../_images/1.3.1_motor_battery.jpeg

Schritt 2: Wechseln Sie in den Ordner des Codes.

cd ~/raphael-kit/python-pi5

Schritt 3: Ausführen.

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.

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 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

  1. Diese Importanweisungen holen die Klasse Motor aus der Bibliothek gpiozero und die Funktion sleep aus dem Modul time.

    #!/usr/bin/env python3
    from gpiozero import Motor
    from time import sleep
    
  2. 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.

    # 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)
    
  3. 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.

    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
    
  4. Dieser Abschnitt ermöglicht es, das Programm sicher mit einem Tastaturinterrupt (Strg+C) zu beenden, ohne Fehler zu verursachen.

    except KeyboardInterrupt:
    # Gracefully handle a keyboard interrupt (e.g., Ctrl+C) to stop the program
    pass