Medicion LDR

Hola!

Recién estaba probando de prender un LED con un sensor de luz que me vino en el kit. Funciona, si le apunto con una linterna al sensor, enciende el led, si corro la linterna, el LED se apaga.

El serial.print del digitalRead me devuelve 0 o 1, mi pregunta es: no deberia devolver un valor dentro de una escala con mas valores que el 0 y el 1 ????

Capaz que el sensor es tan trucho que solo me dice si hay o no luz, o no se.

El codigo es el siguiente:

#define LED  13   
#define LDR 7  
                  
float val = 0;

void setup() { 
  pinMode(LED, OUTPUT);   
  pinMode(LDR, INPUT); 
} 

void loop(){ 
 val = digitalRead(LDR); 

  if (val==1) {      
    digitalWrite(LED, HIGH); 
  } else { 
    digitalWrite(LED, LOW); 
  } 
  Serial.println(val);
}

y el sensor es el siguiente (el nro 3) :

Uploaded with ImageShack.us

Hola,
si utilizas la función analogRead(), podrás elegir un nivel de luz para encender el led
if(val > XXX)

Hola según pones en el código lo tienes colocado en una entrada digital, esa entrada solo te da 0 (bajo) o 1 (alto), coloca el LDR en una de las entradas analógicas y como han comentado utiliza analogRead para que te de un valor entre 0 y 1023.

un saludo

fermg

uno de los ejemplos del IDE sirve para medir valores en analógico conectando el ldr al pin A0. Si lo lees en el pin 7 como tu habias puesto solo lee en digital, es decir 1 o 0. Con el analogRead podrás leer entre 0 y 1023, con un map lo puedes ajustar al intervalo 0-255

el LDR es una resistencia que varía con la luz, generalmente con una resistencia de 1 ó 10K suelen ir bien para poner en un puerto analógico.