domingo, 30 de junio de 2013

Arduino Tutorial 9: La resistencia LDR aplicada al arduino

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.



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
*/

//Aquí almacenamos los datos recogidos del LDR:
int valorLDR = 0; 

//Declaramos los LEDs a utilizar
int leds[ ] = {2,3,4,5,6,7};
int 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

MUCHA SUERTE con vuestros trabajos