# Mapeo

##### <span style="color: rgb(22, 145, 121);">**¿Qué es eso de "mapeo"?**</span>

En la jerga robótica, dicho pronto y mal pero para que se entienda, mapear significa hacer un **cambio de escala**

##### <span style="color: rgb(22, 145, 121);">**¿Cuándo se dan esas situaciones?**</span>

<p class="callout info">**SITUACION A :** Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida digital PWM de Arduino que va de 0-255</p>

<p class="callout info">**SITUACION B :** Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 e interpretarlo en sus valores de voltios. Si suponemos que la placa se alimenta a 5V la variable de salida irá desde 0 a 5V</p>

<p class="callout info">**SITUACION C :** Queremos leer el valor de un LDR, que tapándolo nos da 917 e iluminándolo al máximo es 1023, lo queremos copiar en una salida digital PWM, o sea que la salida va desde 0 a 255</p>

*Nota: El mínimo de 917 (puede ser otro número, es un valor experimental) es debido a que los LDR van montados en un divisor de tensión como el de la figura, y la resistencia de abajo, siempre se queda algo de tensión*

[![2025-01-04 00_34_57-Recursos_electronica_Black_EchidnaBlack_0_ESQ.pdf at master · EchidnaShield_Recu.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-04-00-34-57-recursos-electronica-black-echidnablack-0-esq-pdf-at-master-echidnashield-recu.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-04-00-34-57-recursos-electronica-black-echidnablack-0-esq-pdf-at-master-echidnashield-recu.png)

<p class="callout info">**SITUACION D :** Queremos según el valor de un joystick conectado a las entradas analógicas de un Arduino (esto pasa en Echidna) se representen en la pantalla de Scratch 2\*220 por 2\*180, es decir  
 - Eje X : el potenciómetro (vamos a llamarlo *potx*) va de 0 a 1023 y la salida (*ejex*) va de -220 a 220  
 - Eje Y : el potenciómetro (vamos a llamarlo *poty*) va de 0 a 1023 y la salida (*ejey*) va de -180 a 180</p>

<p class="callout info">**SITUACION E:** Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo *acel*) que va 250 a 500</p>

<p class="callout info">**SITUACION F :** Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida de un servo, por lo tanto lo que necesita es un ángulo que va de 0-180</p>

<p class="callout info">**SITUACION G :** Idem que F pero una raspberry por lo tanto GPI va de 0-65.535</p>

##### <span style="color: rgb(22, 145, 121);">**¿Cómo se consigue mapear?**</span>

- <span style="color: rgb(0, 0, 0);">Si programas con código ArduinoIDE, tienes la instrucción **map**</span>
- <span style="color: rgb(0, 0, 0);">Si no tienes map, por ejemplo, programas con bloques gráficos tipo Scratch, lo tienes que hacer a mano</span>
    - <span style="color: rgb(0, 0, 0);">¿Cómo? Con la ecuación de una recta</span>

Para entendernos :

- **X** será el valor de entrada que tiene unos valores límites **X<sub>1</sub> e X**<span style="font-size: 11.2px;">**2** </span>
- **Y** es la variable de salida que queremos y que tiene otros valores límites **Y<sub>1 </sub>e Y<sub>2</sub>**

Luego y tiene esta ecuación :

<span style="color: rgb(0, 0, 0);">[![2025-01-08 20_03_40-Equation Editor for online mathematics - create, integrate and download.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-08-20-03-40-equation-editor-for-online-mathematics-create-integrate-and-download.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-08-20-03-40-equation-editor-for-online-mathematics-create-integrate-and-download.png)</span>

<span style="color: rgb(0, 0, 0);">donde m es </span>

<span style="color: rgb(0, 0, 0);">[![2025-01-08 20_05_18-Equation Editor for online mathematics - create, integrate and download.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-08-20-05-18-equation-editor-for-online-mathematics-create-integrate-and-download.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-08-20-05-18-equation-editor-for-online-mathematics-create-integrate-and-download.png)</span>

<span style="color: rgb(0, 0, 0);">Gráficamente </span>

<span style="color: rgb(0, 0, 0);">[![2025-01-08 20_07_29-ecuación de una recta - Buscar con Google.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-08-20-07-29-ecuacion-de-una-recta-buscar-con-google.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-08-20-07-29-ecuacion-de-una-recta-buscar-con-google.png)</span>

##### <span style="color: rgb(22, 145, 121);">**¿Una hoja de cálculo para poder hacer esos cálculos?**</span>

<span style="color: rgb(0, 0, 0);">Sí, claro, en este enlace [https://docs.google.com/spreadsheets/d/1qNbaZ2c\_H1UCNhtvp2LimfWSbaGvZLVl5gJr9Wu0ifU/edit?usp=sharing](https://docs.google.com/spreadsheets/d/1qNbaZ2c_H1UCNhtvp2LimfWSbaGvZLVl5gJr9Wu0ifU/edit?usp=sharing) dale a descargar</span>

<span style="color: rgb(0, 0, 0);">Rellena las casillas amarillas, y en las naranjas tienes el resultado de m y n</span>

<span style="color: rgb(0, 0, 0);">[![2025-07-01 19_26_48-MAPEO - Hojas de cálculo de Google.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-19-26-48-mapeo-hojas-de-calculo-de-google.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-19-26-48-mapeo-hojas-de-calculo-de-google.png)</span>

##### <span style="color: rgb(22, 145, 121);">**¿Me lo puedes hacer para cada situación anterior?**</span>

<span style="color: rgb(0, 0, 0);">Si claro:</span>

<p class="callout info">{{@12749#bkmrk-queremos-leer-un-val}}</p>

- Límites de las variables : 
    - X de 0-1023
    - Y de 0-255
- Con la instrucción map : Y = map( X, 0, 1023, 0, 255);
- Sin la instrucción map Y = 025 \* X pues 255/1023 = 0.25 también podemos escribir Y = X/4

<p class="callout info">{{@12749#bkmrk-%C2%A0}}</p>

- Límites de las variables : 
    - X de 0-1023
    - Y de 0-5
- Con la instrucción map : Y = map( X, 0, 1023, 0, 5);
- Sin la instrucción map Y = 0.0048 \* X pues 5/1023 = 0.0048 o también podemos escribir Y = X/204 que queda mejor pues 1023/5=204 aprox.

<p class="callout info">{{@12749#bkmrk-queremos-leer-el-val}}</p>

- Límites de las variables : 
    - X de 917-1023
    - Y de 0-255
- Con la instrucción map : Y = map( X, 917, 1023, 0, 255);
- Sin la instrucción map Y = 2.4 \* X pues 255/(1023-917) = 2.4

<p class="callout info">{{@12749#bkmrk-situacion-d-%3A-querem}}</p>

- EJEX 
    - Límites de las variables : 
        - potx de 0-1023
        - ejex de -220 a +220
    - Con la instrucción map : ejex = map( potx, 0, 1023, -220, 220);
    - Sin la instrucción map ejex =-220 + 0.43\*potx pues (220-(-220))/1023=0.43
- EJEY 
    - Límites de las variables : 
        - poty de 0-1023
        - ejey de -180 a +180
    - Con la instrucción map : ejey = map( poty, 0, 1023, -180, 180);
    - Sin la instrucción map ejey =-180 + 0.35\*poty pues (180-(-180))/1023=0.35

<p class="callout info">{{@12749#bkmrk-situacion-e%3A-%C3%8Ddem-pe}}</p>

- EJEX 
    - Límites de las variables : 
        - acelerómetro acel de 250-500
        - ejex de -220 a +220
    - Con la instrucción map : ejex = map( acel, 250, 500, -220, 220);
    - Sin la instrucción map ejex =-220 + 1.76\*(acel-250) pues (220-(-220))/(500-250)=1.76
- EJEY 
    - Límites de las variables : 
        - acelerómetro acel de 250-500
        - ejey de -180 a +180
    - Con la instrucción map : ejey = map( acel, 250 500, -180, 180);
    - Sin la instrucción map ejey =-180 + 1.44\*(acel-250) pues (180-(-180))/(500-250)=1.44

<p class="callout info">{{@12749#bkmrk-situacion-f-%3A-querem}}</p>

- Límites de las variables : 
    - X de 0-1023
    - Y de 0-180
- Con la instrucción map : Y = map( X, 0, 1023, 0, 180);
- Sin la instrucción map Y = 0.17\* X pues 180/1023 = 0.17 también podemos escribir Y = X/5.7 pues 1023/180=5.7

<p class="callout info">{{@12749#bkmrk-situacion-g-%3A-idem-q}}</p>

- Límites de las variables : 
    - X de 0-65535
    - Y de 0-180
- Con la instrucción map : Y = map( X, 0, 65535, 0, 180);
- Sin la instrucción map Y = 0.00274\* X pues 180/65535 = 0.00274 pero es más cómodo al revés Y = X/364 pues 65535/180=364