⭐⭐⭐ Uitdaging
⏱️ 30 minuten
Parkeersensor luxe
De luxe versie van de parkeersensor! Hij piept sneller als je dichterbij komt, en het OLED-scherm laat de afstand zien in centimeters. Met een balkje dat langer wordt als je dichterbij komt.
🧰 Wat heb je nodig?
🔌
USB-kabel + Jumperkabels🗺️ Aansluitschema
Volg de draden van de Arduino naar elk onderdeel. De kleuren van de draden mag je zelf kiezen.
| Van | Naar |
|---|---|
Arduino UNO · D9 |
Afstandssensor HC-SR04 · Trig |
Arduino UNO · D10 |
Afstandssensor HC-SR04 · Echo |
Arduino UNO · 5V |
Afstandssensor HC-SR04 · Vcc |
Arduino UNO · GND |
Afstandssensor HC-SR04 · Gnd |
Arduino UNO · D8 |
Actieve zoemer · S |
Arduino UNO · 5V |
Actieve zoemer · + |
Arduino UNO · GND |
Actieve zoemer · - |
Arduino UNO · A4 |
OLED-schermpje 0,91" · SDA |
Arduino UNO · A5 |
OLED-schermpje 0,91" · SCL |
Arduino UNO · 5V |
OLED-schermpje 0,91" · VCC |
Arduino UNO · GND |
OLED-schermpje 0,91" · GND |
🛠️ Zo bouw je het
- Sluit de HC-SR04 aan: Trig naar pin 9, Echo naar pin 10, Vcc naar 5V en Gnd naar GND.
- Sluit de zoemer aan: S naar pin 8, + naar 5V en − naar GND.
- Sluit het OLED-scherm aan: SDA naar A4, SCL naar A5, VCC naar 5V en GND naar GND.
- Drie onderdelen hebben 5V en GND nodig. Gebruik de + en − strips van je breadboard.
💻 De code
// Parkeersensor luxe
// Net als de gewone parkeersensor, maar nu zie je de afstand ook op het OLED-scherm.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
const int TRIG_PIN = 9; // Trig van de HC-SR04 op pin 9
const int ECHO_PIN = 10; // Echo van de HC-SR04 op pin 10
const int ZOEMER_PIN = 8; // S van de zoemer op pin 8
Adafruit_SSD1306 scherm(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
// Meet de afstand in centimeters
long meetAfstand() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long tijd = pulseIn(ECHO_PIN, HIGH, 30000);
if (tijd == 0) return 999; // Geen echo: niets in de buurt
return tijd / 58;
}
// Zet de afstand groot op het scherm, met een balkje eronder
void toonAfstand(long afstand) {
scherm.clearDisplay();
scherm.setTextSize(2);
scherm.setCursor(0, 0);
if (afstand >= 999) {
scherm.print(F("---"));
} else {
scherm.print(afstand);
scherm.print(F(" cm"));
}
// Balkje: hoe dichterbij, hoe langer
int lengte = map(constrain(afstand, 0, 100), 0, 100, 128, 0);
scherm.fillRect(0, 24, lengte, 8, SSD1306_WHITE);
scherm.display();
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(ZOEMER_PIN, OUTPUT);
scherm.begin(SSD1306_SWITCHCAPVCC, 0x3C);
scherm.setTextColor(SSD1306_WHITE);
}
void loop() {
long afstand = meetAfstand();
toonAfstand(afstand);
if (afstand < 5) {
digitalWrite(ZOEMER_PIN, HIGH); // Heel dichtbij: één lange toon
delay(100);
} else if (afstand < 50) {
digitalWrite(ZOEMER_PIN, HIGH); // Korte piep
delay(50);
digitalWrite(ZOEMER_PIN, LOW);
delay(afstand * 10); // Dichterbij = sneller piepen
} else {
digitalWrite(ZOEMER_PIN, LOW);
delay(100);
}
}
🧠 Wat doet de code?
meetAfstand()meet de afstand in centimeters met de HC-SR04.toonAfstand()zet het getal groot op het scherm en tekent een balkje metfillRect().- De zoemer piept sneller naarmate de afstand kleiner wordt.
🎯 Probeer eens…
- Laat "STOP!" op het scherm zien als je dichter dan 5 cm bent
- Laat de afstand in meters zien als iets verder dan 1 meter weg is
- Voeg de LED-ring toe die van groen naar rood kleurt
🚀 Bouw dit project met Codey: open codey.online/nl/starter-kits/uno/projects/parking-sensor-deluxe en klik op MAAK DIT. Dan staan de code en het aansluitschema meteen klaar.
Codey Online is een product van OTRONIC