exercice base roulante

This commit is contained in:
unknown
2025-12-03 13:54:12 +01:00
commit dac9e3acd9
4 changed files with 204 additions and 0 deletions

72
tests/logique_moteur.py Normal file
View File

@@ -0,0 +1,72 @@
# logique_moteur_eleve.py
#
# Objectif : écrire la logique de contrôle d'un moteur DC
# à partir d'une consigne de vitesse en pourcentage
#
# À compléter zones marquées avec ____ ou TODO
def calcul_signaux_moteur(vitesse_pourcent, pwm_max=1023):
"""
Entrée :
vitesse_pourcent : nombre entre -100 et 100
> 0 -> marche avant
< 0 -> marche arrière
= 0 -> arrêt
Sortie :
dictionnaire avec :
"in1" : 0 ou 1 (sens)
"in2" : 0 ou 1 (sens)
"pwm" : valeur entre 0 et pwm_max
"""
# 1) Limiter la vitesse entre -100 et 100
# Si vitesse_pourcent > 100, on force à 100
# Si vitesse_pourcent < -100, on force à -100
# TODO : compléter les conditions
if vitesse_pourcent > 100:
vitesse_pourcent = 100
if vitesse_pourcent < -100:
vitesse_pourcent = - 100
# 2) Cas arrêt : si vitesse_pourcent == 0
# -> in1 = 0, in2 = 0, pwm = 0
# TODO : compléter la condition et le retour
if vitesse_pourcent == 0:
return {
"in1": 0,
"in2": 0,
"pwm": 0
}
# 3) Détermination du sens
# Si vitesse_pourcent > 0 : avant (in1=1, in2=0)
# Si vitesse_pourcent < 0 : arrière (in1=0, in2=1)
# amplitude = valeur absolue de vitesse_pourcent
if vitesse_pourcent > 0:
in1 = __1__
in2 = __0__
amplitude = 100 # ici, amplitude = vitesse_pourcent
else:
in1 = _0___
in2 = _1___
amplitude = -100 # ici, amplitude = -vitesse_pourcent
# 4) Conversion pourcentage -> PWM
# pwm = pwm_max * (amplitude / 100)
# TODO : compléter le calcul
pwm = int( pwm_max * (__10000 / 100) )
# 5) Retour des valeurs à appliquer sur le pont en H
return {
"in1": in1,
"in2": in2,
"pwm": pwm
}