Использование LDR с Arduino и управляющего переключателя для освещения Arduino
В этом учебном пособии мы рассмотрим, как использовать фотосопротивление (LDR) с Arduino для управления светом в зависимости от уровня окружающего освещения. LDR изменяет свое сопротивление в зависимости от интенсивности света; таким образом, его можно использовать для определения, светло или темно в окружающей среде. Когда уровень света ниже определенного порога, мы включим выходной пин для активации света.

Основные компоненты, которые вам понадобятся, включают плату Arduino, резистор на 10 кОм, LDR и несколько соединительных проводов. LDR будет подключен в конфигурации делителя напряжения с резистором для считывания аналогового напряжения, которое будет изменяться в зависимости от интенсивности света. Мы будем использовать это напряжение для управления светодиодом или другими выходными устройствами.
Для визуальной демонстрации настройки и кода обязательно посмотрите связанное видео (в видео на 0:10).
Объяснение аппаратного обеспечения
Светозависимый резистор (LDR) — это тип резистора, сопротивление которого уменьшается с увеличением интенсивности падающего света. Он обычно используется в приложениях, где необходимо контролировать уровень освещенности. В нашей настройке LDR будет использоваться для обнаружения уровней окружающего света и будет отправлять соответствующее аналоговое напряжение на Arduino.
Arduino будет считывать это напряжение через один из своих аналоговых выводов и решать, включать или выключать подключенный свет в зависимости от заданного порога. Резистор на 10 кОм используется в конфигурации делителя напряжения с LDR для создания стабильного выходного напряжения, которое может считывать Arduino.
Технические характеристики
| Производитель | Общий |
|---|---|
| Номер детали | LDR |
| Сопротивление (свет) | 100 - 500 Ом |
| Сопротивление (темное) | 10 кОм - 1 МΩ |
| Рабочее напряжение | 3.3 В - 5 В |
| Время отклика | 20 мс (тип.) |
| Пакет | Сквозное отверстие |
- Обеспечьте правильные уровни напряжения; не превышайте 5В.
- Используйте подтягивающий резистор для стабилизации показаний.
- Выберите подходящее значение резистора (10 кОм) для делителя напряжения.
- Рассмотрите возможность использования конденсатора для фильтрации шума, если это необходимо.
- Держите LDR подальше от прямых источников света во время тестирования.
Инструкции по проводке

Чтобы настроить цепь, начните с подключения одного вывода LDR к источнику питания 3.3V на Arduino. Другой вывод LDR будет подключен к одному концу резистора на 10 кОм. Другой конец резистора должен быть подключен к земле.
Затем создайте соединение между узлом LDR и резистором с аналоговым входным пином, таким какA0Это соединение позволит Arduino считывать напряжение. Убедитесь, что вы подключили землю Arduino к общей земле вашей схемы для обеспечения правильной работы.
Примеры кода и пошаговое руководство
Следующий фрагмент кода инициализирует последовательную связь и считывает аналоговое значение с LDR. Затем значение преобразуется в напряжение и выводится на последовательный монитор.
int LDRvalue = analogRead(A0); // Read the analog value from LDR
float voltage = LDRvalue * (5.0 / 1023.0); // Convert to voltage
Serial.print("Voltage ="); // Print label
Serial.print(voltage); // Print actual voltage
В этом коде переменнаяLDRvalueхранит сырое аналоговое значение от LDR. Напряжение рассчитывается на основе максимального аналогового значения (1023) и опорного напряжения (5В).
Далее мы проверяем, ниже ли это напряжение порога (в данном случае 3В), чтобы управлять выходным пином.
if(voltage < 3 ){
digitalWrite(10, HIGH); // Turn on the light
}else{
digitalWrite(10, LOW); // Turn off the light
}Здесь, если измеренное напряжение ниже 3 вольт, мы устанавливаем выходной пин (10) в состояние HIGH, включая свет; в противном случае он устанавливается в состояние LOW, выключая его. Постоянная проверка состояния света позволяет осуществлять управление в реальном времени на основе уровней окружающего света.
Демонстрация / Что ожидать
После завершения подключения проводов и загрузки вашего кода вы должны увидеть, как показания напряжения на последовательном мониторе изменяются в зависимости от интенсивности света на LDR. Если вы закроете LDR, напряжение должно увеличиться, а при освещении оно должно уменьшиться. Это поведение напрямую повлияет на выходной пин, который управляет светом.
Будьте осторожны с распространёнными ошибками, такими как плавающие входные сигналы или неправильные уровни напряжения, которые могут привести к ошибочным показаниям (в видео на 12:30).
Временные метки видео
- 00:00Введение в LDR
- 01:30Аппаратная настройка
- 03:45Объяснение кода
- 06:00Запуск кода
- 09:15Советы по устранению неполадок
/*
* // Этот код используется с видеоруководством для RoboJax.com
* // Опубликовано 31 августа 2017 года из Аякса, Онтарио, Канада.
* // Написано/Отредактировано A.B.S
*/
/void setup()
{
Serial.begin(9600); // настройка серийного порта
pinMode(10, OUTPUT);
}
void loop(){
int LDRvalue = analogRead(A0);
// Преобразуйте аналоговое значение (которое варьируется от 0 до 1023) в напряжение (от 0 до 5 В):
float voltage = LDRvalue * (5.0 / 1023.0);
// выведите значение, которое вы прочитали:
Serial.print("Voltage ="); // печатает текст "Напряжение ="
Serial.print(voltage); // печатает текущее напряжение
// проверьте, если напряжение меньше 3, то установите вывод 10 в высокий или ВКЛ.
if(voltage < 3 ){
digitalWrite(10, HIGH);
}else{
digitalWrite(10, LOW); // или оставьте его ВЫКЛЮЧЕННЫМ, когда напряжение больше 3
}
Serial.println();
delay(300);
}
Ресурсы и ссылки
Ресурсов пока нет.
Файлы📁
Нет доступных файлов.