#include <Adafruit_NeoPixel.h>
#define MOISTURE_PIN 34
#define LED_PIN 19
#define NUMPIXELS 10
#define LIGHT_PIN 35
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
void blinkAllRed() {
// Blink on
for (int i = 0; i < NUMPIXELS; i++) {
strip.setPixelColor(i, strip.Color(255, 0, 0));
}
strip.show();
delay(500);
// Blink off
for (int i = 0; i < NUMPIXELS; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
}
strip.show();
delay(500);
}
void setMoistureBar(int percentage) {
int ledsToLight = map(percentage, 0, 100, 0, NUMPIXELS);
for (int i = 0; i < NUMPIXELS; i++) {
if (i < ledsToLight) {
if (i < 3) strip.setPixelColor(i, strip.Color(255, 0, 0)); // Yellow
else if (i < 7) strip.setPixelColor(i, strip.Color(0, 255, 0)); // Green
else strip.setPixelColor(i, strip.Color(0, 0, 255)); // Blue
} else {
strip.setPixelColor(i, strip.Color(0, 0, 0)); // Off
}
}
strip.show();
}
void setup() {
Serial.begin(9600);
strip.begin();
strip.setBrightness(100);
strip.show();
}
void loop() {
int moistureRaw = analogRead(MOISTURE_PIN);
float moisturePercent = map(moistureRaw, 0, 4095, 0, 100);
int ledsToLight = map(moisturePercent, 0, 100, 0, 10);
if (moisturePercent <= 10) {
blinkAllRed();
} else {
setMoistureBar(moisturePercent);
}
int lightRaw = analogRead(LIGHT_PIN);
Serial.println(lightRaw);
delay(1000);
}