Сборка датчика освещенности на фоторезисторе и LED: пошаговое руководство
Компоненты и расходные материалы
| Arduino UNO (подойдет любая плата с 1 аналоговым и ≥2 цифровыми пинами, ≥3 GND) | ×1 |
| Фоторезистор (LDR) | ×1 |
| Светодиоды разного цвета | ×2 |
| Резистор 1 кОм — для фоторезистора | ×1 |
| Резисторы 100 Ом (автор использовал 220 Ом, но 100 Ом лучше) — для LED | ×2 |
| Перемычки | ×1 набор |
| Макетная плата | ×1 |
Приложения и онлайн-сервисы
- Arduino IDE
- Arduino Web Editor
О проекте
Давно использую Arduino, и пришло время создать свой проект с нуля. Модифицировал схемы из интернета (Alex Glow, Joe Coburn) под свои нужды. Если найдете ошибки или лучшие решения — пишите в комментариях!
Схема подключения
Фоторезистор подключен к аналоговому пину A0 (любой аналоговый подойдет) и 5V. Через резистор 1 кОм к земле. На другой стороне макетки — светодиод (любой цвет) на цифровой пин 13 через резистор 220 Ом к земле (100 Ом тоже сойдет). Рядом — второй светодиод другого цвета так же, но на другом цифровом пине.
Принцип работы
Если фоторезистор выдает значение выше 450 — в Serial Monitor печатается «It is quite light!» (Очень светло!), оба LED гаснут.
if (light > 450) {
Serial.println("It is quite light!");
digitalWrite(13, LOW);
digitalWrite(12, LOW);
}
Если значение 230–450 — «It is average light!» (Среднее освещение!), левый LED горит, правый — нет.
else if (light > 229 && light < 451) {
Serial.println("It is average light!");
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
}
Если ниже 230 — «It is pretty dark!» (Довольно темно!), оба LED горят.
else {
Serial.println("It is pretty dark!");
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
}
В конце цикла задержка 1000 мс — чтобы не заспамить Serial Monitor.
delay(1000); // don't spam the computer!
Проверьте схему и код перед загрузкой.
Код
LED_PR_Light_Read (Arduino)
int light = 0;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
}
void loop() {
light = analogRead(A0);
Serial.println(light);
if (light > 450) {
Serial.println("It is quite light!");
digitalWrite(13, LOW);
digitalWrite(12, LOW);
}
else if (light > 229 && light < 451) {
Serial.println("It is average light!");
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
}
else {
Serial.println("It is pretty dark!");
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
}
delay(1000);
}
Схемы
Производственный процесс
- Цветовые датчики: принцип работы и ключевые применения
- OPT3007 — ультратонкий датчик освещенности: точное измерение света для умных устройств
- Датчики окружающего света: функциональность, дизайн и ключевые применения
- Оптические датчики: основы, типы и практические применения
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
- Датчик занятости ванной комнаты на Raspberry Pi с голосовыми и SMS-уведомлениями через Twilio
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- Расшифровка приборной панели: лампы, индикаторы и их значение