add exos HCSR04

This commit is contained in:
lnino
2025-12-03 01:53:10 +01:00
parent c778438c3b
commit 2a9a7c4691
3 changed files with 76 additions and 1 deletions

38
tests/logique_hcsr04.py Normal file
View 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

View 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()

View File

@@ -54,4 +54,4 @@ def test():
if __name__ == "__main__":
lancer_tests()
test()