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.

../_images/2.2.4_reed_switch_list.png

È decisamente comodo acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Modulo Interruttore Reed

ACQUISTA

Schema Elettrico

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO27

Pin 13

2

27

GPIO22

Pin 15

3

22

../_images/2.2.4_reed_switch_schematic_1.png ../_images/2.2.4_reed_switch_schematic_2.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.4_reed_switch_circuit.png

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

  1. Questa linea specifica che lo script deve essere eseguito utilizzando Python 3. Importa LED e Button (utilizzati per l’interruttore reed) dalla libreria gpiozero.

    #!/usr/bin/env python3
    from gpiozero import LED, Button
    
  2. 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
    
  3. 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
    
  4. Imposta lo stato iniziale del LED verde su acceso. Il ciclo principale assegna la funzione update_leds come callback per gli eventi when_pressed e when_released dell’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