# 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 }