Skip to main content

M3: El sensor de luz LDR

Hasta ahora hemos trabajado con resistencias de valor fijo, pero existen una serie de resistencias que varían según distintos parámetros físicos a las que se les somete como presión, luz y temperatura entre otros. Existe una gran variedad que se utilizan para construir lo que llamamos sensores. sensores.

En esta práctica vamos a diseñar un circuito que sea sensible a la luz. El objetivo será regular la intensidad luminosa de un led con una LDR, una resistencia sensible a la luz.

CON EDUBASICA

En este montaje usaremos la resistencia LDR de la placa Edubásica.  Como ya hemos comentado, la LDR modifica su resistencia en dependiendo de la cantidad de luz que incida sobre ella.  El siguiente programa mostrará por consola (“Monitor Serial”) las variaciones de luminosidad que detecte la LDR simplemente pasando la mano por encima de ella.

Esquema del LDR en EDUBASICAEsquema del LDR en EDUBASICA

SIN EDUBASICA

Hay que conectar en formato pull-downup el LDR a A1 y un led verde a D3:

CONTINUAMOS....

Programa

Como vemos en el esquema, el LDR está  conectado a la entrada A1 del Arduino, por lo tanto la instrucción de lectura será  analogRead(1) lo mapearemos correctamente a una variable llamada luz y utilizaremos el LED Verde conectado a D3 por lo que la instrucción de salida será  analogWrite(3,luz)

https://create.arduino.cc/editor/javierquintana/326c66b3-c8b8-4879-980c-f81af7ab65d8/preview

Nota:

Si no sabes

Mapeo de dóndevalores

salen

En ocasiones, los valores que obtenemos de una lectura de un pin, como un sensor, pueden estar fuera de una escala determinada, y tenemos que convertirlos a otro rango para poder usarlos.

Por ejemplo:

Supongamos que hacemos una lectura previa de lo que nos devuelve el LDR y nos devuelve unos valores mínimo y máximo por ejemplo: 917,1024, 0,1024 y queremos traducir estos valores al rango 0-255 pues es lo que nopodemos hasdarle leidoa laun páginaLED. MapeoLa solución será _mapear _esos valores para que, en caso de valores_

obtener
el

```cpp+lineNumbers:truevalor //Detectamos917 la(el variaciónequivalente ena la LDR

int luz; void setup() {
// Pin 3 tieneoscuridad), el led verde pinMode(3,se OUTPUT);
apague Serial.begin(9600);(0) }y voidla loop()máxima {luminosidad luz=(1024) map(analogRead(1),el 917,led 1024,se 0,ilumine al máximo (255);.

analogWrite(3,luz);

La //escribimosfunción “map” del programa asigna un valor máximo y un valor mínimo a un rango dado.

_Nota: En el próximo montaje el valor obtenidomáximo porsuele estar en 1024, pero el mínimo dependerá de las condiciones de luz en las que realicemos la resistenciapráctica. Por eso en el código se especifican 2 variables que deberemos colocar a mano:

bajo_LDR y alto_LDR._

Observa si tu montaje necesita de algún ajuste utilizando la función map.

Aquí tienes un Excel (xlsx - 12,88 KB) para ajustarlover Serial.print("valorla analogicotransformación leido=");lineal Serial.println(analogRead(1));que delayhace (1000);map }con ```los valores que hemos comentado, es simplemente una demostración de lo que hace internamente la función map**