#include <Adafruit_NeoPixel.h>
#define LED_PIN 6 // 네오픽셀 LED가 연결된 핀
#define NUM_LEDS 8 // 사용하는 LED의 개수
#define MOISTURE_SENSOR_PIN A0 // 토양 수분 센서가 연결된 아날로그 핀
Adafruit_NeoPixel pixels(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
// Define colors
uint32_t offColor = pixels.Color(0, 0, 0);
uint32_t pinkColor = pixels.Color(255, 20, 147);
// Define moisture thresholds
int dryThreshold = 300;
int veryDryThreshold = 700;
void setup() {
pixels.begin();
pixels.setBrightness(50); // LED 밝기 설정
Serial.begin(9600); // 시리얼 통신 시작 (필요한 경우)
}
void loop() {
int moistureLevel = analogRead(MOISTURE_SENSOR_PIN);
// 시리얼 모니터에 토양 수분값을 출력
Serial.print("토양 수분값: ");
Serial.println(moistureLevel);
if (moistureLevel < dryThreshold) {
// 수분이 충분한 경우: 모든 LED를 끔
for (int i = 0; i < NUM_LEDS; i++) {
pixels.setPixelColor(i, offColor);
}
} else if (moistureLevel < veryDryThreshold) {
// 건조한 경우: LED를 수분 상태에 따라 순차적으로 점멸
int ledsToLight = map(moistureLevel, dryThreshold, veryDryThreshold, 0, NUM_LEDS);
for (int i = 0; i < ledsToLight; i++) {
pixels.setPixelColor(i, pixels.Color(0, 0, 255)); // 청색 LED
}
for (int i = ledsToLight; i < NUM_LEDS; i++) {
pixels.setPixelColor(i, offColor);
}
} else {
// 매우 건조한 경우: 모든 LED를 분홍색으로 점등
for (int i = 0; i < NUM_LEDS; i++) {
pixels.setPixelColor(i, pinkColor);
}
}
pixels.show(); // LED 상태 업데이트
delay(1000); // 1초 간격으로 업데이트
}