36 lines
816 B
Python
36 lines
816 B
Python
def calc_signal_moteur(vitesse_pourcent, pwm_max=1023):
|
|
|
|
# 1) On limite la valeur entre -100 et 100
|
|
if vitesse_pourcent > 100:
|
|
vitesse_pourcent = 100
|
|
if vitesse_pourcent < -100:
|
|
vitesse_pourcent = -100
|
|
|
|
# 2) Cas arrêt
|
|
if vitesse_pourcent == 0:
|
|
return {
|
|
"in1": 0,
|
|
"in2": 0,
|
|
"pwm": 0
|
|
}
|
|
|
|
# 3) Détermination du sens
|
|
if vitesse_pourcent > 0:
|
|
in1 = 1 # avant
|
|
in2 = 0
|
|
amplitude = vitesse_pourcent
|
|
else:
|
|
in1 = 0 # arrière
|
|
in2 = 1
|
|
amplitude = -vitesse_pourcent # valeur positive
|
|
|
|
# 4) Conversion pourcentage -> PWM
|
|
pwm = int(pwm_max * (amplitude / 100))
|
|
|
|
# 5) On renvoie les signaux à appliquer
|
|
return {
|
|
"in1": in1,
|
|
"in2": in2,
|
|
"pwm": pwm
|
|
}
|