⭐⭐⭐ Herausforderung ⏱️ 25 Minuten

Abstandsmesser mit Lichtbalken

Du baust einen Lichtbalken. Er zeigt, wie nah etwas ist. Weit weg: keine Lämpchen. Je näher es kommt, desto mehr Lämpchen leuchten. Erst grün, dann orange und ganz nah rot.

Du meldest dich kurz an. Danach ist dein Projekt sofort bereit.

🧰 Was brauchst du?

1× Arduino UNO
1× Abstandssensor HC-SR04
1× RGB-LED-Ring (8 LEDs)
🔌
USB-Kabel + Jumperkabel

🗺️ Schaltplan

Folge den Drähten vom Arduino zu jedem Teil. Die Farben der Drähte darfst du selbst wählen.

Von Nach
Arduino UNO · D9 Abstandssensor HC-SR04 · Trig
Arduino UNO · D10 Abstandssensor HC-SR04 · Echo
Arduino UNO · 5V Abstandssensor HC-SR04 · Vcc
Arduino UNO · GND Abstandssensor 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

🛠️ So baust du es

  1. Schließe den HC-SR04 an: Trig an Pin 9, Echo an Pin 10, Vcc an 5V und Gnd an GND.
  2. Schließe den LED-Ring an: DI an Pin 6, 5V an 5V und GND an GND.

💻 Der Code

// Abstandsmesser mit Lichtbalken
// Je näher du kommst, desto mehr Lämpchen leuchten: grün, dann orange, dann rot.

#include <Adafruit_NeoPixel.h>

const int TRIG_PIN = 9;     // Trig des HC-SR04 an Pin 9
const int ECHO_PIN = 10;    // Echo des HC-SR04 an Pin 10
const int RING_PIN = 6;     // DI des LED-Rings an Pin 6
const int ANZAHL_LEDS = 8;
const int MAX_ABSTAND = 80; // Weiter als das (in cm): alle Lämpchen aus

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

long missAbstand() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  long zeit = pulseIn(ECHO_PIN, HIGH, 30000);
  if (zeit == 0) return 999;
  return zeit / 58;
}

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

void loop() {
  long abstand = missAbstand();
  Serial.print(F("Abstand: "));
  Serial.print(abstand);
  Serial.println(F(" cm"));

  // Wie viele Lämpchen sollen leuchten? Nah = 8, weit weg = 0
  int anzahl = map(constrain(abstand, 0, MAX_ABSTAND), 0, MAX_ABSTAND, ANZAHL_LEDS, 0);

  for (int i = 0; i < ANZAHL_LEDS; i++) {
    if (i < anzahl) {
      if (i < 3)      ring.setPixelColor(i, ring.Color(0, 255, 0));    // Grün
      else if (i < 6) ring.setPixelColor(i, ring.Color(255, 120, 0));  // Orange
      else            ring.setPixelColor(i, ring.Color(255, 0, 0));    // Rot
    } else {
      ring.setPixelColor(i, 0);                                        // Aus
    }
  }
  ring.show();
  delay(100);
}

🧠 Was macht der Code?

  • missAbstand() misst den Abstand mit dem HC-SR04.
  • map() rechnet den Abstand in eine Anzahl Lämpchen um: 0 bis 8.
  • Die ersten 3 Lämpchen sind grün, die nächsten 3 orange und die letzten 2 rot.

🎯 Probier mal …

  • Lass alle Lämpchen rot blinken, wenn du näher als 10 cm bist
  • Füge den Summer hinzu, der bei Rot piept
  • Mach den Messer empfindlicher: alle Lämpchen an bei 40 cm statt bei 80 cm

🚀 Baue dieses Projekt mit Codey: Öffne codey.online/de/starter-kits/uno/projects/distance-light-bar und klicke auf BAU DAS. Dann sind der Code und der Schaltplan sofort bereit.

Du meldest dich kurz an. Danach ist dein Projekt sofort bereit.
⬇️ Diese Seite als PDF herunterladen 📚 Das komplette Tutorial herunterladen (PDF)

Codey Online ist ein Produkt von OTRONIC

Bau dein Arduino- oder ESP32-Projekt mit AI

Beschreib einfach, was du bauen willst. Codey Online schreibt den Code, zeichnet den Schaltplan, kompiliert alles und flasht dein Board direkt aus dem Browser.

Kostenlos starten