
Видео
Схема

Исходный код
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Измерение освещённости с LDR
4// ─────────────────────────────────────────
5// Читает освещённость на A0 через делитель напряжения из LDR и резистора
6// 10k и каждые 0,5 с выводит значение 0-1023 в монитор порта. Чем ярче
7// свет, тем больше значение.
8//
9// Пины:
10// A0 -> Точка соединения LDR и резистора 10k
11// Другая ножка LDR к 5V, другая ножка 10k к GND
12
13int value; // Уровень света (0-1023)
14
15void setup() {
16 Serial.begin(9600); // Serial на скорости 9600 бод
17}
18
19void loop() {
20 value = analogRead(A0); // Прочитать напряжение LDR
21 Serial.print("Value: ");
22 Serial.println(value);
23 delay(500); // Ждать 0,5 с
24}
25
Частые вопросы
Как работает LDR?
Чем больше света падает на LDR (фоторезистор), тем меньше его сопротивление. Если собрать делитель напряжения с резистором 10 kΩ, изменения освещённости превращаются в изменения напряжения и читаются через `analogRead` как значение от 0 до 1023.
Какими должны быть показания при свете и в темноте?
Это зависит от схемы подключения; обычно при ярком свете значения высокие, а в темноте низкие (или наоборот). Запиши через монитор порта значения при свете и в темноте в обычной обстановке; они понадобятся для выбора порогов в следующих проектах.
В мониторе порта непонятные символы. Почему?
Скорость в мониторе порта должна совпадать со значением в функции `Serial.begin()` в коде (например, 9600). Если они различаются, на экране появляются непонятные символы.
Есть ли датчик освещённости точнее LDR?
Да, I2C-датчики освещённости вроде BH1750 измеряют свет сразу в люксах (lx) и гораздо стабильнее LDR. Для простых ночников и определения темноты LDR достаточно.
