#define SENSOR A0
#define LED_RED 2 // Все выключено
#define LED_GREEN 3 // Горит 1 половина
#define LED_YELLOW 4 // Горят обе половины
// Пороговые значения (настраиваются по Serial Monitor)
// Значения выше THRESHOLD_OFF, но ниже THRESHOLD_HALF -> 1 половина
// Значения выше THRESHOLD_HALF -> обе половины
int thresholdOff = 300; // Порог темноты (все выключено)
int thresholdHalf = 650; // Порог одной половины освещения
void setup() {
Serial.begin(9600);
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(SENSOR, INPUT);
}
void loop() {
// Считываем значение напряжения с фоторезистора
int lightLevel = analogRead(SENSOR);
// Отправляем значение в Монитор порта для калибровки
Serial.print("Текущая освещенность: ");
Serial.println(lightLevel);
// Логика управления светодиодами
if (lightLevel <= thresholdOff) {
// 1. Свет выключен -> КРАСНЫЙ
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_YELLOW, LOW);
}
else if (lightLevel > thresholdOff && lightLevel <= thresholdHalf) {
// 2. Включена одна половина -> ЗЕЛЕНЫЙ
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_YELLOW, LOW);
}
else {
// 3. Включены обе половины -> ЖЕЛТЫЙ
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_YELLOW, HIGH);
}
delay(200); // Пауза для сглаживания и стабильного чтения
}