17. Uso de la función Map

 Función map() en Arduino

📌 Introducción

La función map() es una herramienta muy útil en Arduino que nos permite cambiar el rango de valores de una variable. En este tutorial aprenderás cómo utilizarla con un ejemplo práctico de control de parpadeo de un LED mediante un potenciómetro.

🎯 ¿Qué es la función map()?

La función map() convierte un valor de un rango original a un nuevo rango especificado. Nos ahorra tener que hacer manualmente una regla de tres para esta conversión.

Sintaxis:

arduino
valor_mapeado = map(valor, fromLow, fromHigh, toLow, toHigh);

Parámetros:

  • valor: La variable que queremos convertir

  • fromLow: Límite inferior del rango original

  • fromHigh: Límite superior del rango original

  • toLow: Límite inferior del nuevo rango

  • toHigh: Límite superior del nuevo rango

💡 Ejemplo Práctico: Control de parpadeo de LED con potenciómetro

Componentes necesarios:

  • Arduino UNO (o similar)

  • 1 LED

  • 1 potenciómetro

  • 1 resistencia de 220Ω para el LED

  • Cables de conexión

Esquema de conexión:

  1. Conecta el potenciómetro:

    • Un extremo a 5V

    • El otro extremo a GND

    • Terminal central al pin analógico A0

  2. Conecta el LED:

    • Ánodo (patilla larga) al pin 8 a través de una resistencia

    • Cátodo (patilla corta) a GND

Código:

arduino
// Definición de pines
const int pinLED = 8;
const int pinPot = A0;

// Variables
int valorPot;
int tiempoDelay;

void setup() {
  pinMode(pinLED, OUTPUT);  // Configurar pin 8 como salida
  // No es necesario configurar el pin del potenciómetro como entrada
  // porque los pines analógicos son entradas por defecto
}

void loop() {
  // Leer el valor del potenciómetro (0-1023)
  valorPot = analogRead(pinPot);
  
  // Convertir el rango 0-1023 a 50-250 milisegundos
  tiempoDelay = map(valorPot, 0, 1023, 50, 250);
  
  // Controlar el parpadeo del LED
  digitalWrite(pinLED, HIGH);
  delay(tiempoDelay);
  digitalWrite(pinLED, LOW); 
  delay(tiempoDelay);
}

Explicación del código:

  1. Leemos el valor del potenciómetro que varía entre 0 y 1023

  2. Usamos map() para convertir este valor al rango de 50-250 milisegundos

  3. Utilizamos este valor para controlar el tiempo de parpadeo del LED

🔍 ¿Cómo funciona la conversión?

  • Cuando el potenciómetro está en 0: map() devuelve 50ms

  • Cuando el potenciómetro está en 1023: map() devuelve 250ms

  • Los valores intermedios se convierten proporcionalmente

✅ Prueba y verificación

Después de cargar el código:

  • Gira el potenciómetro completamente hacia un lado: el LED parpadeará lentamente (250ms)

  • Gira el potenciómetro completamente hacia el otro lado: el LED parpadeará rápidamente (50ms)

  • Los valores intermedios producirán velocidades de parpadeo intermedias

🧠 Aplicaciones adicionales

La función map() es útil para:

  • Controlar servomotores con potenciómetros

  • Ajustar la intensidad de LEDs con sensores de luz

  • Convertir lecturas de sensores a valores comprensibles

  • Crear interfaces de control proporcional

📝 Conclusión

La función map() es una herramienta esencial en Arduino que simplifica la conversión de valores entre diferentes rangos. Con este conocimiento, puedes crear proyectos más interactivos y precisos.

¡Experimenta con diferentes rangos y aplicaciones para dominar completamente esta función

Comentarios

Entradas más populares de este blog

12. Demostracion de como usar Tinkercad para simular Arduino con circuitos

11. Ejemplos Básicos de Leds y Pulsadores

Lectura de Potenciómetro con Arduino Uno en Tinkercad