Esta vez no queremos obtener valores digitales SI/NO, sino que queremos medir el valor de la luz que llega. Por eso usaremos entradas ANALÓGICAS. Las podemos encontrar en nuestra placa como A0, A1…

El esquema del montaje será muy parecido al montaje básico del pulsador (que para eso lo hemos explicado…)



Como ves, la principal diferencia es que conectamos el LDR a un pin analógico.

Además vamos a hacer otra cosa interesante con este nuevo sketch. Vamos a visualizar los valores que obtengamos del sensor en nuestro ordenador a través del puerto USB. Para ello usaremos el MONITOR SERIAL del menú HERRAMIENTAS de nuestro IDE. Si, es bastante feo, pero es el que hay. Las instrucciones básicas que debemos conocer del monitor son:

Serial.begin(9600)                     inicia la comunicación con el monitor a 9600 bits/seg

Serial.print(“Hola Mundo!”)        muestra una línea con Hola mundo

Serial.println(Valor)                   muestra en la misma línea el valor de una variable

Con esto nos apañamos..., de momento.

Vamos con el ejemplo:


// Midiendo la cantidad de luz con un LDR

int LDR_pin = 2;                                   // vamos a leer los valores del pin 0

int LDR_val = 0;                                    // definimos la VARIABLE LDR_val y le damos el valor inicial = 0

void setup() {

Serial.begin(9600);                              // iniciamos el monitor serial.

}                                              

void loop()

{
LDR_val = analogRead(LDR_pin);     // leemos el valor que da el LDR.

Serial.print("LDR = ");                          // Imprimimos el texto LRD= en una línea del monitor

Serial.println(LDR_val);                       // en la misma línea, a continuación, el valor leído por el sensor

delay(1000);                                          // Paro 1 segundo. Vuelvo al bucle, mido, imprimo, espero….bucle
}

Genial, ya sabemos presentar en nuestro ordenador datos medidos con nuestra placa arduino. Ahora, además de leerlos y presentarlos, vamos a procesarlos.

Lo inmediato que se nos ocurre a todos es que, a partir de un determinado valor de lectura, hagamos algo. Por ejemplo podríamos encender automáticamente un led cuando el valor de la luz sea inferior al que nosotros fijemos. El esquema electrónico sería:




Usando el mismo ejemplo anterior, vamos a añadir unas líneas de código. Sólo comentaremos las líneas añadidas.

// Encendido automático de un LED en función de la luz                          

int LED_pin=13;                                    //conectamos el LED en el pin 13
int LDR_pin = 2;              
int LDR_val = 0;             

void setup() {

pinMode(LED_pin,OUTPUT);             // LED del pin configurado como SALIDA
Serial .begin(9600);
}

void loop()
{
LDR_val = analogRead(LDR_pin);
Serial.print("LDR = "); 
Serial.println(LDR_val);

if (LDR_val>=20)                                   // Si hay luz, valor mayor de 20:
{
   digitalWrite(LED_pin, LOW);           // Apago el LED
}
else if (LDR_val<20)                             // Si no hay luz, si su valor es menor que 20…
{
   digitalWrite(LED_pin, HIGH);          // Encendemos el LED
delay(1000);
}
}


- Copyright © Robótica y Arduino en la ESO - Skyblue - Powered by Blogger - Designed by Johanes Djogan -