⭐⭐⭐ Wyzwanie ⏱️ 25 minut

Miernik odległości z paskiem świetlnym

Zrobisz pasek świetlny, który pokazuje, jak blisko jest coś. Daleko: nie świeci żadna lampka. Im bliżej, tym więcej lampek się zapala. Najpierw zielone, potem pomarańczowe, a bardzo blisko czerwone.

Najpierw szybko się zaloguj. Potem twój projekt będzie od razu gotowy.

🧰 Czego potrzebujesz?

1× Arduino UNO
1× Czujnik odległości HC-SR04
1× Pierścień LED RGB (8 diod LED)
🔌
Kabel USB + Przewody połączeniowe

🗺️ Schemat podłączenia

Poprowadź przewody od Arduino do każdej części. Kolory przewodów możesz wybrać samodzielnie.

Od Do
Arduino UNO · D9 Czujnik odległości HC-SR04 · Trig
Arduino UNO · D10 Czujnik odległości HC-SR04 · Echo
Arduino UNO · 5V Czujnik odległości HC-SR04 · Vcc
Arduino UNO · GND Czujnik odległości HC-SR04 · Gnd
Arduino UNO · D6 Pierścień LED RGB (8 diod LED) · DI
Arduino UNO · 5V Pierścień LED RGB (8 diod LED) · 5V
Arduino UNO · GND Pierścień LED RGB (8 diod LED) · GND

🛠️ Tak to zbudujesz

  1. Podłącz HC-SR04: Trig do pin 9, Echo do pin 10, Vcc do 5V i Gnd do GND.
  2. Podłącz pierścień LED: DI do pin 6, 5V do 5V i GND do GND.

💻 Kod

// Miernik odległości z paskiem świetlnym
// Im bliżej jesteś, tym więcej lampek świeci: zielone, potem pomarańczowe, potem czerwone.

#include <Adafruit_NeoPixel.h>

const int TRIG_PIN = 9;     // Trig z HC-SR04 na pin 9
const int ECHO_PIN = 10;    // Echo z HC-SR04 na pin 10
const int RING_PIN = 6;     // DI z pierścienia LED na pin 6
const int LICZBA_LED = 8;
const int MAX_ODLEGLOSC = 80; // Dalej niż to (w cm): wszystkie lampki zgaszone

Adafruit_NeoPixel pierscien(LICZBA_LED, RING_PIN, NEO_GRB + NEO_KHZ800);

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

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

void loop() {
  long odleglosc = zmierzOdleglosc();
  Serial.print(F("Odleglosc: "));
  Serial.print(odleglosc);
  Serial.println(F(" cm"));

  // Ile lampek ma świecić? Blisko = 8, daleko = 0
  int liczba = map(constrain(odleglosc, 0, MAX_ODLEGLOSC), 0, MAX_ODLEGLOSC, LICZBA_LED, 0);

  for (int i = 0; i < LICZBA_LED; i++) {
    if (i < liczba) {
      if (i < 3)      pierscien.setPixelColor(i, pierscien.Color(0, 255, 0));    // Zielony
      else if (i < 6) pierscien.setPixelColor(i, pierscien.Color(255, 120, 0));  // Pomarańczowy
      else            pierscien.setPixelColor(i, pierscien.Color(255, 0, 0));    // Czerwony
    } else {
      pierscien.setPixelColor(i, 0);                                        // Wyłączone
    }
  }
  pierscien.show();
  delay(100);
}

🧠 Co robi kod?

  • zmierzOdleglosc() mierzy odległość za pomocą HC-SR04.
  • map() przelicza odległość na liczbę lampek: od 0 do 8.
  • Pierwsze 3 lampki są zielone, następne 3 pomarańczowe, a ostatnie 2 czerwone.

🎯 Spróbuj…

  • Spraw, żeby wszystkie lampki migały na czerwono, gdy jesteś bliżej niż 10 cm
  • Dodaj brzęczyk, który piszczy przy czerwonym
  • Zrób czulszy miernik: wszystkie lampki włączone przy 40 cm zamiast 80 cm

🚀 Zbuduj ten projekt z Codey: otwórz codey.online/pl/starter-kits/uno/projects/distance-light-bar i kliknij ZRÓB TO. Wtedy kod i schemat podłączenia będą od razu gotowe.

Najpierw szybko się zaloguj. Potem twój projekt będzie od razu gotowy.
⬇️ Pobierz tę stronę jako PDF 📚 Pobierz cały tutorial (PDF)

Codey Online to produkt od OTRONIC

Zbuduj swój projekt Arduino lub ESP32 z pomocą AI

Opisz, co chcesz zbudować. Codey Online napisze kod, narysuje schemat połączeń, skompiluje projekt i wgra go na płytkę bezpośrednio z przeglądarki.

Zacznij za darmo