Подключение фоторезистора
Сопротивление фоторезистора зависит от света, попадающего на него: освещенность увеличивается — сопротивление фоторезистора падает, когда освещенность уменьшается — сопротивление фоторезистора возрастает.
Рис. 1 — Фоторезистор
Для подключения фоторезистора применяется схема показанная на рис. 2. В этой схеме фоторезистор и постоянный резистор образуют делитель напряжения. Когда сопротивление фоторезистора падает, на резисторе R2 напряжение увеличивается, и наоборот. Напряжение с постоянного резистора R2 делителя, подается на аналоговый вход Arduino (А0). Полученное значение можно сравнить с определенным порогом и выполнить необходимые действия.

Рис. 2 — Схема подключения фоторезистора к Arduino Uno
В примере ниже включаем и выключаем светодиод, который подключен к цифровому выводу 7 Arduino Uno, в зависимости от освещенности фоторезистора.

Рис. 3 — Схема электрическая принципиальная управления светодиодом с помощью фоторезистора
Скетч
С помощью строк для отладки можно контролировать значение на входе A0 (от 0 до 1024). Значение порога включения и выключения можно изменить, изменяя значение 500.
Arduino и фоторезистор

Arduino сама по себе не умеет измерять сопротивление, поэтому понадобится вспомогательный резистор, чтобы образовать делитель напряжения (как в случае с потенциометром). Отлично подойдёт резистор на 10 кОм (есть в наборе GyverKIT). На выходе с делителя получится аналоговое значение, поэтому подключаем среднюю точку получившегося делителя на аналоговый пин, резистор подключаем на GND, а оставшийся контакт фоторезистора – на VCC:

Примеры
Получение значения освещённости сводится к чтению аналогового сигнала на пине при помощи analogRead() . Сделаем это в цикле и выведем в порт.
После загрузки откроем плоттер и попробуем изменить уровень освещённости: включить выключить свет, частично загородить датчик рукой, и так далее.
Как подключить фоторезистор к Ардуино

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

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

Схема сборки светильника с фоторезистором на Ардуино
Соберите электрическую цепь, как на картинке выше. Принцип работы схемы в том, что в электрической цепи будет меняться сопротивление, в зависимости от освещенности в помещении, а значит будут меняться данные на аналоговом входе. После сборки принципиальной схемы с фоторезистором, подключите Arduino к компьютеру и загрузите следующую программу с датчиком освещенности в микроконтроллер.
Скетч. Фоторезистор Ардуино и светодиод
Программа для фоторезистора со светодиодом:
- для удобства, в первой строчке программы мы присвоили имя SENSOR для аналогового входа A0 с помощью функции #define ;
- условный оператор if позволяет определить действие при истинном условии. Оператор else позволяет определить действие, когда истинное условие ложно.
Скетч. Управление светодиодом от фоторезистора
Программа для управления светодиодами от фоторезистора:
- в этом скетче мы добавили переменную data , которая равна value деленная на 4;
- пин 9 мы использовали, как аналоговый выход, который плавно изменяет яркость свечение светодиода в зависимости от значения data .
Заключение. Принцип действия фоторезистора максимально прост, поэтому данные полупроводниковые приборы широко применяются во многих отраслях науки и техники. Это объясняется высокой чувствительностью фоторезисторов, малыми габаритами и простотой конструкции приборов, долговечностью в работе, а также возможностью обеспечить бесконтактные измерения и контроль.
Подключение фоторезистора к Ардуино

Фоторезисторы — это аналоговые датчики, которые могут измерять интенсивность света. Это светочувствительные резисторы, которые изменяют сопротивление в зависимости от количества света, попадающего на датчик.
Фоторезисторы идеально подходят для изготовления переключателей, управляемых светом. Одним из распространенных применений фоторезисторов является управление 5-вольтовыми реле для включения лампочки с наступлением темноты. Они также используются для отслеживания дневного света на метеостанциях и в системах мониторинга окружающей среды.
Как работает фоторезистор
Фоторезисторы имеют два отдельных электрода на чувствительном элементе. Волнистая красная линия — это слой полупроводящего материала между двумя электродами:

Проводимость полупроводникового материала увеличивается, когда на него попадает больше света. Когда проводимость увеличивается, сопротивление уменьшается. Поэтому сопротивление фоторезистора уменьшается с увеличением интенсивности света. И наоборот, сопротивление фоторезистора увеличивается с уменьшением интенсивности света.
Как подключить фоторезистор к Arduino
Arduino не может напрямую измерять сопротивление, он может измерять только напряжение. Таким образом, мы должны использовать делитель напряжения для подключения фоторезистора к Arduino. Вот схема фоторезисторного делителя напряжения, который нужно собрать:

Выходное напряжение Uвых делителя напряжения изменяется при изменении сопротивления фоторезистора. Когда свет не попадает на фоторезистор, сопротивление фоторезистора велико, поэтому выходное напряжение низкое. Когда свет попадает на фоторезистор, сопротивление уменьшается, а выходное напряжение увеличивается.
Подключить фоторезистор к Arduino можно следующим образом:

Код для Ардуино и фоторезистора
Теперь давайте посмотрим на скетч, который будет выводить необработанные показания освещенности с фоторезистора на монитор порта. После подключения схемы необходимо загрузить этот код в Arduino:
Сперва мы объявляем переменную типа int с именем photoresistor и устанавливаем ее равной аналоговому выводу A0. Это контакт, подключенный к центру делителя напряжения.
В функции setup() мы инициализируем последовательную связь. В функции loop() мы объявляем локальную переменную с именем light и сохраняем в нее значение, которое считали с аналогового контакта A0. Затем выводим переменную light в монитор порта и вызываем задержку на 1000 миллисекунд перед следующим чтением данных.
Таким образом, скетч будет использовать функцию analogRead() для измерения выходного напряжения с делителя, преобразовывать его в целое число из диапазона от 0 до 1023 и выводить это число на последовательный монитор.
Если поместить фоторезистор в темноту, то значение, считанное функцией analogRead() , в терминале должно уменьшиться. Если поместить фоторезистор на свет, тогда значения должно увеличиться:

Значение, считанное с фоторезистора при отсутствии света

Значение, считанное с фоторезистора при наличии света
Видео симуляции схемы в программе Proteus можно посмотреть ниже:
Как использовать фоторезистор для управления
Фоторезисторы отлично подходят для изготовления переключателей, управляемых светом. Давайте создадим переключатель, который включает светодиод, когда темно, и выключает его при попадании света. Собрать на макетке схему можно так:

Как только схема соединена, загрузим следующий код в плату Arduino:
Мы начинаем с объявления переменной photoresistor и устанавливаем ее равной аналоговому выводу A0. Затем мы объявляем переменную led и устанавливаем ее равной цифровому выводу 9.
В функции setup() настраиваем вывод led как выход OUTPUT и инициализируем последовательную связь.
В функции loop() мы считываем аналоговое значение photoresistor и сохраняем его в локальной переменной с именем value . Чтобы упростить полученные значения с АЦП фоторезистора, мы используем функцию map() для преобразования значений в числа из диапазона от 0 до 10. Новое значение сохраняется в новой локальной переменной с именем light .
Оператор if else устанавливает пороговое значение, которое определяет, когда светодиод будет включаться и выключаться. Когда значение, сохраненное в переменной light , меньше 5, то будет выполнен код в инструкции if . Поскольку нам нужно, чтобы светодиод включался, когда уровень освещенности опускается ниже порогового значения, мы устанавливаем значение для контакта led в HIGH .
Оператор else выполняется, когда значение light больше или равно 5. В операторе else мы устанавливаем контакт led в низкий уровень LOW , чтобы выключить его.
После того, как вы построите схему и загрузите скетч, вы должны увидеть, как светодиод включается в темноте и выключается при свете.
Это простой пример, но это работающий выключатель, управляемый уровнем освещениея. Вы можете заменить светодиод любым другим устройством, которым можно управлять с помощью сигнала 5 В от Arduino.
