add exos HCSR04
This commit is contained in:
38
tests/logique_hcsr04.py
Normal file
38
tests/logique_hcsr04.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# Objectif : compléter la fonction de calcul de distance du HC-SR04.
|
||||||
|
# Le capteur renvoie un temps d'écho en microsecondes.
|
||||||
|
# Vous devez convertir ce temps en distance en centimètres.
|
||||||
|
#
|
||||||
|
# Zones à compléter : ____ ou "TODO".
|
||||||
|
|
||||||
|
|
||||||
|
def calcul_distance_cm(temps_echo_us):
|
||||||
|
|
||||||
|
"""
|
||||||
|
temps_echo_us : durée du signal echo en microsecondes
|
||||||
|
Retour :
|
||||||
|
- distance en centimètres (float)
|
||||||
|
- ou None si le temps est invalide
|
||||||
|
"""
|
||||||
|
|
||||||
|
# 1) Gérer les cas invalides :
|
||||||
|
# - temps_echo_us est None
|
||||||
|
# - temps_echo_us <= 0
|
||||||
|
# TODO : compléter la condition
|
||||||
|
|
||||||
|
if ____ or ____:
|
||||||
|
return ____
|
||||||
|
|
||||||
|
# 2) Convertir le temps en secondes :
|
||||||
|
# 1 seconde = 1 000 000 microsecondes
|
||||||
|
# TODO : compléter la conversion
|
||||||
|
|
||||||
|
temps_s = temps_echo_us / ____
|
||||||
|
|
||||||
|
# 3) Calculer la distance :
|
||||||
|
# distance(cm) = (temps_s * vitesse_du_son_cm_par_s) / 2
|
||||||
|
# vitesse du son ≈ 34300 cm/s
|
||||||
|
# TODO : compléter la formule
|
||||||
|
|
||||||
|
distance_cm = (____ * ____) / ____
|
||||||
|
|
||||||
|
return distance_cm
|
||||||
37
tests/test_logique_hcsr04.py
Normal file
37
tests/test_logique_hcsr04.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Objectif : écrire des tests unitaires pour vérifier calcul_distance_cm().
|
||||||
|
# Aucune réponse n'est fournie. Les valeurs exactes doivent être déduites
|
||||||
|
# de la formule vue en cours.
|
||||||
|
|
||||||
|
from logique_hcsr04_eleve import calcul_distance_cm
|
||||||
|
|
||||||
|
|
||||||
|
def test():
|
||||||
|
|
||||||
|
# Test 1 : temps invalide = 0
|
||||||
|
dist = calcul_distance_cm(0)
|
||||||
|
assert dist is ____ , "Test temps 0 : incorrect"
|
||||||
|
|
||||||
|
# Test 2 : temps négatif
|
||||||
|
dist = calcul_distance_cm(-100)
|
||||||
|
assert dist is ____ , "Test temps négatif : incorrect"
|
||||||
|
|
||||||
|
# Test 3 : temps None
|
||||||
|
dist = calcul_distance_cm(None)
|
||||||
|
assert dist is ____ , "Test None : incorrect"
|
||||||
|
|
||||||
|
# Test 4 : temps court (quelques centaines de microsecondes)
|
||||||
|
# Compléter avec une plage de valeurs acceptables.
|
||||||
|
dist = calcul_distance_cm(1000)
|
||||||
|
assert dist > ____ , "Test 1000us : trop petit"
|
||||||
|
assert dist < ____ , "Test 1000us : trop grand"
|
||||||
|
|
||||||
|
# Test 5 : temps plus long
|
||||||
|
dist = calcul_distance_cm(3000)
|
||||||
|
assert dist > ____ , "Test 3000us : trop petit"
|
||||||
|
assert dist < ____ , "Test 3000us : trop grand"
|
||||||
|
|
||||||
|
print("Tests HC-SR04 réussis si vous voyez ce message.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
test()
|
||||||
@@ -54,4 +54,4 @@ def test():
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
lancer_tests()
|
test()
|
||||||
|
|||||||
Reference in New Issue
Block a user