Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto tecnico esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.
Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni festive e giveaway: Partecipa a giveaway e promozioni durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!
1.3.1 Motore
Introduzione
In questo progetto, impareremo a utilizzare il L293D per guidare un motore DC e farlo ruotare in senso orario e antiorario. Poiché il motore DC richiede una corrente maggiore, per motivi di sicurezza utilizziamo il Modulo di Alimentazione per alimentare i motori.
Componenti Necessari
Per questo progetto, avremo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK D’ACQUISTO |
|---|---|
- |
|
- |
|
Schema Elettrico
Procedure Sperimentali
Passo 1: Costruisci il circuito.
Nota
Il modulo di alimentazione può essere collegato a una batteria da 9V utilizzando il connettore per batteria da 9V presente nel kit. Inserisci il cappuccio jumper del modulo di alimentazione nelle strisce bus da 5V della breadboard.
Passo 2: Accedi alla cartella del codice.
cd ~/raphael-kit/python-pi5
Passo 3: Esegui.
sudo python3 1.3.1_Motor_zero.py
Quando il codice viene eseguito, il motore ruota prima in senso orario per 5 secondi, poi si ferma per 5 secondi, successivamente ruota in senso antiorario per 5 secondi e poi si ferma di nuovo per 5 secondi. Questa serie di azioni verrà ripetuta continuamente.
Avvertimento
Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..
Code
Nota
Puoi Modificare/Resettare/Copiare/Eseguire/Fermare il codice qui sotto. Ma prima, devi andare nella directory del codice come raphael-kit/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.
#!/usr/bin/env python3
from gpiozero import Motor
from time import sleep
# Inizializza il motore con GPIO Zero, specificando i pin GPIO per avanti (17), indietro (27) e abilitazione (22)
motor = Motor(forward=17, backward=27, enable=22)
try:
# Funzione principale per controllare la direzione e il movimento del motore.
# Alterna la rotazione del motore tra senso orario e antiorario con pause intermedie.
actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Definisce le azioni del motore per chiarezza
while True:
# Ciclo attraverso le azioni definite per controllare la direzione del motore
for action in ['CW', 'STOP', 'CCW', 'STOP']:
actions[action]() # Esegui l'azione corrente (avanti, fermo, indietro, fermo)
print(f"{action}") # Visualizza l'azione corrente nella console
sleep(5) # Pausa di 5 secondi prima di passare alla prossima azione
except KeyboardInterrupt:
# Gestisce in modo sicuro l'interruzione da tastiera (es. Ctrl+C) per fermare il programma
pass
Spiegazione del Codice
Questi importano la classe
Motordalla libreriagpiozeroe la funzionesleepdal modulotime.#!/usr/bin/env python3 from gpiozero import Motor from time import sleep
Questa linea inizializza un oggetto
Motor, specificando i pin GPIO per avanti (17), indietro (27) e abilitazione (22).# Inizializza il motore con GPIO Zero, specificando i pin GPIO per avanti (17), indietro (27) e abilitazione (22) motor = Motor(forward=17, backward=27, enable=22)
Le azioni per il controllo del motore sono definite in un dizionario per chiarezza. Un ciclo infinito (while True) itera attraverso queste azioni, eseguendo ciascuna per 5 secondi.
try: # Funzione principale per controllare la direzione e il movimento del motore. # Alterna la rotazione del motore tra senso orario e antiorario con pause intermedie. actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Definisce le azioni del motore per chiarezza while True: # Ciclo attraverso le azioni definite per controllare la direzione del motore for action in ['CW', 'STOP', 'CCW', 'STOP']: actions[action]() # Esegui l'azione corrente (avanti, fermo, indietro, fermo) print(f"{action}") # Visualizza l'azione corrente nella console sleep(5) # Pausa di 5 secondi prima di passare alla prossima azione
Questo segmento consente al programma di essere terminato in sicurezza utilizzando un’interruzione da tastiera (Ctrl+C) senza causare errori.
except KeyboardInterrupt: # Gestisce in modo sicuro l'interruzione da tastiera (es. Ctrl+C) per fermare il programma pass