Mapeo ¿Qué es eso de "mapeo"? En la jerga robótica, dicho pronto y mal pero para que se entienda, mapear significa hacer un cambio de escala ¿Cuándo se dan esas situaciones? 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 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 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 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 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 SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel ) que va 250 a 500 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 SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535 ¿Cómo se consigue mapear? Si programas con código ArduinoIDE, tienes la instrucción map Si no tienes map, por ejemplo, programas con bloques gráficos tipo Scratch, lo tienes que hacer a mano ¿Cómo? Con la ecuación de una recta Para entendernos : X  será el valor de entrada que tiene unos valores límites X 1 e X 2 Y es la variable de salida que queremos y que tiene otros valores límites Y 1  e Y 2 Luego y tiene esta ecuación : donde m es  Gráficamente  ¿Una hoja de cálculo para poder hacer esos cálculos? Sí, claro, en este enlace https://docs.google.com/spreadsheets/d/1qNbaZ2c_H1UCNhtvp2LimfWSbaGvZLVl5gJr9Wu0ifU/edit?usp=sharing dale a descargar Rellena las casillas amarillas, y en las naranjas tienes el resultado de m y n ¿Me lo puedes hacer para cada situación anterior? Si claro: 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 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 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 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. 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 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 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 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 SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel ) que va 250 a 500 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 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 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 SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535 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