¡Buenos días, seguidores! Los sensores de distancia por infrarrojos son una buena forma de dotar a nuestros robots autónomos de un sistema de orientación e identificación de objetos, evitando así colisiones. Si bien muchas veces no son tan precisos como los sensores de ultrasonidos, son mucho más baratos (en general) y sencillos de configurar. Hoy vamos a utilizar el sensor de Infrarrojos SHARP con Arduino. Crearemos una función que nos detecte si hay algun objeto próximo al sensor, y, además, mostraremos por pantalla la distancia que nos marca.
Para este ejemplo vamos a necesitar:
- Arduino. Yo utilizo una placa UNO, pero cualquier modelo debería funcionar
- Sensor IR SHARP
- Cables de prototipado para conectar el sensor a la placa Arduino
- Cable USB compatible con Arduino.
El sensor SHARP dispone de tres cables: rojo, negro y amarillo/blanco. Los dos primeros corresponden a VCC y GND, por lo que irán conectados a los pines 5V y GND de Arduino respectivamente. El cable amarillo/blanco es el cable de señal. SHARP es un sensor analógico, así que vamos a conectarlo al pin A4 de Arduino.
El código es muy simple. Si el sensor de infrarrojos detecta un objeto a una distancia de entre 5 y 10 centímetros aproximadamente, enciende el LED del pin 13. También envía el valor del sensor por Serial. ¡Más fácil imposible! 😉
/* TUTORIAL DE ARDUINO Y SHARP Enciende el LED del pin 13 si el sensor IR detecta un objeto. Escrito por N4n0 en beneficio de los seres humanos. www.robologs.net */ #define LED 13 //definimos el pin del LED int dist = 0; //aqui guardamos el valor del sensor void setup() { pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { dist = analogRead(4); //Leemos A4 y almacenamos su valor Serial.println(dist); //Escrivimos dist por serial if(dist > 350) digitalWrite(LED, HIGH); else digitalWrite(LED, LOW); delay(100); }
Hay que decir, sin embargo, que el sensor SHARP tiene un rango mínimo. Es posible que un objeto que esté justo delante del sensor dé un valor más bajo que un objeto que esté separado un par de centímetros.
El siguiente gráfico extraído de la documentación del sensor SHARP de 30 centímetros muestra la variación de la señal analógica en función de la distancia:
Así pues, vemos que los objetos que estan a menos de 2 ó 3 centímetros dan un valor menor que aquéllos situados a 5 ó 6.
Y hasta aquí nuestro tutorial de hoy. ¡Espero que te haya gustado! Si tienes alguna duda o sugerencia, puedes dejarme un comentario 😉
tengo un problema con mi sensor ir y es que no sensa a mas de 20 cm
Es normal, estos sensores tampoco llegan muy lejos…
tengo un problema con mi sensor sharp ,el problema es que no sensa a mas de 20 cm
Hola, he tenido un problema con un sensor (Sharp GP2Y0A60SZLF) necesito calibrarlo para poder sacar la distancia, en realidad yo no soy buena en la programación de arduinos y encontré esta pagina http://www.instructables.com/id/How-to-setup-a-Pololu-Carrier-with-Sharp-GP2Y0A60S/?ALLSTEPS.. hago las conexiones subo el programa y cuando empiezo a calibrarlo, va bajando la medición hasta cierto punto, y deja de bajar para subir y luego bajar y es entonces donde la distancia deja de ser verdadera. También no se si influya que en vez de utilizar un arduino uno utilizo un arduino nano y un sensor de 3v
Espero me haya explicado y puedas ayudarme SALUDOS!
Viendo este código creo que es normal, este programa va tomando medidas y calculando su media, es normal que las mediciones vayan subiendo y bajando.
No lo entiendo. No sé si los 3 sensores que he comprado en electronicaembajadores están defectuosos o es que este sensor es tremendamente impreciso; pero incluso dejándolo quieto delante de una pared blanca a 50 cm, está contínuamente variado su valor= 52 cm, 45 cm, 48 cm, y con picos de 30 o 60 cm. Repito, dejándolo completamente estático delante de una pared blanca. ¿A qué puede deberse??
Bueno, estos sensores suelen tener errores de precisión, pero no tanto… Mira que el obstáculo tenga una superfície lisa y que no sea de color negro, y vuelve a medir. También puede ser que el cable de señal haga mal contacto con la placa Arduino.
Hola, creo que tengo un problema con mi mando a distancia de infrarrojos. Creo que no funcionan algunas teclas. Las pruebas que he hecho han sido las siguientes. He conectado el receptor de IR en los pines A0 del sensor shield. Luego he usado el programa IR.INO que hay en esta carpeta: https://drive.google.com/folderview?id=0B0cBzpvRJiJnNmI1U1JSVHlCRUk&usp=sharing Al abrir el monitor y pulsar las teclas me salen valores procedentes del IR. Pero son algo herráticos y hay algunos botones que no funcionan en absoluto (me aleje o me acerque), por ejemplo, la tecla 0, 6, 9 y #. He comprobado a cambiarle la pila… Leer más »
Pues no sé decirte dónde está el error. No sé cómo funciona este módulo porque no lo he usado jamás :/
Si es una librería oficial lo más probable es que el problema esté en el montaje. Mírate que todos los pines estén en su sitio y que estés siguiendo bien las instrucciones.
Hola he visto tu blog y esta muy interesante, quisiera saber si me podrias ayudar con un codigo , lo que quiero hacer que unos leds prendan aleatoriamente y los pueda prender y apagar con un sensor SHARP ,ya vi el tutorial que tienes aqui ,lo que quisiera saber es como prender los leds de forma aleatoria y poderlos apagar el led que prenda.Si mi pudieras ayudar gracias ,soy un poco nuevo en arduino.
¡Buenas, Josue! No había visto tu comentario hasta ahora. Prueba con este código. Lo que hace es guardar los pines de los LEDs en una matriz. A cada iteración del bucle coge un pin al azar de la matriz y lo enciende si el sensor no detecta un obstáculo. //Vamos a suponer que hay 4 leds conectados a D5, D6, D7 y D8 //Y el sensor SHARP conectado a A4 int leds[] = {5,6,7,8}; //Aqui guardamos los pines de los LED int val = 0; //Aqui guardaremos el numero aleatorio void setup() { //Iniciamos todos los pines como salidas for(int… Leer más »