#include <Adafruit_NeoPixel.h>
#include <HCSR04.h>
#define PIN 6
#define NUMPIXELS 29
#define MAX_DIST_CM 40 // Ettől a távolságtól kezd el világítani (zölden)
#define MIN_DIST_CM 3 // Ennél a távolságnál világít az összes (vörösen)
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
UltraSonicDistanceSensor distanceSensor(9, 10);
void setup() {
pixels.begin();
pixels.show();
}
void loop() {
float distance = distanceSensor.measureDistanceCm();
// Hibás mérés vagy túl nagy távolság kezelése
if (distance < 0 || distance > MAX_DIST_CM) {
pixels.clear();
pixels.show();
return; // Kilépünk a loop-ból, nem rajzolunk semmit
}
// 1. Hány LED világítson? (Közel = több LED)
int numLedsToLight = map(distance, MIN_DIST_CM, MAX_DIST_CM, NUMPIXELS, 0);
numLedsToLight = constrain(numLedsToLight, 0, NUMPIXELS);
// 2. Milyen legyen a szín? (Közel = Pirosabb, Távol = Zöldebb)
// Piros érték: Közel (MIN_DIST) -> 255, Távol (MAX_DIST) -> 0
int red = map(distance, MIN_DIST_CM, MAX_DIST_CM, 255, 0);
// Zöld érték: Közel (MIN_DIST) -> 0, Távol (MAX_DIST) -> 255
int green = map(distance, MIN_DIST_CM, MAX_DIST_CM, 0, 255);
red = constrain(red, 0, 255);
green = constrain(green, 0, 255);
pixels.clear();
// LED-ek kirajzolása a kiszámolt színnel
for (int i = 0; i < numLedsToLight; i++) {
pixels.setPixelColor(i, pixels.Color(red, green, 0));
}
pixels.show();
delay(30);
}