Código de búsqueda

Lección 14/31-4: Ejemplo 1 de la función map() en Arduino

Lección 14/31-4: Ejemplo 1 de la función map() en Arduino

Este tutorial es parte de una serie sobre programación de Arduino y se centra en el uso práctico de la función map(). En esta lección, aprenderás cómo convertir un valor de porcentaje (0–100) en un valor PWM (Modulación por Ancho de Pulso) (0–255) para controlar el brillo de un LED. En lugar de calcular manualmente que el 60% equivale a 153, la función map() realiza la conversión lineal por ti, haciendo que tu código sea más limpio e intuitivo.

Esta técnica es esencial para muchas aplicaciones del mundo real donde necesitas traducir lecturas de sensores o entradas de usuario a diferentes rangos. Por ejemplo, podrías usarla para:

  • Controlar la velocidad de un motor de corriente continua basado en la lectura de un potenciómetro.
  • Mostrar el valor crudo de un sensor de temperatura en una escala de 0-100%.
  • Mapear las coordenadas de un joystick a ángulos de un servomotor.
  • Ajustar el brillo de un LED basado en un sensor de luz ambiental.
  • Convertir una lectura analógica de 0-5V a un valor digital de 0-1023 o viceversa.

Hardware/Componentes

Para seguir este proyecto, necesitarás los siguientes componentes:

  • Placa Arduino (Uno, Nano, etc.)
  • Un LED
  • Una resistencia de 220 ohmios
  • Cables de conexión
  • Una placa de pruebas (opcional, pero recomendada)

Guía de Conexiones

En el video, el instructor demuestra el proyecto utilizando una configuración de cableado de una lección anterior sobre desvanecimiento de LED. El circuito es sencillo: conecta el ánodo (pata larga) del LED a una resistencia de 220 ohmios, y conecta el otro extremo de esa resistencia al pin digital 3 del Arduino. Conecta el cátodo (pata corta) del LED directamente al pin de tierra (GND) del Arduino.

Explicación del Código

El código para este ejemplo es muy conciso, con la lógica principal residiendo en la función setup(). Vamos a desglosar las partes configurables por el usuario.

int LEDpin = 3; //define el pin para el LED

Esta línea define el pin de Arduino al que está conectado tu LED. En este ejemplo, está configurado en el pin 3, que es un pin compatible con PWM, necesario para la salida analógica. Puedes cambiar este número si conectas tu LED a un pin PWM diferente.

int b=8;//60% de brillo

Esta es la variable clave que modificarás para probar diferentes niveles de brillo. Representa el brillo deseado como un porcentaje. El comentario en el código dice "60%", pero el valor está configurado en 8 con fines de demostración en el video. Puedes cambiarlo a cualquier número entero entre 0 y 100. Por ejemplo, configurar b = 60 representaría un nivel de brillo del 60%.

int brightness = map(b, 0, 100, 0,255);

Este es el corazón de la lección. La función map() toma tu valor de porcentaje (b) y lo convierte de su rango original (0 a 100) a un nuevo rango objetivo (0 a 255). El resultado se almacena en la variable brightness, que luego se utiliza para escribir un valor analógico al pin del LED.

analogWrite(LEDpin, brightness);// enciende el LED con 60% de brillo

Finalmente, esta línea envía el valor mapeado al pin del LED usando analogWrite(). Esto establece el ciclo de trabajo del LED, controlando efectivamente su brillo. La belleza de este enfoque es que solo necesitas cambiar la variable b para controlar el LED, y la función map() maneja todos los cálculos necesarios.

Proyecto/Demostración en Vivo

En el video, el instructor sube el código y demuestra el efecto de cambiar la variable b. Cuando b está configurado en 8, el monitor serie imprime el valor mapeado de 20, y el LED es visiblemente tenue. Cambiar b a 90 resulta en un valor mapeado de 229, haciendo que el LED sea mucho más brillante. Configurar b a 100 mapea a 255, que es el brillo máximo. Esta demostración práctica muestra claramente cómo la función map() simplifica el proceso de controlar salidas analógicas con valores de porcentaje fáciles de usar.

Proyectos relacionados de este video

Capítulos

  • [00:00] Introducción al Curso de Arduino por Robojax
  • [01:19] Qué es millis() y por qué usarlo
  • [05:46] Ejemplo 1: Usando millis() para un evento temporizado
  • [08:29] Ejemplo 2: Usando millis() con un botón pulsador
  • [12:14] Ejemplo 3: Detectando una segunda pulsación de botón después de un retraso
  • [17:20] Introducción a la función map()
  • [19:47] Recorrido del código para el ejemplo de map()
  • [20:41] Demostración en vivo de la función map()

Imágenes

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Idioma: C++
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
int LEDpin = 3; //defind pin for LED
                   
 
 void setup() {
    Serial.begin(9600);//initialize serial monitor with 9600 baud
    pinMode(LEDpin, OUTPUT);//set pin as output
    int b=8;//60% brightness
    int brightness = map(b, 0, 100, 0,255);
    Serial.println(brightness);//print it on serial monitor
    analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness   
 }

 void loop() {

 
 }
 

Archivos📁

Manual del Usuario