Nota

¡Hola! Bienvenidos a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte de Expertos: Resuelve problemas post-venta 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 anuncios de nuevos 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.1.5 Interruptor de Inclinación

Introducción

Este es un interruptor de inclinación con una bola de metal en su interior. Se utiliza para detectar inclinaciones de un pequeño ángulo.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_2.1.3_tilt_switch.png

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

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Raphael Kit

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Interruptor de Inclinación

-

Diagrama Esquemático

../_images/image307.png ../_images/image308.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/image169.png

Paso 2: Cambiar de directorio.

cd ~/raphael-kit/c/2.1.5/

Paso 3: Compilar.

gcc 2.1.5_Tilt.c -lwiringPi

Paso 4: Ejecutar.

sudo ./a.out

Coloca el interruptor de inclinación verticalmente y el LED verde se encenderá. Si lo inclinas, se imprimirá «¡Inclinación!» en la pantalla y el LED rojo se encenderá. Vuelve a colocar el interruptor verticalmente y el LED verde se encenderá de nuevo.

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", por favor consulta Instalar y verificar WiringPi.

Código

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

#define TiltPin     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 message to screen
        printf("setup wiringPi failed !");
        return 1;
    }

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

    while(1){
        if(0 == digitalRead(TiltPin)){
            delay(10);
            if(0 == digitalRead(TiltPin)){
                LED("RED");
                printf("Tilt!\n");
            }
        }
        else if(1 == digitalRead(TiltPin)){
            delay(10);
            if(1 == digitalRead(TiltPin)){
                LED("GREEN");
            }
        }
    }
    return 0;
}

Explicación del Código

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");
}

Define una función LED() para encender o apagar los dos LEDs. Si el parámetro color es RED, el LED rojo se enciende; de manera similar, si el parámetro color es GREEN, el LED verde se encenderá.

while(1){
        if(0 == digitalRead(TiltPin)){
            delay(10);
            if(0 == digitalRead(TiltPin)){
                LED("RED");
                printf("Tilt!\n");
            }
        }
        else if(1 == digitalRead(TiltPin)){
            delay(10);
            if(1 == digitalRead(TiltPin)){
                LED("GREEN");
            }
        }
    }

Si el valor leído del interruptor de inclinación es 0, significa que el interruptor de inclinación está inclinado, luego escribes el parámetro «RED» en la función LED para que el LED rojo se encienda; de lo contrario, el LED verde se encenderá.

Imagen del Fenómeno

../_images/image170.jpeg