⭐⭐⭐ Défi
⏱️ 30 minutes
Capteur de parking luxe
La version luxe du capteur de parking ! Il bipe plus vite quand tu t’approches. Et l’écran OLED montre la distance en centimètres. Avec une petite barre qui devient plus longue quand tu t’approches.
🧰 De quoi as-tu besoin ?
🔌
Câble USB + Câbles jumper🗺️ Schéma de branchement
Suis les fils de l’Arduino vers chaque pièce. Tu peux choisir toi-même les couleurs des fils.
| De | Vers |
|---|---|
Arduino UNO · D9 |
Capteur de distance HC-SR04 · Trig |
Arduino UNO · D10 |
Capteur de distance HC-SR04 · Echo |
Arduino UNO · 5V |
Capteur de distance HC-SR04 · Vcc |
Arduino UNO · GND |
Capteur de distance HC-SR04 · Gnd |
Arduino UNO · D8 |
Buzzer actif · S |
Arduino UNO · 5V |
Buzzer actif · + |
Arduino UNO · GND |
Buzzer actif · - |
Arduino UNO · A4 |
Petit écran OLED 0,91" · SDA |
Arduino UNO · A5 |
Petit écran OLED 0,91" · SCL |
Arduino UNO · 5V |
Petit écran OLED 0,91" · VCC |
Arduino UNO · GND |
Petit écran OLED 0,91" · GND |
🛠️ Voici comment le construire
- Branche le HC-SR04 : Trig vers la broche 9, Echo vers la broche 10, Vcc vers 5V et Gnd vers GND.
- Branche le buzzer : S vers la broche 8, + vers 5V et − vers GND.
- Branche l’écran OLED : SDA vers A4, SCL vers A5, VCC vers 5V et GND vers GND.
- Trois pièces ont besoin de 5V et de GND. Utilise les bandes + et − de ta breadboard.
💻 Le code
// Capteur de parking luxe
// Comme le capteur de parking normal, mais maintenant tu vois aussi la distance sur l’écran OLED.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
const int TRIG_PIN = 9; // Trig du HC-SR04 sur la broche 9
const int ECHO_PIN = 10; // Echo du HC-SR04 sur la broche 10
const int BUZZER_PIN = 8; // S du buzzer sur la broche 8
Adafruit_SSD1306 ecran(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
// Mesure la distance en centimètres
long mesurerDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long temps = pulseIn(ECHO_PIN, HIGH, 30000);
if (temps == 0) return 999; // Pas d’écho : rien tout près
return temps / 58;
}
// Met la distance en grand sur l’écran, avec une petite barre dessous
void afficherDistance(long distance) {
ecran.clearDisplay();
ecran.setTextSize(2);
ecran.setCursor(0, 0);
if (distance >= 999) {
ecran.print(F("---"));
} else {
ecran.print(distance);
ecran.print(F(" cm"));
}
// Petite barre : plus c’est près, plus elle est longue
int longueur = map(constrain(distance, 0, 100), 0, 100, 128, 0);
ecran.fillRect(0, 24, longueur, 8, SSD1306_WHITE);
ecran.display();
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
ecran.begin(SSD1306_SWITCHCAPVCC, 0x3C);
ecran.setTextColor(SSD1306_WHITE);
}
void loop() {
long distance = mesurerDistance();
afficherDistance(distance);
if (distance < 5) {
digitalWrite(BUZZER_PIN, HIGH); // Très près : un long son
delay(100);
} else if (distance < 50) {
digitalWrite(BUZZER_PIN, HIGH); // Petit bip court
delay(50);
digitalWrite(BUZZER_PIN, LOW);
delay(distance * 10); // Plus près = bips plus vite
} else {
digitalWrite(BUZZER_PIN, LOW);
delay(100);
}
}
🧠 Que fait le code ?
mesurerDistance()mesure la distance en centimètres avec le HC-SR04.afficherDistance()met le nombre en grand sur l’écran et dessine une petite barre avecfillRect().- Le buzzer bipe plus vite quand la distance devient plus petite.
🎯 Essaie un peu…
- Affiche "STOP!" sur l’écran si tu es à moins de 5 cm
- Affiche la distance en mètres si quelque chose est à plus de 1 mètre
- Ajoute l’anneau LED qui passe du vert au rouge
🚀 Construis ce projet avec Codey : ouvre codey.online/fr/starter-kits/uno/projects/parking-sensor-deluxe et clique sur FAIS ÇA. Alors le code et le schéma de branchement sont tout de suite prêts.
Codey Online est un produit de OTRONIC