Nota
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirse?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Vistas exclusivas: Obtén acceso temprano a nuevos anuncios de productos y adelantos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? ¡Haz clic en [Aquí] y únete hoy mismo!
2.2.4 Módulo de Interruptor de Lengüeta
Introducción
En este proyecto, aprenderemos sobre el interruptor de lengüeta, que es un interruptor eléctrico que opera mediante un campo magnético aplicado.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ELEMENTOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los siguientes enlaces.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
Diagrama Esquemático
Nombre de la T-Board |
Pin físico |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO27 |
Pin 13 |
2 |
27 |
GPIO22 |
Pin 15 |
3 |
22 |
Procedimientos Experimentales
Paso 1: Construir el circuito.
Paso 2: Cambiar de directorio.
cd ~/raphael-kit/c/2.2.4/
Paso 3: Compilar.
gcc 2.2.4_ReedSwitch.c -lwiringPi
Paso 4: Ejecutar.
sudo ./a.out
El LED verde se encenderá cuando el código se ejecute. Si se coloca un imán cerca del módulo de interruptor de lengüeta, el LED rojo se enciende; al retirar el imán, el LED verde se enciende nuevamente.
Nota
Si no funciona después de ejecutar el código, o aparece un mensaje de error: "wiringPi.h: No such file or directory", consulte Instalar y verificar WiringPi.
Código
#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){ //when initialize wiring failed,print messageto screen
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;
}
Explicación del Código
#define ReedPin 0
#define Gpin 2
#define Rpin 3
Los pines GPIO17, GPIO27 y GPIO22 de la T_Extension Board corresponden a los GPIO0,
GPIO2 y GPIO3 en wiringPi. Asigna GPIO0, GPIO2 y GPIO3 a ReedPin, Gpin y 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");
}
Establece una función LED() para controlar los 2 LEDs, el parámetro de esta función es color.
Cuando color es "RED", establece Rpin en HIGH (enciende el LED rojo) y Gpin en LOW (apaga el LED verde); cuando color es "GREEN", enciende el LED verde y apaga el LED rojo.
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");
}
}
}
Lee el valor del módulo de interruptor de lengüeta, si el valor leído 2 veces es 0, llama a LED("RED") para encender el LED rojo y muestra el mensaje "Magnetic material detected!".
Si el valor es 1, se enciende el LED verde.