# 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 > __110__: vitesse_pourcent = _100___ if vitesse_pourcent < _-99___: 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 = __> 0__ # ici, amplitude = vitesse_pourcent else: in1 = __0__ in2 = ___1_ amplitude = < 0____ # ici, amplitude = -vitesse_pourcent # 4) Conversion pourcentage -> PWM # pwm = pwm_max * (amplitude / 100) # TODO : compléter le calcul pwm = int( pwm_max * (_10___ / 100) ) # 5) Retour des valeurs à appliquer sur le pont en H return { "in1": in1, "in2": in2, "pwm": pwm }