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