add TP
This commit is contained in:
141
README.md
141
README.md
@@ -1 +1,140 @@
|
|||||||
# Code a trous vous allez voir c'est cool :D
|
# TP Tests Unitaires – Moteur DC & Capteur HC-SR04
|
||||||
|
|
||||||
|
Niveau : débutant – MicroPython – ESP32
|
||||||
|
|
||||||
|
## Objectifs du TP
|
||||||
|
|
||||||
|
Comprendre ce qu’est un test unitaire.
|
||||||
|
|
||||||
|
Apprendre à séparer la logique du programme du pilotage matériel.
|
||||||
|
|
||||||
|
Créer une fonction simple représentant la logique d’un moteur DC ou d’un capteur ultrason.
|
||||||
|
|
||||||
|
Écrire des tests unitaires avec assert en MicroPython.
|
||||||
|
|
||||||
|
## TP1 — Tests unitaires d’un moteur DC
|
||||||
|
### Contexte
|
||||||
|
|
||||||
|
Un moteur DC piloté via un pont en H utilise :
|
||||||
|
|
||||||
|
deux signaux logiques in1, in2 pour choisir le sens,
|
||||||
|
|
||||||
|
un signal PWM pour la vitesse.
|
||||||
|
|
||||||
|
Dans ce TP, vous n’allez pas piloter un vrai moteur.
|
||||||
|
Vous allez tester la logique qui décide des valeurs à envoyer.
|
||||||
|
|
||||||
|
### Énoncé
|
||||||
|
|
||||||
|
Vous devez écrire une fonction :
|
||||||
|
|
||||||
|
calcul_signaux_moteur(vitesse_pourcent, pwm_max=1023)
|
||||||
|
|
||||||
|
|
||||||
|
Elle reçoit une vitesse en pourcentage, entre -100 et +100, et doit retourner un dictionnaire contenant :
|
||||||
|
|
||||||
|
{
|
||||||
|
"in1": ...,
|
||||||
|
"in2": ...,
|
||||||
|
"pwm": ...
|
||||||
|
}
|
||||||
|
|
||||||
|
La logique à implémenter :
|
||||||
|
[img logique]( img/image.png )
|
||||||
|
|
||||||
|
#### Calcul du PWM :
|
||||||
|
|
||||||
|
pwm = pwm_max * (abs(vitesse) / 100)
|
||||||
|
|
||||||
|
Exemple (si pwm_max = 1000) :
|
||||||
|
|
||||||
|
vitesse = 50 → pwm = 500
|
||||||
|
|
||||||
|
vitesse = -100 → pwm = 1000
|
||||||
|
|
||||||
|
vitesse = 200 → pwm = 1000 (clamp)
|
||||||
|
|
||||||
|
## Vous devez faire :
|
||||||
|
|
||||||
|
Compléter le fichier :
|
||||||
|
logique_moteur_eleve.py
|
||||||
|
(qui contient des zones ____ à remplir)
|
||||||
|
|
||||||
|
Puis compléter les tests dans :
|
||||||
|
test_logique_moteur_eleve.py
|
||||||
|
|
||||||
|
Les tests vérifieront automatiquement :
|
||||||
|
|
||||||
|
l’arrêt,
|
||||||
|
|
||||||
|
la marche avant,
|
||||||
|
|
||||||
|
la marche arrière,
|
||||||
|
|
||||||
|
le PWM proportionnel,
|
||||||
|
|
||||||
|
la saturation des valeurs extrêmes.
|
||||||
|
|
||||||
|
## TP2 — Tests unitaires du capteur HC-SR04
|
||||||
|
### Contexte
|
||||||
|
|
||||||
|
Le HC-SR04 mesure une distance grâce à l’écho d’un ultrason.
|
||||||
|
|
||||||
|
Il renvoie un temps d’écho (en microsecondes), et la distance se calcule via :
|
||||||
|
|
||||||
|
distance_cm = (temps_echo_microsecondes × 0.0343) / 2
|
||||||
|
|
||||||
|
|
||||||
|
Dans ce TP, vous n’allez pas utiliser de vrai capteur.
|
||||||
|
Vous allez tester la fonction de calcul seulement.
|
||||||
|
|
||||||
|
### Énoncé
|
||||||
|
|
||||||
|
Vous devez écrire une fonction :
|
||||||
|
|
||||||
|
calcul_distance_cm(temps_echo_us)
|
||||||
|
|
||||||
|
|
||||||
|
Elle doit :
|
||||||
|
|
||||||
|
1. Retourner None si :
|
||||||
|
|
||||||
|
temps_echo_us est None
|
||||||
|
|
||||||
|
ou ≤ 0
|
||||||
|
|
||||||
|
2. Sinon :
|
||||||
|
|
||||||
|
convertir les microsecondes en secondes
|
||||||
|
|
||||||
|
appliquer le calcul de distance
|
||||||
|
|
||||||
|
retourner la distance en centimètres (float)
|
||||||
|
|
||||||
|
Aides :
|
||||||
|
|
||||||
|
1 seconde = 1 000 000 microsecondes
|
||||||
|
|
||||||
|
vitesse du son = 343 m/s = 34300 cm/s
|
||||||
|
|
||||||
|
Exemple :
|
||||||
|
|
||||||
|
1000 µs → environ 17.15 cm
|
||||||
|
|
||||||
|
3000 µs → environ 51.45 cm
|
||||||
|
|
||||||
|
## Vous devez faire :
|
||||||
|
|
||||||
|
Compléter le fichier :
|
||||||
|
logique_hcsr04_eleve.py
|
||||||
|
|
||||||
|
Compléter les tests dans :
|
||||||
|
test_logique_hcsr04_eleve.py
|
||||||
|
|
||||||
|
Les tests vérifieront :
|
||||||
|
|
||||||
|
les entrées invalides,
|
||||||
|
|
||||||
|
les distances calculées,
|
||||||
|
|
||||||
|
la cohérence des valeurs retournées.
|
||||||
Reference in New Issue
Block a user