Nota
¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
¿Por qué unirte?
Soporte experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances exclusivos: Accede anticipadamente a anuncios de nuevos productos y vistas previas.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones festivas y sorteos: Participa en sorteos y promociones navideñas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy.
2.1.3 Interruptor de inclinación
Introducción
Este es un interruptor de inclinación con una bola metálica en su interior. Se utiliza para detectar inclinaciones de un pequeño ángulo.
Componentes
Principio
Interruptor de inclinación
El principio es muy simple. Cuando el interruptor se inclina a un cierto ángulo, la bola en su interior rueda y toca los dos contactos conectados a los pines externos, activando así los circuitos. De lo contrario, la bola se mantendrá alejada de los contactos, interrumpiendo así los circuitos.
Diagrama Esquemático
Procedimientos Experimentales
Paso 1: Construir el circuito.
Paso 2: Cambiar de directorio.
cd ~/davinci-kit-for-raspberry-pi/c/2.1.3/
Paso 3: Compilar.
gcc 2.1.3_Tilt.c -lwiringPi
Paso 4: Ejecutar.
sudo ./a.out
Coloca el interruptor en posición horizontal, y el LED verde se encenderá. Si lo inclinas, se imprimirá «¡Inclinación!» en la pantalla y se encenderá el LED rojo. Colócalo nuevamente en posición horizontal, y el LED verde se encenderá de nuevo.
Nota
Si no funciona después de ejecutarlo, o si aparece un mensaje de error: "wiringPi.h: No such file or directory», consulta ¿El código en C no funciona?.
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)
{
// Cuando la inicialización falla, imprime un mensaje en pantalla
if(wiringPiSetup() == -1){
printf("setup wiringPi failed !");
return 1;
}
pinMode(TiltPin, INPUT);
LED("GREEN");
while(1){
// Indica que el botón ha sido presionado
if(0 == digitalRead(TiltPin)){
delay(10);
if(0 == digitalRead(TiltPin)){
LED("RED");
printf("Tilt!\n");
delay(100);
}
}
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");
}
Cuando el interruptor de inclinación está inclinado hacia la derecha, el pin del medio y el de la derecha están conectados; la Raspberry Pi lee un nivel alto en el pin del medio, por lo que el LED1 se enciende y el LED2 se apaga.
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");
}
}
}
Cuando el interruptor de inclinación está inclinado hacia la izquierda, el pin del medio y el de la izquierda están conectados; la Raspberry Pi lee un nivel bajo, por lo que el LED2 se enciende y el LED1 se apaga.