⭐⭐⭐ Uitdaging ⏱️ 25 minuten

Afstandsmeter met lichtbalk

Je maakt een lichtbalk die laat zien hoe dichtbij iets is. Ver weg: geen lampjes. Hoe dichterbij, hoe meer lampjes er gaan branden. Eerst groen, dan oranje en heel dichtbij rood.

Je logt eerst even in. Daarna staat je project meteen klaar.

🧰 Wat heb je nodig?

1× Arduino UNO
1× Afstandssensor HC-SR04
1× RGB LED-ring (8 LEDs)
🔌
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 · D6 RGB LED-ring (8 LEDs) · DI
Arduino UNO · 5V RGB LED-ring (8 LEDs) · 5V
Arduino UNO · GND RGB LED-ring (8 LEDs) · GND

🛠️ Zo bouw je het

  1. Sluit de HC-SR04 aan: Trig naar pin 9, Echo naar pin 10, Vcc naar 5V en Gnd naar GND.
  2. Sluit de LED-ring aan: DI naar pin 6, 5V naar 5V en GND naar GND.

💻 De code

// Afstandsmeter met lichtbalk
// Hoe dichterbij je komt, hoe meer lampjes er branden: groen, dan oranje, dan rood.

#include <Adafruit_NeoPixel.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 RING_PIN = 6;     // DI van de LED-ring op pin 6
const int AANTAL_LEDS = 8;
const int MAX_AFSTAND = 80; // Verder dan dit (in cm): alle lampjes uit

Adafruit_NeoPixel ring(AANTAL_LEDS, RING_PIN, NEO_GRB + NEO_KHZ800);

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;
  return tijd / 58;
}

void setup() {
  Serial.begin(9600);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  ring.begin();
  ring.setBrightness(40);
  ring.show();
}

void loop() {
  long afstand = meetAfstand();
  Serial.print(F("Afstand: "));
  Serial.print(afstand);
  Serial.println(F(" cm"));

  // Hoeveel lampjes moeten er branden? Dichtbij = 8, ver weg = 0
  int aantal = map(constrain(afstand, 0, MAX_AFSTAND), 0, MAX_AFSTAND, AANTAL_LEDS, 0);

  for (int i = 0; i < AANTAL_LEDS; i++) {
    if (i < aantal) {
      if (i < 3)      ring.setPixelColor(i, ring.Color(0, 255, 0));    // Groen
      else if (i < 6) ring.setPixelColor(i, ring.Color(255, 120, 0));  // Oranje
      else            ring.setPixelColor(i, ring.Color(255, 0, 0));    // Rood
    } else {
      ring.setPixelColor(i, 0);                                        // Uit
    }
  }
  ring.show();
  delay(100);
}

🧠 Wat doet de code?

  • meetAfstand() meet de afstand met de HC-SR04.
  • map() rekent de afstand om naar een aantal lampjes: 0 tot 8.
  • De eerste 3 lampjes zijn groen, de volgende 3 oranje en de laatste 2 rood.

🎯 Probeer eens…

  • Laat alle lampjes rood knipperen als je dichter dan 10 cm bent
  • Voeg de zoemer toe die piept bij rood
  • Maak de meter gevoeliger: alle lampjes aan bij 40 cm in plaats van 80 cm

🚀 Bouw dit project met Codey: open codey.online/nl/starter-kits/uno/projects/distance-light-bar en klik op MAAK DIT. Dan staan de code en het aansluitschema meteen klaar.

Je logt eerst even in. Daarna staat je project meteen klaar.
⬇️ Download deze pagina als PDF 📚 Download de complete tutorial (PDF)

Codey Online is een product van OTRONIC

Bouw je Arduino- of ESP32-project met AI

Beschrijf wat je wilt bouwen. Codey Online schrijft de code, tekent het aansluitschema, compileert het en flasht je board rechtstreeks vanuit de browser.

Gratis starten