#include <Adafruit_NeoPixel.h>
#include <HCSR04.h>
#define PIN 6 // NeoPixel láb
#define NUMPIXELS 29 // LED-ek száma
#define MAX_DIST_CM 40 // Az a maximális távolság, ameddig a szenzor "figyel" (cm)
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
UltraSonicDistanceSensor distanceSensor(9, 10); // Trig: 9, Echo: 10
void setup() {
pixels.begin();
pixels.show(); // Kezdéskor minden LED kikapcsolva
}
void loop() {
// Távolság mérése
float distance = distanceSensor.measureDistanceCm();
// Hibás mérés (pl. -1) kezelése: ha nem lát semmit, 0 LED világítson
if (distance < 0 || distance > MAX_DIST_CM) {
distance = MAX_DIST_CM;
}
// LOGIKA MEGFORDÍTÁSA ÉS SKÁLÁZÁSA:
// map(érték, min_táv, max_táv, max_led, min_led)
// 2 cm-nél (közel) -> 29 LED
// 40 cm-nél (távol) -> 0 LED
int current_Last_LED = map(distance, 2, MAX_DIST_CM, NUMPIXELS, 0);
// Biztonsági korlát (ne lépjük túl a 0-29 tartományt)
current_Last_LED = constrain(current_Last_LED, 0, NUMPIXELS);
pixels.clear();
// LED-ek beállítása
for (int i = 0; i < current_Last_LED; i++) {
pixels.setPixelColor(i, pixels.Color(0, 0, 255)); // Kék szín
}
pixels.show();
delay(20); // Rövid szünet a stabilitásért
}