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.

../_images/2.2.4reed_switch.png

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/2.2.4component.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Módulo de Interruptor Reed

COMPRAR

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

../_images/reed_schematic.png ../_images/reed_schematic2.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/2.2.4fritzing.png

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.

Imagen del Fenómeno

../_images/2.2.4reed_switch.JPG