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:

    será el valor de entrada que tiene unos valores límites X1 e X2  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, 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 :

      será el valor de entrada que tiene unos valores límites X1 e X2  Y es la variable de salida que queremos y que tiene otros valores límites Ye Y2

      Luego y tiene esta ecuación :

      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