🧪 TP : Barrière de parking automatisée avec Arduino
🎯 Problématique
Comment concevoir une barrière de parking automatisée capable de :
🧩 Organisation du TP
Le TP est composé de 3 parties progressives :
🧰 Matériel
Arduino Uno / Uno R4
1 servomoteur angulaire (SG90 / MG90S)
(option) 1 servo rotation continue
1 écran LCD 16×2 (I2C) ou OLED
1 capteur ultrason HC-SR04
4 boutons poussoirs
Breadboard + fils
🔵 PARTIE A — Servomoteurs
🎯 Objectif
Découvrir le fonctionnement des servomoteurs et piloter une barrière.
A1 — Observation
❓ Questions
Quelle est la différence entre :
Quel type de servo est adapté à une barrière ? Pourquoi ?
A2 — Commande simple
🛠 Travail demandé
Programmer le servo pour :
se placer à 0°
puis à 90°
puis revenir à 0°
A3 — Mouvement progressif
🛠 Travail demandé
Réaliser une ouverture progressive :
❓ Question
Pourquoi ce mouvement est-il plus réaliste ?
A4 — Commande par bouton
🛠 Travail demandé
Appui bouton → ouvrir
Relâchement → fermer
🟢 PARTIE B — Affichage écran
🎯 Objectif
Afficher des informations à l’utilisateur.
B1 — Message simple
🛠 Travail demandé
B2 — Interaction
🛠 Travail demandé
B3 — Messages système
🛠 Travail demandé
Afficher selon les cas :
Attente vehicule
Bienvenue
Entrez code
Code correct
Acces refuse
Barriere ouverte
🔴 PARTIE C — Système complet
🎯 Objectif
Créer une barrière automatisée complète.
C1 — Détection véhicule
🛠 Travail demandé
Utiliser le capteur ultrason :
❓ Question
Quel est le rôle du seuil ?
C2 — Code binaire pondéré
🎯 Principe
| Bouton | Poids |
| B3 | 8 |
| B2 | 4 |
| B1 | 2 |
| B0 | 1 |
🛠 Travail demandé
Lire les boutons et calculer la valeur.
✏️ Exercices
Quels boutons pour :
Si B2 et B1 sont appuyés → valeur = ?
C3 — Validation du code
🛠 Travail demandé
Code attendu = 9
Si correct :
afficher “Code correct”
ouvrir la barrière
Sinon :
C4 — Ouverture barrière
🛠 Travail demandé
Créer la séquence :
ouverture progressive
attente
fermeture progressive
🔄 Fonctionnement global
🧠 Algorithme
Initialisation
Barrière fermée
Attente véhicule
Détection
Affichage “Bienvenue”
Saisie du code
Vérification
Si OK → ouverture
Sinon → refus
Retour attente
🧱 Structuration du programme
🛠 Fonctions conseillées
ouvrirBarriere()
fermerBarriere()
lireDistance()
lireCode()
afficherMessage()
✅ Critères de réussite
⭐ Pour aller plus loin
⚡ Extension — Programmation par interruptions
🎯 Objectif
Découvrir une autre manière de programmer :
🧠 Rappel
Jusqu’à présent, le programme fonctionne ainsi :
👉 On appelle cela du scrutation (polling)
⚠️ Limites du polling
💡 Principe des interruptions
Une interruption permet :
d’arrêter le programme principal
d’exécuter immédiatement une fonction
puis de reprendre le programme
👉 Exemple :
appui bouton
détection capteur
signal externe
🛠 Activité 1 — Bouton avec interruption
Objectif
Déclencher l’ouverture de la barrière sans scrutation
Travail demandé
Résultat attendu
🛠 Activité 2 — Variable de signal
Principe
⚠️ Dans une interruption, on évite les actions longues
👉 On utilise une variable “flag”
Travail demandé
créer une variable booléenne (ex : demandeOuverture)
l’activer dans l’interruption
traiter l’action dans loop()
🛠 Activité 3 — Capteur ultrason amélioré
Objectif
Réagir rapidement à l’arrivée d’un véhicule
Travail demandé
⚠️ Bonnes pratiques
Dans une fonction d’interruption :
❌ pas de delay()
❌ pas d’affichage écran
❌ pas de calcul lourd
🔬 Comparaison
| Méthode | Avantages | Inconvénients |
| Polling | simple | lent, peu réactif |
| Interruption | rapide, efficace | plus complexe |
🧠 Analyse
❓ Questions
Quelle méthode est la plus réactive ?
Pourquoi ne met-on pas tout le code dans l’interruption ?
Quel est le rôle de la variable “flag” ?
⭐ Pour aller plus loin
gérer plusieurs interruptions
anti-rebond logiciel
combinaison avec millis()
machine à états + interruptions
🎯 Conclusion
Un système embarqué performant :
👉 C’est le principe des systèmes industriels modernes