commit 4790175b7ff658c96bcead682c371c13140192cd Author: lnino Date: Wed Dec 3 01:04:28 2025 +0100 testfile diff --git a/testfile b/testfile new file mode 100644 index 0000000..e69de29 diff --git a/tests/logique_moteurDC.py b/tests/logique_moteurDC.py new file mode 100644 index 0000000..cb7a642 --- /dev/null +++ b/tests/logique_moteurDC.py @@ -0,0 +1,35 @@ +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 + } diff --git a/tests/test_moteurDC.py b/tests/test_moteurDC.py new file mode 100644 index 0000000..7d2603b --- /dev/null +++ b/tests/test_moteurDC.py @@ -0,0 +1,47 @@ +from logique_moteurDC import calc_signal_moteur + +def lancer_tests(): + # On prend un pwm_max simple pour vérifier : 1000 + pwm_max = 1000 + + # Test 1 : arrêt + sortie = calc_signal_moteur(0, pwm_max) + assert sortie["in1"] == 0 and sortie["in2"] == 0 and sortie["pwm"] == 0, \ + "Test arrêt : échec" + + # Test 2 : 100% avant + sortie = calc_signal_moteur(100, pwm_max) + assert sortie["in1"] == 1 and sortie["in2"] == 0, \ + "Test avant (sens) : échec" + assert sortie["pwm"] == 1000, \ + "Test avant (PWM) : échec" + + # Test 3 : 100% arrière + sortie = calc_signal_moteur(-100, pwm_max) + assert sortie["in1"] == 0 and sortie["in2"] == 1, \ + "Test arrière (sens) : échec" + assert sortie["pwm"] == 1000, \ + "Test arrière (PWM) : échec" + + # Test 4 : valeur > 100 -> doit être clampée + sortie = calc_signal_moteur(150, pwm_max) + assert sortie["pwm"] == 1000, \ + "Test clamp >100 : échec" + + # Test 5 : valeur < -100 -> doit être clampée + sortie = calc_signal_moteur(-200, pwm_max) + assert sortie["pwm"] == 1000 and sortie["in2"] == 1, \ + "Test clamp <-100 : échec" + + # Test 6 : vitesse intermédiaire 50% avant + sortie = calc_signal_moteur(50, pwm_max) + assert sortie["in1"] == 1 and sortie["in2"] == 0, \ + "Test 50% avant (sens) : échec" + assert sortie["pwm"] == 500, \ + "Test 50% avant (PWM) : échec" + + print("Tous les tests unitaires du moteur sont PASSE !") + + +if __name__ == "__main__": + lancer_tests()