Nota

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

Perché unirti a noi?

  • Supporto Esperto: Risolvi problemi post-vendita e 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 ai nuovi annunci di prodotti e anteprime.

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

  • Promozioni Festive e Giveaway: Partecipa a concorsi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti subito!

2.2.4 Modulo Interruttore Reed

Introduzione

In questo progetto, impareremo a conoscere l’interruttore Reed, che è un interruttore elettrico che funziona tramite l’applicazione di un campo magnetico.

../_images/2.2.4reed_switch.png

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.4component.png

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

Nome

COMPONENTI IN QUESTO KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link seguenti.

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/c/2.2.4/

Passo 3: Compila.

gcc 2.2.4_ReedSwitch.c -lwiringPi

Passo 4: Esegui.

sudo ./a.out

Il LED verde si accenderà quando il codice viene eseguito. Se viene avvicinato un magnete al modulo interruttore Reed, si accende il LED rosso; togli il magnete e il LED verde si accende di nuovo.

Nota

Se non funziona dopo l’esecuzione o appare un errore come: "wiringPi.h: No such file or directory", fai riferimento a Installa e Controlla wiringPi.

Codice

#include <wiringPi.h>
#include <stdio.h>

#define ReedPin             0
#define Gpin                2
#define Rpin                3

void LED(char* color)
{
    pinMode(Gpin, OUTPUT);
    pinMode(Rpin, OUTPUT);
    if (color == "RED")
    {
        digitalWrite(Rpin, HIGH);
        digitalWrite(Gpin, LOW);
    }
    else if (color == "GREEN")
    {
        digitalWrite(Rpin, LOW);
        digitalWrite(Gpin, HIGH);
    }
    else
        printf("LED Error");
}

int main(void)
{
    if(wiringPiSetup() == -1){ //quando l'inizializzazione wiring fallisce, stampa messaggio a schermo
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(ReedPin, INPUT);
    LED("GREEN");

    while(1){
        if(0 == digitalRead(ReedPin)){
            delay(10);
            if(0 == digitalRead(ReedPin)){
                LED("RED");
                printf("Detected Magnetic Material!\n");
            }
        }
        else if(1 == digitalRead(ReedPin)){
            delay(10);
            if(1 == digitalRead(ReedPin)){
                while(!digitalRead(ReedPin));
                LED("GREEN");
            }
        }
    }
    return 0;
}

Spiegazione del Codice

#define ReedPin             0
#define Gpin                2
#define Rpin                3

I pin GPIO17, GPIO27 e GPIO22 della T_Extension Board corrispondono rispettivamente ai pin GPIO0, GPIO2 e GPIO3 in wiringPi. Assegna GPIO0, GPIO2 e GPIO3 a ReedPin, Gpin e Rpin.

void LED(char* color)
{
    pinMode(Gpin, OUTPUT);
    pinMode(Rpin, OUTPUT);
    if (color == "RED")
    {
        digitalWrite(Rpin, HIGH);
        digitalWrite(Gpin, LOW);
    }
    else if (color == "GREEN")
    {
        digitalWrite(Rpin, LOW);
        digitalWrite(Gpin, HIGH);
    }
    else
        printf("LED Error");
}

Imposta una funzione LED() per controllare i 2 LED, il parametro di questa funzione è color.

Quando color è "RED", imposta Rpin su HIGH (accende il LED rosso) e Gpin su LOW (spegne il LED verde); quando color è "GREEN", accendi il LED verde e spegni quello rosso.

while(1){
        if(0 == digitalRead(ReedPin)){
            delay(10);
            if(0 == digitalRead(ReedPin)){
                LED("RED");
                printf("Detected Magnetic Material!\n");
            }
        }
        else if(1 == digitalRead(ReedPin)){
            delay(10);
            if(1 == digitalRead(ReedPin)){
                while(!digitalRead(ReedPin));
                LED("GREEN");
            }
        }
    }

Leggi il valore del modulo interruttore Reed; se il valore letto due volte è 0, chiama LED("RED") per accendere il LED rosso e stampa "Rilevato materiale magnetico!".

Se il valore è 1, il LED verde si accende.

Immagine del Fenomeno

../_images/2.2.4reed_switch.JPG