Nota

¡Hola, bienvenido a la Comunidad de Aficionados a Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte de expertos: Resuelve problemas posventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.

  • Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y avances.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones festivas y sorteos: Participa en sorteos y promociones de fiestas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy!

5.6 Mapeo

Si observas detenidamente, notarás que muchos valores tienen diferentes rangos en la programación. Por ejemplo, el rango de valores para entradas analógicas es (0~1023). El rango de valores para la salida analógica es (0~255). El ángulo de salida del servo es (0~180).

Esto significa que si queremos usar el potenciómetro para controlar el brillo del LED o el ángulo del servo, necesitamos realizar una operación de mapeo.

Ahora veamos cómo lograrlo.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

Es definitivamente conveniente comprar todo un kit, aquí está el enlace:

Nombre

ELEMENTOS DE ESTE KIT

ENLACE

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa SunFounder R3

COMPRAR

Protoboard

COMPRAR

Cables Puente

COMPRAR

Servo

COMPRAR

Potenciómetro

COMPRAR

Esquemático

../_images/circuit_8.3_amp.png

Cableado

../_images/map_bb.jpg

Código

Nota

  • Abre el archivo 5.6.map.ino en la ruta 3in1-kit\basic_project\5.6.map.

  • O copia este código en el Arduino IDE.

  • O sube el código a través del Arduino Web Editor.

Una vez que el código se haya cargado con éxito, puedes girar el potenciómetro hacia adelante y hacia atrás, y el eje de salida del servo rotará de la misma manera.

¿Cómo funciona?

map(value, fromLow, fromHigh, toLow, toHigh): Mapea un número de un rango a otro. Es decir, un valor fromLow se mapea a toLow, y un valor fromHigh se mapea a toHigh.

Sintaxis

map(value, fromLow, fromHigh, toLow, toHigh)

Parámetros
  • value: el número a mapear.

  • fromLow: el límite inferior del rango actual del valor.

  • fromHigh: el límite superior del rango actual del valor.

  • toLow: el límite inferior del rango objetivo del valor.

  • toHigh: el límite superior del rango objetivo del valor.

Si el potenciómetro controla el LED, también puedes usar el mapeo para completar la tarea.

int x = analogRead(knob);
int y = map(x,0,1023,0,255);
analogWrite(led,y);

Notas y Advertencias

  • El «límite inferior» de ambos rangos puede ser mayor o menor que el «límite superior», lo que significa que la función map() se puede usar para invertir un rango de números.

    y = map(x,0,180,180,0);
    
  • El mapeo también funciona bien para números negativos.

    y = map(x,0,1023,-90,90);
    
  • El mapeo utiliza enteros, y se descartan los decimales de los números flotantes.