Skip to main content

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

Para entendernos en esta página,página:

    será el valor de entrada que tiene unos valores límites X1 e X2 e Y es la variable de salida que queremos y que tiene otros valores límites Ye Y2 Si en el enunciado se habla de ejes x e y pues hablaremos de ejex ejey para no liar y las entradas lo que corresponda
    ¿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 tiene de límites 0-5

    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 en una variable digital PWM entre 0 y 255

    Nota: esto 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

    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*220y 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 (acel) que va 250 a 500

    ¿Cómo se consigue mapear?
    • Si programas con código ArduinoIDE, tienes la instrucción map
    • Si no tienes map, siemprepor ejemplo, programas con bloques gráficos tipo Scratch, lo puedestienes que hacer a mano pues
      Y
    • ¿Cómo? respondeCon ala una funciónecuación de una recta :

    2025-01-08 20_03_40-Equation Editor for online mathematics - create, integrate and download.png

    donde m es 

    2025-01-08 20_05_18-Equation Editor for online mathematics - create, integrate and download.png

    Gráficamente 

    2025-01-08 20_07_29-ecuación de una recta - Buscar con Google.png

    ¿Me lo puedes hacer para cada situación anterior?

    Si claro:

    {{@12749#bkmrk-queremos-leer-un-val}}

    • 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

    {{@12749#bkmrk-%C2%A0}}

    • 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.

    {{@12749#bkmrk-queremos-leer-el-val}}

    • 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

    {{@12749#bkmrk-situacion-d-%3A-querem}}

    • 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.43potx 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.35poty pues (180-(-180))/1023=0.35

    {{@12749#bkmrk-situacion-e%3A-%C3%8Ddem-pe}}

    • 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