Arduino UNO posee 6 entradas analógicas, lo que significa que podemos conectarlo a seis sensores analógicos y obtener sus valores en cada pasada del loop principal de Arduino, que en el caso de Arduino es en el mejor de los casos de 8 KHz (este tema es muy discutible, pues depende de la autenticidad de la placa y de la complejidad del código del loop); esto significa que podemos realizar 8.000 lecturas del puerto analógico por segundo.
Puertos de entrada analógicos
La resolución de estas entradas es de 10 bits, lo que nos ofrece 1024 valores entre 0 y 1023 como valores de entrada, que se corresponden a 1024 valores intermedios entre 0 V y 5 V.
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.
El valor de salida que podemos darle al led es de 0 a 255, que se traduce en su nivel de luminosidad, pero los datos que leemos del sensor pueden llegar a 1024. Por esto debemos mapear el resultado, es decir, dejarlo en unos valores de entre 0 y 255.
La función “map” del programa asigna un valor máximo y un valor mínimo a un rango dado.
Imagina que recibimos mediante un sensor LDR, valores con un rango del 1 al 9 y que, en función a este valor, tenemos que iluminar un LED RGB. Si no conociésemos esta función map() nos tocaría trabajar o bien con la estructura if o haciendo unos cálculos previos.
Al tener 9 posibles valores mediante el sensor 1, 2, 3, 4, 5, 6, 7, 8, 9.
Mapear puerto con función IF
Reajustar salida mediante operaciones aritméticas
O bien haciendo un cálculo previo, dividiendo el valor máximo, en este caso 255 entre el número de valores que tiene el rango, en este caso 9. Quedando 255 dividido entre 9 = 28 aproximadamente.
Cuando comenzamos a trabajar con rangos mayores o queremos que el resultado sea mucho más exacto, necesitaremos trabajar con la función map ().
y = map(valor, minimo, maximo, cambiominimo, cambiomaximo);
Uso de la función map
Parámetros necesarios para la función map
En este ejemplo vamos a transformar un valor del rango (0, 255) elegido de forma aleatoria (con la función random()), en valores de rango (0, 1024) y vamos a mostrar por el Monitor serial los resultados.
Para que veáis que fácil es de implementar esta función la voy a separar del resto de código.
Sintax función map
El circuito propuesto consta de un potenciómetro conectado a la placa Arduino, el potenciómetro deberá estar conectado en el pin “A2”, utilizando la función “map” se deberá imprimir por puerto serie el valor en porcentaje en la entrada A2, para ello usaremos:
• 1 Arduino uno
• 1 Potenciómetro
• 1 Protoboard
Circuito: Función Map