СОДЕРЖАНИЕ ►
Рассмотрим подключение фоторезистора к Arduino (LDR). Разберем принцип работы полупроводниковых приборов и фоторезисторной автоматики. Соберем схему светильника с автоматическим включением, а также с автоматическим измерением освещенности и изменением яркости свечения светодиода, в зависимости от освещения. Рассмотрим тип данных unsigned int и оператор if, else в языке C++.
Принцип работы фоторезистора (LDR Arduino)
Фоторезистором называют полупроводниковый прибор, у которого под воздействием света снижается электрическое сопротивление (у некоторых типов фоторезисторов сопротивление может уменьшаться на два- три порядка). Основной частью фоторезисторов является полупроводниковый элемент (например, сернистый свинец или сернистый кадмий), расположенный так, чтобы на него попадал свет.

Явлением фотопроводимости называется увеличение электропроводности полупроводника под воздействием электромагнитного излучения. Принцип работы фоторезистора основан на появлении подвижных носителей заряда (электронов) в результате поглощения полупроводником световой энергии, вследствие чего уменьшается его сопротивление, т.е. возникает дополнительная электропроводность.
Как подключить фоторезистор к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega
- фоторезистор (LDR)
- светодиоды
- резисторы 220 Ом
- макетная плата
- провода «папа-папа»

Соберите электрическую цепь, как на картинке выше. Принцип работы схемы в том, что в электрической цепи будет меняться сопротивление, в зависимости от освещенности в помещении, а значит будут меняться данные на аналоговом входе. После сборки принципиальной схемы с фоторезистором, подключите Arduino к компьютеру и загрузите следующую программу с датчиком освещенности в микроконтроллер.
Скетч. Фоторезистор Ардуино и светодиод
// Присваиваем имя для аналогового входа A0 с фоторезистором #define SENSOR A0 // Присваиваем имя для порта 9 со светодиодом #define LED 9 // Присваиваем имя для цифрового значения аналогового входа A0 // unsigned int округляет значения и принимает только положительные числа unsigned int value = 0; void setup() { // Пин 9 со светодиодом будет выходом (англ. «output») pinMode(LED, OUTPUT); // Пин A0 с фоторезистором будет входом (англ. «input») pinMode(SENSOR, INPUT); } void loop() { // Считываем значение с фоторезистора на аналоговом входе A0 value = analogRead(SENSOR); // Если значение value на входе A0 меньше 500, включаем светодиод if (value<500) digitalWrite(LED, HIGH); // В противном случае (если value>500), выключаем светодиод if (value>500) digitalWrite(LED, LOW); }
Программа для фоторезистора со светодиодом:
- для удобства, в первой строчке программы мы присвоили имя
SENSORдля аналогового входа A0 с помощью функции#define; - условный оператор
ifпозволяет определить действие при истинном условии. Операторelseпозволяет определить действие, когда истинное условие ложно.
Скетч. Управление светодиодом от фоторезистора
// Присваиваем имя для аналогового входа A0 с фоторезистором #define SENSOR A0 // Присваиваем имя для порта 9 со светодиодом #define LED 9 // Присваиваем имя для цифрового значения аналогового входа A0 // unsigned int округляет значения и принимает только положительные числа unsigned int value = 0; // Назначаем переменную data, которую будем использовать в скетче int data; void setup() { // Пин 9 со светодиодом будет выходом (англ. «output») pinMode(LED, OUTPUT); // Пин A0 с фоторезистором будет входом (англ. «input») pinMode(SENSOR, INPUT); } void loop() { // Считываем значение с фоторезистора на аналоговом входе A0 value = analogRead(SENSOR); // Полученные значения на аналоговом входе A0 делим на 4 data = value / 4; // Включаем светодиод с полученной ранее мощностью - от 0 до 255 analogWrite(LED, data); }
Программа для управления светодиодами от фоторезистора:
- в этом скетче мы добавили переменную
data, которая равнаvalueделенная на 4; - пин 9 мы использовали, как аналоговый выход, который плавно изменяет яркость свечение светодиода в зависимости от значения
data.
Заключение. Принцип действия фоторезистора максимально прост, поэтому данные полупроводниковые приборы широко применяются во многих отраслях науки и техники. Это объясняется высокой чувствительностью фоторезисторов, малыми габаритами и простотой конструкции приборов, долговечностью в работе, а также возможностью обеспечить бесконтактные измерения и контроль.
Полезные ресурсы:
- Datasheet LDR — http://www.datasheetcafe.com/gl5516-datasheet-photoresistor/










У вас схема макетной платы и принципиальная различаются. На макетной фоторезистор сидит на земле, а на другой на 5v. Всё таки какая правильная?
Спасибо, что нашли ошибку. В принципе фоторезистор подключать к Ардуино можно обоими способами, так как он пропускает ток в любом направлении. Будут лишь меняться значения на аналоговом входе.
Схему исправьте, по макету работать не будет.
Почему вы так думаете?
а вы проверьте, не работает
Делаю всё по схеме подключение первый код не работает, светодиод просто горит, во втором коде всё правильно работает, сижу час так и не пойму в чем дело
на макете надо поменять резистор на 10кОм и фоторезистор подключить на 5в и тогда все работает на первом скетче
Я так понимаю вы специально в схемах допускаете ошибки? Не первый раз пришлось подключать внимание и мозги. Вы всё правильно делаете)))). Я думаю что лишнее в этой цепи это резистор на фоторезистор и провод на 5v, А0 я кинул на плюс, а перемычку на минус выключил свет и заработало. Только должно быть полное отсутствие света
И резисторы заменил вообще на перемычки