Skip to main content

3.1 M1: Potenciómetro

Vamos a realizar un programa para comprobar que al variar el valor de una resistencia mediante un potenciómetro, también variará la cantidad de luz que emite un led. Como se puede ver en el siguiente vídeo, a medida que giramos el potenciómetro el led varía su luminosidad.

CON EDUBASICA

Vamos a aprovechar el A0 que está conectado al potenciómetro y utilizaremos el D3 que está conectado al LED VERDE

Esquema del potenciómetro y de los diodos en EDUBÁSICA

SIN EDUBASICA

Pues se necesita hacer el cableado correspondiente A0 con el potenciómetro y D3 a un led:

Continuamos ...

El programa sería el siguiente

//Declaramos una variable para almacenar el valor recibido en pin 0.
int val = 0;

void setup() {
//El pin 3 corresponde al LED verde
pinMode(3, OUTPUT);
}

void loop() {
/*leemos el valor del pin O modificado por el potenciómetro que va desde 0 a 1023*/
val = analogRead(0);
/*Escribimos el valor obtenido en el LED verde que puede ser entre 0 y 255. Por eso dividimos val por 4 */
analogWrite(3, val/4);
}

Montaje : Mapeo Potenciometro

Vamos LEER LOS VALORES DEL POTENCIÓMETRO EN PANTALLA

SIN EDUBÁSICA

Conectamos la salida de un potenciómetro a A0

CON EDUBASICA

No hay que hacer nada, ya está !

Continuamos ...

Fíjate como dividimos los valores del potenciómetro A0 (que va desde 0 a 1024) entre 204.6 para convertirlos dentro del rango de 0-5V ( 1024/5=204.6 ) :

float val = 0;

void setup(){
Serial.begin(9600);
}
void loop(){
val = analogRead(A0); 
//leemos el potenciómetro (0-1024)
val = val/204,6; 
//mapeamos los valores para que sean de 0 a 5V
Serial.print (val); 
//vemos por pantalla el valor en Voltios
Serial.println("V");
delay(1000);
}

Este es el vídeo:

Mapeo de valores

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 y queremos traducir estos valores al rango 0-255 pues es lo que podemos darle a un LED. La solución será _mapear _esos valores para que, en caso de obtener el valor 917 (el equivalente a oscuridad), el led verde se apague (0) y la máxima luminosidad (1024) el led se ilumine al máximo (255).

La funció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 máximo suele estar en 1024, pero el mínimo dependerá de las condiciones de luz en las que realicemos la prá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 ver la transformación lineal que hace map con los valores que hemos comentado, es simplemente una demostración de lo que hace internamente la función map**