Nota
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi & Arduino & 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 previas exclusivas: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.
2.2.5 Módulo de Evitación de Obstáculos IR
Introducción
En este proyecto, aprenderemos sobre el módulo de evitación de obstáculos IR, que es un módulo sensor que se puede usar para detectar obstáculos a cortas distancias, con poca interferencia, fácil de ensamblar, fácil de usar, etc. Se puede usar ampliamente en robots de evitación de obstáculos, carritos de evitación de obstáculos, conteo en líneas de ensamblaje, etc.
Componentes Necesarios
En este proyecto, necesitaremos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN AL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
Diagrama Esquemático
Procedimientos Experimentales
Paso 1: Construir el circuito.
Paso 2: Cambiar directorio.
cd ~/raphael-kit/c/2.2.5/
Paso 3: Compilar.
gcc 2.2.5_IrObstacle.c -lwiringPi
Paso 4: Ejecutar.
sudo ./a.out
Después de ejecutar el código, cuando pongas tu mano frente a la sonda del módulo, el indicador de salida en el módulo se encenderá y «Detected Barrier!» se imprimirá repetidamente en la pantalla.
Nota
Si no funciona después de ejecutarlo, o hay 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 ObstaclePin 0
void myISR(void)
{
printf("Detected Barrier !\n");
}
int main(void)
{
if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
printf("setup wiringPi failed !\n");
return 1;
}
if(wiringPiISR(ObstaclePin, INT_EDGE_FALLING, &myISR) < 0){
printf("Unable to setup ISR !!!\n");
return 1;
}
while(1){
;
}
return 0;
}
Explicación del Código
void myISR(void)
{
printf("Detected Barrier !\n");
}
Define una función myISR() para imprimir Detected Barrier !, indicando que se ha detectado un obstáculo.
if(wiringPiISR(ObstaclePin, INT_EDGE_FALLING, &myISR) < 0){
printf("Unable to setup ISR !!!\n");
return 1;
}
Esta función wiringPiISR() registra una función myISR() para recibir interrupciones en el ObstaclePin especificado.
Cuando el ObstaclePin cambia de alto a bajo, significa que se ha detectado un obstáculo. En ese momento, llama a la función myISR() para imprimir «Detected Barrier !».
El prototipo de esta función wiringPiISR() se muestra a continuación.
int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;
El parámetro edgeType es INT_EDGE_FALLING, INT_EDGE_RISING, INT_EDGE_BOTH o INT_EDGE_SETUP. Si es INT_EDGE_SETUP, no se realizará la inicialización del pin; se asume que ya has configurado el pin en otro lugar (por ejemplo, con el programa gpio), pero si especificas uno de los otros tipos, entonces el pin se exportará y se inicializará según lo especificado.
Para más información, consulta: wiringPi-Functions (API).