Python - Mapeo de Valores de C++ a Python

 
Vista:
Imágen de perfil de Zero13

Mapeo de Valores de C++ a Python

Publicado por Zero13 (7 intervenciones) el 21/07/2022 19:19:30
Hola a todos!,

Cuando programo en C++ y tengo 1 valor numérico (con su intervalo.. ej. 0 a 420) y quiero tener una salida proporcional a un nuevo intervalo lo pongo o hago así:

int servogo = map(dato, 0, 420, 0, 180);

(funcion "map" en c++: https://www.arduino.cc/reference/en/language/functions/math/map/)
map(value, fromLow, fromHigh, toLow, toHigh)

Esta función en C++ ... existe en Python o parecida ??

En este caso lo que quiero hacer es de una resolución de 0 a 420 pixels, convertirlo en 0 a 180 grados de un servomotor ;-) en C++ me funciona perfecto.. pero lo necesito en Python.

Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Zero13

Mapeo de Valores de C++ a Python

Publicado por Zero13 (7 intervenciones) el 21/07/2022 19:35:09
Ya lo he encontrado ;-) lo dejo aqui por alguien alguna vez lo necesita....

-------------- Python --------------

# Prominent Arduino map function :)

def _map(x, in_min, in_max, out_min, out_max):
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

# TEST

y = _map(25, 1, 50, 50, 1)
print(y)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Mapeo de Valores de C++ a Python

Publicado por Rolando José (43 intervenciones) el 21/07/2022 23:23:27
Bueno yo lo necesitaba para convertir puntos entre diferentes resoluciones pero l hice de forma matematica asi con unavregla de tres:
el valor x lo divido entre el rango al que pertenece, para que me de un valor proporcional entre los limites del rango y ese factor lo multiplico por el rango nuevo y adicionalmente le sumo el limite inferior del nuevo rango

x es un valor entre 0 y 420 que le corresponde un valor y proporcional entre 0 y 180.

x es a 420
como y es a 180
Y= (x/420 *180)+minrango

deberia servir algo como esto

def map(val,min,max,minnr,maxnr):
print("nuevo valor es:",(((val/(max-min))*(maxnr-minnr))+minnr))

un valor de 210 en el rango 0 a 420 seria de 90 para nuevo rango entre 0 y 180.

me preocupaba un rango negativo por ejemplo entre 90 y -90 que deberia dar 0, pero si funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar