Patrocinadores

jueves, 12 de marzo de 2020

Función map en Arduino


La función map (mapear) sirve para convertir números de un rango a otro. 
Nos ahorra mucho trabajo de conversión y podemos cambiar una magnitud a otra.

Un sensor mide magnitudes de 10 bits es decir, valores de 0 a 1023, 1024 valores. Mientras que un actuador utiliza magnitudes de 8 bits es decir valores de 0 a 255, 256 valores.

Veamos un ejemplo:

Un potenciómetro es un sensor y utiliza valores de 0 a 1023 y un led es un actuador y utiliza valores de 0 a 255, vamos a usar el potenciómetro para controlar el brillo del led, pero queremos que se use toda la escala del potenciómetro, que al bajarlo por completo sea cero y al girarlo por completo sea 255, no 1023.

Debemos usar la función map como sigue:

Recuerda que debemos declarar una variable donde se guarde nuestro valor de map, eso lo hacemos en el inicio del código.

variable2 = map (variable1, 0, 1023, 0, 255);

Donde le indicamos al programa que los valores de la variable1 que es donde se guarda el valor original del potenciómetro (0 a 1023) cambiarán de escala a (0 a 255) y la variable2 será la que guarde el nuevo valor.

Si cambiamos el valor de 0 a 1023 por uno que va de 0 a 255, de manera gráfica quedaría así nuestro potenciómetro:


Si no utilizamos la función map el potenciómetro quedaría así, es decir que no aprovechamos todo el recorrido, solo una pequeña sección de el:



Entonces podemos entender que la carrera del potenciómetro en este ejemplo sin la función map no se aprovecha. Se alcanza el valor muy rapido al girarlo, no se aprovecha todo el giro.

Otro ejemplo es usar la función map en un servomotor.
Veamos cómo se usaría con un servomotor:

En Arduino el código quedaría así:

variable1 = map (variable2,  0, 1023, 0, 180);

El valor del potenciómetro que va de 0 a 1023 lo mapeamos a el valor del servomotor que es de 0 a 180°

De ésta forma cambiamos de escala para usarla en cualquier elemento.

No hay comentarios:

Publicar un comentario