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__":
|
||||
lancer_tests()
|
||||
test()
|
||||
|
||||
Reference in New Issue
Block a user