Revista Tecnología

Arduino Tutorial parte 9: La resistencia LDR aplicada al arduino

Publicado el 01 julio 2013 por Guille
Hoy vamos a hablar de otro sensor, el sensor fotorresistor LDR. Como ya sabeis, es un sensor que varía su resistencia interna según la luz que reciba. Esta práctica va a ser un tanto de repaso para repasar conceptos y vamos a buscar hablar de alguna cosilla nueva.
Arduino Tutorial parte 9: La resistencia LDR aplicada al arduino
Imaginemos que tenemos una casa con jardín y que queremos conectarle unos faroles para cuando se hace de noche. Según vaya anocheciendo se irán encendiendo más faroles, es decir según vaya aumentando la resistencia de la ldr.
Hablemos un poco del código. Lo más novedoso de este código es que vamos a incluir una variable que asociaremos al valor de la LDR y que conectaremos a un pin analógico A0. También hay que destacar el montaje del potenciómetro y de la ldr, pues son algo diferentes a lo visto en otras ocasiones.
Código del ejercicio
/*
 Controlamos 5 diodos LED en función de la luz de ambiente
 Escrito por Guille para e-elektronic.blogspot.com.es
 */
//Aquí almacenamos los datos recogidos del LDR:
int valorLDR = 0; 
//Declaramos los LEDs a utilizar
int leds[] = {2,3,4,5,6,7};
Arduino Tutorial parte 9: La resistencia LDR aplicada al arduinoint n;
void setup()
{
  //Establecemos como salida los pines para LED
  for(n=0;n<6;n++)
  {
  pinMode(leds[n], OUTPUT); 
  }  
}
void loop()
{
  //Guardamos el valor leido en una variable
  valorLDR = analogRead(A0);
  //Y comenzamos las comparaciones:
  if((valorLDR >= 840) & (valorLDR < 1023))
  {
    for(n=0;n<1;n++) 
    digitalWrite(leds[n],HIGH);
    for(n=1;n<5;n++)
    digitalWrite(leds[n],LOW);

  }
  else if((valorLDR >= 630) & (valorLDR < 840))
  {
    for(n=0;n<2;n++) 
    digitalWrite(leds[n],HIGH);
    for(n=2;n<5;n++)
    digitalWrite(leds[n],LOW);
  }
  else if((valorLDR >= 425) & (valorLDR < 630))
  {
    for(n=0;n<3;n++) 
    digitalWrite(leds[n],HIGH);
    for(n=3;n<5;n++)
    digitalWrite(leds[n],LOW);
  }
  else  if((valorLDR >= 220) & (valorLDR < 425))
  {
    for(n=0;n<3;n++) 
    digitalWrite(leds[n],HIGH);
    for(n=3;n<5;n++)
    digitalWrite(leds[n],LOW);
  }
  else  if((valorLDR >= 0) & (valorLDR < 220))
  {
    for(n=0;n<3;n++) 
    digitalWrite(leds[n],HIGH);
    for(n=3;n<5;n++)
    digitalWrite(leds[n],LOW);
  }
}
Aquí os dejo el mismo principio de la práctica pero aplicando electrónica básica

Volver a la Portada de Logo Paperblog