Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 con altri appassionati.
Perché Unirti?
Supporto Tecnico Esperto: Risolvi i problemi post-vendita e le 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 alle novità sui 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 festive.
👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!
2.2.4 Modulo Interruttore Reed
Introduzione
In questo progetto, impareremo a conoscere l’interruttore reed, che è un interruttore elettrico che funziona mediante un campo magnetico applicato.
Componenti Necessari
Per questo progetto, avremo bisogno dei seguenti componenti.
È decisamente comodo 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
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO27 |
Pin 13 |
2 |
27 |
GPIO22 |
Pin 15 |
3 |
22 |
Procedure Sperimentali
Passo 1: Costruisci il circuito.
Passo 2: Cambia directory.
cd ~/raphael-kit/python-pi5
Passo 3: Esegui.
sudo python3 2.2.4_ReedSwitch_zero.py
Quando il codice viene eseguito, il LED verde si accenderà. Se un magnete viene posto vicino al modulo interruttore reed, il LED rosso si accenderà; allontanando il magnete, 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
# Inizializza l'interruttore reed e i LED utilizzando GPIO Zero
reed_switch = Button(17, pull_up=True) # Interruttore reed su GPIO 17, utilizzando una resistenza di pull-up interna
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 the LEDs based on the reed switch.
Turns the red LED on and green LED off when the reed switch is pressed, and vice versa.
"""
if reed_switch.is_pressed:
green_led.off() # Spegne il LED verde
red_led.on() # Accende il LED rosso
else:
green_led.on() # Accende il LED verde
red_led.off() # Spegne il LED rosso
try:
green_led.on() # Accende il LED verde all'inizio
while True:
# Imposta le funzioni di callback per i cambiamenti di stato dell'interruttore reed
reed_switch.when_pressed = update_leds # Callback quando l'interruttore viene attivato
reed_switch.when_released = update_leds # Callback quando l'interruttore viene disattivato
except KeyboardInterrupt:
# Pulisce le risorse e esce con Ctrl+C
green_led.off()
red_led.off()
pass
Spiegazione del Codice
Questa linea specifica che lo script deve essere eseguito utilizzando Python 3. Importa
LEDeButton(utilizzati per l’interruttore reed) dalla libreria gpiozero.#!/usr/bin/env python3 from gpiozero import LED, Button
Inizializza l’interruttore reed sul pin GPIO 17 con una resistenza di pull-up interna. Inizializza anche due LED collegati ai pin GPIO 27 e 22.
# Inizializza l'interruttore reed e i LED utilizzando GPIO Zero reed_switch = Button(17, pull_up=True) # Interruttore reed su GPIO 17, utilizzando una resistenza di pull-up interna green_led = LED(27) # LED verde collegato al pin GPIO 27 red_led = LED(22) # LED rosso collegato al pin GPIO 22
Definisce la funzione
update_leds, che aggiorna lo stato dei LED in base allo stato dell’interruttore reed. Il LED rosso si accende e il LED verde si spegne quando l’interruttore viene attivato, e il contrario quando viene rilasciato.def update_leds(): if reed_switch.is_pressed: green_led.off() # Spegne il LED verde red_led.on() # Accende il LED rosso else: green_led.on() # Accende il LED verde red_led.off() # Spegne il LED rosso
Imposta lo stato iniziale del LED verde su acceso. Il ciclo principale assegna la funzione
update_ledscome callback per gli eventiwhen_pressedewhen_releaseddell’interruttore reed. Include la gestione delle eccezioni per KeyboardInterrupt per pulire e uscire dal programma in modo ordinato.try: green_led.on() # Accende il LED verde all'inizio while True: # Imposta le funzioni di callback per i cambiamenti di stato dell'interruttore reed reed_switch.when_pressed = update_leds # Callback quando l'interruttore viene attivato reed_switch.when_released = update_leds # Callback quando l'interruttore viene disattivato except KeyboardInterrupt: # Pulisce le risorse e esce con Ctrl+C green_led.off() red_led.off() pass