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.
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.
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.
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
Diese Importanweisungen holen die Klasse
Motoraus der Bibliothekgpiozeround die Funktionsleepaus dem Modultime.#!/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.# 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.
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.
except KeyboardInterrupt: # Gracefully handle a keyboard interrupt (e.g., Ctrl+C) to stop the program pass