add test folder + exos DC motor

This commit is contained in:
lnino
2025-12-03 01:23:12 +01:00
parent c29643d948
commit c778438c3b
2 changed files with 129 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 > ____:
vitesse_pourcent = ____
if vitesse_pourcent < ____:
vitesse_pourcent = ____
# 2) Cas arrêt : si vitesse_pourcent == 0
# -> in1 = 0, in2 = 0, pwm = 0
# TODO : compléter la condition et le retour
if ____ == 0:
return {
"in1": ____,
"in2": ____,
"pwm": ____
}
# 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 = ____
in2 = ____
amplitude = ____ # ici, amplitude = vitesse_pourcent
else:
in1 = ____
in2 = ____
amplitude = ____ # ici, amplitude = -vitesse_pourcent
# 4) Conversion pourcentage -> PWM
# pwm = pwm_max * (amplitude / 100)
# TODO : compléter le calcul
pwm = int( pwm_max * (____ / 100) )
# 5) Retour des valeurs à appliquer sur le pont en H
return {
"in1": in1,
"in2": in2,
"pwm": pwm
}