Hola! Antes de nada avisar que soy totalmente amateur en temas de electr贸nica y Arduino. Estoy intentando crear un detector de luz infrarroja para un proyecto personal y pensaba que seria sencillo haciendo algunas modificaciones al proyecto de ejemplo que trae Arduino con el t铆pico sensor de luz normal...pero se me esta complicando el tema. A ver si alguien puede echarme una mano! ![]()
El problema que tengo es que el receptor IR no me mide variaciones en la cantidad de luz. Yo esperaba que el receptor midiera m谩s o menos luz en un rango de 0 - 1024 seg煤n la distancia a la que se encontrara del emisor pero me da una lectura fija de 219-220 por mucho que lo acerque al diodo... y cuando lo alejo simplemente pasa de 220 a cero a la que paso de cierta distancia (unos 10cm del emisor).
De receptor estoy usando un AR-IRRECEP que tenia de otro proyecto:
Este es el esquema en el que me he basado para el montaje sobre el que he aplicado algunos cambios:
-El led de "aviso" lo tengo conectado con una resistencia de 220 en lugar de 330.
-El emisor IR lo tengo conectado fijo a 5V y GND sin pasar por ning煤n Pin del Arduino, y con una resistencia de 220 tambi茅n.
Y aqui el c贸digo que estoy usando:
// Sensor de luz infrarroja
#define LED 9 // led que parpadea al detectar luz IR
#define IRRe A0 // receptor IR conectado en la entrada A5
#define IREm 2 // emisor IR conectado en la entrada 2
int valor = 0; // guardo el valor obtenido por IRRe con el emisor encendido
// cuanto m谩s cerca, mayor deber铆a ser el valor
void setup()
{
// configuro entradas y salidas de los pines
pinMode(LED, OUTPUT);
pinMode(IRRe, INPUT);
pinMode(IREm, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(IREm, HIGH); // Enciendo el emisor IR
valor = analogRead(IRRe); // Leo el valor recogido por el receptor
if ( valor > 0) { //si el valor es mayor a 0 hago parpadear el LED
digitalWrite(LED, HIGH);
Serial.print("\tCANTIDAD DE LUZ IR: ");
Serial.println(valor);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
else { //si el valor es 0 el LED queda apagado
digitalWrite(LED, LOW);
Serial.print("\tCANTIDAD DE LUZ IR: ");
Serial.println(valor);
}
}
A parte de que no me mide variaciones en la cantidad de luz que recibe, tambi茅n veo que es algo lento al leer, es decir que tarda como 2 o 3 segundos en encenderse el led de aviso cuando paso el receptor por delante del emisor y por lo tanto solo me hace lectura si lo dejo quieto justo encima un rato.
驴Alguna idea de como solucionar todo esto?
Gracias!

