Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e 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 speciali.

  • Sconti esclusivi: Approfitta di sconti riservati sui nostri prodotti più recenti.

  • Promozioni festive e concorsi: Partecipa a concorsi e promozioni durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [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 grazie a un campo magnetico applicato.

../_images/2.2.4reed_switch.png

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.4component.png

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

Nome

ARTICOLI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’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/reed_schematic.png ../_images/reed_schematic2.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.4fritzing.png

Passo 2: Cambia directory.

cd ~/raphael-kit/python/

Passo 3: Esegui.

sudo python3 2.2.4_ReedSwitch.py

Quando il codice è in esecuzione, il LED verde si accenderà. Se un magnete viene avvicinato al modulo reed, il LED rosso si accenderà; allontanando il magnete, si accenderà di nuovo il LED verde.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Ma prima devi accedere al percorso del codice come raphael-kit/python. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time

ReedPin = 17
Gpin    = 27
Rpin    = 22

def setup():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(Gpin, GPIO.OUT)     # Imposta il pin LED verde in modalità output
    GPIO.setup(Rpin, GPIO.OUT)     # Imposta il pin LED rosso in modalità output
    GPIO.setup(ReedPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Imposta ReedPin in modalità input e lo tira su al livello alto (3,3V)
    GPIO.add_event_detect(ReedPin, GPIO.BOTH, callback=detect, bouncetime=200)

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
    if x == 1:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)

def detect(self):
    Led(GPIO.input(ReedPin))

def loop():
    while True:
        pass

def destroy():
    GPIO.output(Gpin, GPIO.HIGH)       # Accende il LED verde
    GPIO.output(Rpin, GPIO.LOW)       # Spegne il LED rosso
    GPIO.cleanup()                     # Libera le risorse

if __name__ == '__main__':     # Il programma parte da qui
    setup()
    detect()
    try:
        loop()
    except KeyboardInterrupt:  # Quando viene premuto 'Ctrl+C', il programma distrugge() sarà eseguito.
        destroy()

Spiegazione del Codice

ReedPin = 17
Gpin    = 27
Rpin    = 22

def setup():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(Gpin, GPIO.OUT)     # Imposta il pin LED verde in modalità output
    GPIO.setup(Rpin, GPIO.OUT)     # Imposta il pin LED rosso in modalità output
    GPIO.setup(ReedPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Imposta ReedPin in modalità input e lo tira su al livello alto (3,3V)
    GPIO.add_event_detect(ReedPin, GPIO.BOTH, callback=detect, bouncetime=200)

Imposta la numerazione dei GPIO in modalità BCM. ReedPin, Gpin e Rpin sono collegati rispettivamente ai GPIO17, GPIO27 e GPIO22.

GPIO.add_event_detect() viene utilizzato per aggiungere un evento che viene attivato da una variazione del valore (livello) di ReedPin, a quel punto viene chiamata la funzione di callback detect().

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
    if x == 1:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)

Definisci una funzione Led() per accendere o spegnere i due LED. Se x=0, si accende il LED rosso; altrimenti, si accenderà il LED verde.

def detect(self):
Led(GPIO.input(ReedPin))

In questa funzione di callback, il valore dell’interruttore reed viene utilizzato per controllare i 2 LED.

Immagine del Fenomeno

../_images/2.2.4reed_switch.JPG