#define whiteLed 3 // Номер пина, к которому подключен светодиод
#define LDR A1 // Номер пина, к которому подключен LDR-датчик
// Константы для расчёта освещённости
#define GAMMA 0.7
#define RL10 50
// Макроопределения для расчёта освещённости
#define Volts(x) (x / 1024.0 * 5)
#define Resistance(x) (2000 * Volts(x) / (1 - Volts(x) / 5))
#define Lux(x) (pow(RL10 * 1e3 * pow(10, GAMMA) / Resistance(x), (1 / GAMMA)))
int volts; // Переменная для хранения предыдущего значения на аналоговом входе
void setup() {
// put your setup code here, to run once:
pinMode(whiteLed, OUTPUT); // Пин светодиода переключаем в режим выхода
pinMode(LDR, INPUT); // Пин датчика переключаем в режим входа
Serial.begin(9600); // Запуск последовательного порта
volts = analogRead(LDR); // Считывание аналоговой величины и запись её в переменную
// Вывод в порт начального значения освещённости
Serial.print("Освещённость: ");
Serial.print(Lux(volts));
Serial.println(" лк");
}
void loop() {
// put your main code here, to run repeatedly:
// Включаем светодиод, если освещённость меньше 10 лк
digitalWrite(whiteLed, (analogRead(LDR) > 853)? HIGH: LOW);
// Выводим в порт значение освещённости при её изменении
if (analogRead(LDR) != volts) {
volts = analogRead(LDR);
Serial.print("Освещённость: ");
Serial.print(Lux(volts));
Serial.println(" лк");
}
}