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.
Componenti Necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI IN QUESTO KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link seguenti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’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/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.