Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché Unirsi?
Supporto Tecnico Esperto: Risolvi i problemi post-vendita e affronta le sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni festive.
👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!
2.2.6 Modulo Sensore di Velocità
Introduzione
In questo progetto, impareremo ad usare il modulo sensore di velocità. Il sensore di velocità è un tipo di tachimetro utilizzato per misurare la velocità di un oggetto rotante come un motore.
Componenti Necessari
In questo progetto, abbiamo 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 PER L’ACQUISTO |
|---|---|
- |
Schema Elettrico
Procedure Sperimentali
Passo 1: Costruisci il circuito.
Passo 2: Cambia directory.
cd ~/raphael-kit/python-pi5
Passo 3: Esegui.
sudo python3 2.2.6_speed_sensor_module_zero.py
Dopo aver eseguito il codice, il LED verde si accenderà. Se posizioni un ostacolo nella fessura del modulo sensore di velocità, sullo schermo verrà stampato «luce bloccata» e il LED rosso si accenderà. Rimuovi l’ostacolo e il LED verde si riaccenderà.
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 al percorso sorgente 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 LED, Button
from signal import pause
# Inizializza i pin GPIO per il sensore di velocità e i LED utilizzando la libreria GPIO Zero
speed_sensor = Button(17, pull_up=False) # Sensore di velocità collegato al pin GPIO 17 senza pull-up
green_led = LED(27) # LED verde collegato al pin GPIO 27
red_led = LED(22) # LED rosso collegato al pin GPIO 22
def update_leds():
"""
Update the state of LEDs based on the speed sensor.
- If the sensor is pressed (triggered), the red LED is turned on and a message is printed.
- If the sensor is released (not triggered), the green LED is turned on.
"""
if speed_sensor.is_pressed:
green_led.off() # Spegni il LED verde
red_led.on() # Accendi il LED rosso
print('Light was blocked') # Stampa il messaggio che indica che il sensore è attivato
else:
green_led.on() # Accendi il LED verde
red_led.off() # Spegni il LED rosso
try:
# Loop principale per controllare continuamente lo stato del sensore
while True:
# Aggiorna i LED in base ai cambiamenti dello stato del sensore
speed_sensor.when_pressed = update_leds # Aggiorna i LED quando il sensore è premuto
speed_sensor.when_released = update_leds # Aggiorna i LED quando il sensore è rilasciato
except KeyboardInterrupt:
# Gestisce KeyboardInterrupt (Ctrl+C) per una terminazione pulita dello script
pass
Spiegazione del Codice
La libreria
gpiozeroviene importata per utilizzare le classiLEDeButtonper interagire con i pin GPIO. La libreriasignalviene importata per la funzionepause, utilizzata per mantenere in esecuzione lo script.#!/usr/bin/env python3 from gpiozero import LED, Button from signal import pause
Il sensore di velocità viene impostato come
Buttonsul pin GPIO 17. Il parametropull_up=Falseindica che non viene utilizzata la resistenza di pull-up interna.green_ledered_ledsono inizializzati come oggettiLEDcollegati rispettivamente ai pin GPIO 27 e 22.# Inizializza i pin GPIO per il sensore di velocità e i LED utilizzando la libreria GPIO Zero speed_sensor = Button(17, pull_up=False) # Sensore di velocità collegato al pin GPIO 17 senza pull-up green_led = LED(27) # LED verde collegato al pin GPIO 27 red_led = LED(22) # LED rosso collegato al pin GPIO 22
La funzione
update_ledscontrolla lo stato del sensore di velocità. Se il sensore è premuto (attivato), spegne il LED verde, accende il LED rosso e stampa un messaggio. Se il sensore è rilasciato, fa l’opposto.def update_leds(): """ Update the state of LEDs based on the speed sensor. - If the sensor is pressed (triggered), the red LED is turned on and a message is printed. - If the sensor is released (not triggered), the green LED is turned on. """ if speed_sensor.is_pressed: green_led.off() # Spegni il LED verde red_led.on() # Accendi il LED rosso print('Light was blocked') # Stampa il messaggio che indica che il sensore è attivato else: green_led.on() # Accendi il LED verde red_led.off() # Spegni il LED rosso
Il loop principale controlla continuamente lo stato del sensore di velocità. Gli attributi
when_pressedewhen_releasedsono gestori di eventi che chiamano la funzioneupdate_ledsquando lo stato del sensore cambia. Il blocco try-except gestisce KeyboardInterrupt per una chiusura pulita.try: # Loop principale per controllare continuamente lo stato del sensore while True: # Aggiorna i LED in base ai cambiamenti dello stato del sensore speed_sensor.when_pressed = update_leds # Aggiorna i LED quando il sensore è premuto speed_sensor.when_released = update_leds # Aggiorna i LED quando il sensore è rilasciato except KeyboardInterrupt: # Gestisce KeyboardInterrupt (Ctrl+C) per una terminazione pulita dello script pass