1. El Octavo Bit
  2. / Lenguaje de programación de Arduino
  3. / Map()

Map()

| Actualizado:
Comentarios: 0

Modifica un valor que se encuentra inicialmente dentro de un rango para que esté dentro de otro rango de forma que la transformación del valor sea lo más proporcionada posible.

Sintaxis

map(valor_entrada, inicio_entrada, final_entrada, inicio_salida, final_salida);

Parametros

  • valor_entrada: es el número a mapear
  • inicio_entrada: es el límite inferior del rango actual del valor
  • final_entrada: es el límite superior del rango actual del valor
  • inicio_salida: es el límite inferior del rango resultado del valor
  • final_salida: es el límite superior del rango resultado del valor

Ejemplo

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

Encender un led según la intensidad de la luz ambiental
Intensidad de un led segun la luz ambiental

El valor de salida que podemos darle a un 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.

int valorcds;   //Valor obtenido
int brilloLED;  //Valor enviado al LED
void setup(void) {
  Serial.begin(9600);
}
void loop(void) {
  valorcds = analogRead(0);
  Serial.print("Ambiental: ");
  Serial.println(valorcds);
  /*El valor obtenido será mayor cuanto más brillante sea el
  entorno. En cambio, el LED ha de iluminar más cuanto más oscuro sea
  el entorno. Es decir, "brilloLED" ha de ser mayor cuanto menor sea el
  valor de "valorcds". Por eso, hemos de invertir "valorcds" para que
  su valor pase de una escala de 0 a 1023 a otra de 1023 a 0.*/
  valorcds=1023-valorcds;
  /*Y ahora hemos de
  mapear "valorcds" para que caiga dentro del rango admitido para la
  salida PWM. Es decir, pasar un valor que está entre 0 y 1023 a otro
  que está entre 0 y 255.*/
  brilloLED = map(valorcds, 0, 1023, 0, 255);
  analogWrite(9, brilloLED);
  Serial.print("Brillo: ");
  Serial.println(brilloLED);
  delay(100); //Para que se pueda ver el nuevo brillo
}

El esquema de conexiones lo puedes ver en el proyecto: Cambiar la intensidad de un led según la luz ambiental.

Comentarios - 0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *