En este proyecto utilizaremos nuestro Arduino con un sensor de proximidad o detector de obstáculos infrarrojo para detectar la cercanía de un objeto u obstáculo que se acerque a nuestro sensor. Este tipo de sensores lo utilizaremos principalmente en la construcción de robots seguidores de línea o robots autónomos que no se estrellan contra objetos en su camino.
¿Qué es un sensor de proximidad IR?
Un detector de obstáculos o sensor de proximidad es un dispositivo que tiene la capacidad de detectar un objeto en frente de él por lo general por la reflexión de la luz, en nuestro caso es por la luz infrarroja, debido a su comodidad ya que no es visible por el ojo humano.
El módulo esta constituido por un LED de luz infrarroja que emite la señal y un fotodiodo que recibe la luz que refleja del LED IR cuando hay un objeto en frente, también contamos con un módulo de medición estándar con un comparador LM393, que nos permite obtener una lectura digital y se puede regular la sensibilidad del umbral con el potenciómetro en el circuito.
Componentes
En este proyecto las conexiones son bastante simples, lo primero que debemos hacer es identificar los tres pines que posee el sensor OUT, GND y VCC, los cuales son la alimentación del módulo (VCC, GND), un pin de salida digital (OUT).
Una vez identificados los pines del módulo conectamos el pin OUT al pin 2 del Arduino, luego conectamos el GND al GND del Arduino y por último el pin VCC a los 5V del Arduino.
Código
#define LED 13 #define pinSensor 2 int obstaculo = HIGH; void setup() { pinMode(LED, OUTPUT); pinMode(pinSensor, INPUT); Serial.begin(9600); } void loop() { obstaculo = digitalRead(pinSensor); if (obstaculo == LOW) { Serial.println("OBSTACULO!!, OBSTACULO!!"); digitalWrite(LED, HIGH); } else { Serial.println("Libre"); digitalWrite(LED, LOW); } delay(200); }
Explicación del código
Comenzaremos a revisar el código, primero vamos hacer la declaración de las variables.
#define LED 13 #define pinSensor 2 int obstaculo = HIGH;
Lo primero que vamos a hacer es definir una constante LED a la que le asignaremos el valor 13, el cual es el pin del LED integrado en el Arduino, de igual forma definimos otra constante pinSensor a la que le asignamos el valor de 2, que sería el pin del Arduino por el que vamos a leer el sensor. Por último declaramos una variable de tipo entera obstaculo a la cual le asignamos HIGH, que sería la variable con en la cual almacenaremos el valor que no estrega el sensor, es inicializada en 1 o HIGH ya que el sensor una vez que se activa devuelve un 0 o LOW.
Función setup()
pinMode(LED, OUTPUT); pinMode(pinSensor, INPUT); Serial.begin(9600);
Como hemos visto anteriormente en otros proyectos en el setup ponemos todo lo que debe ser inicializado o ejecutado una sola vez, en nuestro caso encontramos 3 líneas no mas. La primera línea que vemos que establecemos el pin del LED como pin de salida, de igual forma en la siguiente línea establecemos el pinSensor como pin de entrada y para finalizar que vemos en la tercera línea la inicialización de la comunicación serial a una velocidad el 9600 baudios, por medio de la cual veremos los resultados del sensor a través del monitor serial.
Función loop()
obstaculo = digitalRead(pinSensor); if (obstacle == LOW) { Serial.println("OBSTACULO!!, OBSTACULO!!"); digitalWrite(LED, HIGH); } else { Serial.println("Libre"); digitalWrite(LED, LOW); } delay(200);
Comenzaremos revisando el contenido de nuestra función loop, para esto vamos a irlo desglosando un poco, para que sea mas fácil de entender.
obstaculo = digitalRead(pinSensor);
Aquí podemos ver que le asignamos a la variable obstaculo el valor que leemos del sensor.
if (obstacle == LOW) { Serial.println("OBSTACULO!!, OBSTACULO!!"); digitalWrite(LED, HIGH); }
Luego encontramos una condicional if, que pregunta si el valor que nos devuelve el sensor es un LOW o 0, entonces me imprima o muestre en el monitor serial el texto «OBSTACULO!!, OBSTACULO!!» y a su vez que encienda el LED, el cual es el led integrado al arduino o alguno que hayan conectado al pin 13
else { Serial.println("Libre"); digitalWrite(LED, LOW); }
Anteriormente vimos que había una condicional if, ahora vemos un else, donde sino se cumple la condición del if anterior entonces nos mostrará en monitor serial el texto «Libre» y mantendrá nuestro led apagado.
delay(200);
Finalmente encontramos una delay que hace una pausa de 200 milisegundos antes de volver comenzar de nuevo con el loop.
NOTA: Se podría conectar al pin 13 del arduino un LED con su resistencia o un zumbador activo para que tengamos una señal cuando haya un obstáculo.
Resumen
En resumen al conectar nuestro Arduino a la computadora e iniciamos el monitor serial, vamos a ver en el monitor serial si hay algo obstaculizando el sensor o si esta libre de obstáculos, de igual forma cuando hay obstáculos se encenderá el LED integrado en el Arduino, de lo contrario se apagará.
Exelente!!!!
Perdón, Excelente!
Muchas Gracias por tu comentario.