Сегодня сделаем скетч и прототип схемы на Arduino с пользованием фоторезистора. Вот фоторезистор, находится здесь, я собралась такой макет, он похож на новогоднюю светодиодную гирлянду из предыдущих статей.
У нас 8 светодиодов, они установлены так, что слева короткая ножка это минус, справа длинная ножка это плюс. Так они все установлены, в схеме использован один резистор на 10 килоом, я его брал из набора Arduino Kit, и используется 8 подключенных к плюсовому контакту светодиода сопротивлений на 220ом, так оно подключено.
Использовано 8 чёрных проводов это минусовые, и зелёные 8 штук – пины управления от двенадцатого до пятого. В процессе отладки крайний черный заменил на зеленый, но об этом позже.
Фоторезистор здесь, рядом с ним резистор на 10килоом, синяя перемычка идёт к минусу, оранжевый подключается одним концом в среднюю точку, между резистором и фоторезистором, другим концом в плату Arduino, в А0
(аналоговый пин).
Красный это 5 Вольт, и вот через этот делитель напряжения будет работать схема, будут загораться светодиоды, в зависимости от уровня освещенности. Я поправлю светодиоды, достаточно шаткая получилось конструкция. К модели ещё вернемся, а сейчас займемся написанием скетча.
Создадим новый проект, и приступим к написанию, объявим константы, несколько штук, пусть будет тип int, это будет количество выводов, поскольку светодиодов в схеме 8 штук. Так будет указано, сколько светодиодов использовали в схеме.
Сделаем массив с номерами пинов, задействуем 5 6 7 8 9 10 11 12 цифровые разъёмы, укажем номер пина на котором снимается уровень освещённости, объявим переменную для фоторезистора, значение сенсора и также объявим уровень освещённости, чтобы можно было делать разбивку их по пинам.
В подпрограмме setup
напишем цикл, в котором чтобы не присваивать каждому значению исходящего через pinMode
, пройдём в цикле по всем пинам присвоим им значения в pinmode
из массива и каждому пину присвоим значение OUTPUT
.
В принципе можно было этого не делать, можно было указать pinmode
и дальше писать пять, потом 6, и так далее, но это очень долго и это дикий варварский метод. Поэтому в цикле за один проход пройдем все пины.
В loop получим значение сенсора, считав через analogRead
из пина A0
.
Далее, сделаем разбивку значение сенсор, используя функцию map
получаем значение сенсора, и исходя из уровня освещенности, при чувствительности от 300 до максимального значения 1023, будет распределяться по 8 пинам, которая объявлены выше.
Смотрите так же видео Фоторезистор и светодиоды на Arduino - (видео), ссылка откроется в новой вкладке.
Далее в цикле пройдем все пины, так добавил скобки, начиная с первого светодиода, если счетчик не больше 8 будем прибавлять, и дальше проверим по условию, что если номер светодиода меньше уровня освещения, подадим на этот светодиод и все предыдущие напряжение через константу HIGH
.
Если же нет, запишем в него отсутствие напряжения, и светодиод не будет гореть.
Выравниваем код через комбинацию клавиш ctrl+T и давайте теперь посмотрим, что получится, запустим на проверку, сохраним скетч.
Так компиляция скетча, теперь его загрузим на Arduino. Вернемся к схеме, на данный момент один светодиод при изменении освещение не горит из-за плохого контакта.
Сейчас исправлю, не будем его трогать, если я выключу освещение, то погаснут все светодиоды. Если же я буду подсвечивать фоторезистор фонариком, плавно добавляя освещения, то будут гореть практически все светодиоды, ну и соответственно убираю, уменьшая уровень освещённости, меняется число горящих светодиодов.
Если же я включу полностью освещение, горят почти все, в чём проблема с этим светодиодом. Достаточно много потратил на него времени, здесь всё правильно собрано, даже минус пробросил заведомо исправным зеленым проводом, но почему-то он капризничает и не горит.
Давайте теперь вернемся к скетчу и посмотрим что не так. Пример был взят с официального источника, на диске к Arduino есть такой же код.
В скетче получается распределение освещенности от 300 до 1023(максимального значения), попытка изменить начальный порог на 0 - никакого результатов не даёт.
Но если распределяем на 8 частей вот это вот всё значение, то тут пригодится калькулятор, получается, либо сопротивление на 10килоом даёт погрешность какую-то, нужно 1023 разделить на 8, получаем практически 128, если брать правильно, то 1024 разделить на 8, это и есть 128.
Теперь нужно от 1023 вычесть 128, поставить сюда значение 895, тогда по логике вещей должно быть всё нормально. Загрузим и посмотрим, что изменится.
Сейчас горят все светодиоды, попробуем перекрыть освещенность, или давайте отключим…
Стартовое значение всё равно надо вернуть 300, поскольку подается на эти три первых светодиода питания. Давайте изменим в скетче 0 на 300, как было, было это сделано не просто так, перезалью скетч и посмотрим, что изменится на этот раз…
Теперь горит первый светодиод, при минимальном освещении, если включить все, а там у меня 1800 люксов, из двух метров светодиодной ленты, горят все, как и должно.
При выключении фоторезистор ловит остаточное освещение в помещении, горит люстра, не полная тьма, и он срабатывает. Но если подсвечивать фонариком, подавая плавно свет на фоторезистор, схема работает правильно.
Если вырубить свет полностью, посмотрим, что получится в полной темноте. Как видите, при полном отсутствии света, фоторезистор реагирует правильно, светодиоды загораются постепенно, по мере увеличения освещенности. При включенном свете горят все. Такой вот получился скетч, с лайфхаком – подгонка чувствительности фоторезистора, под свои нужды.
Смотрите видео: Фоторезистор и светодиоды на Arduino
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
Новые статьи
- Управление погружным насосом на Arduino - 18/06/2019 17:07
- Arduino и датчик ультразвука. Определение расстояния до объекта. - 12/04/2019 14:52
- Arduino в роли вольтметра. Вывод напряжения на LCD дисплей - 10/04/2019 15:32
- Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по Фаренгейту - 23/02/2019 20:51
- Как подключить дисплей LCD1602 к Arduino - 23/02/2019 19:35
- Как подключить сервомотор к Arduino - 23/02/2019 19:12
- Подключение RGB светодиода к Arduino - 12/01/2019 15:25
Предыдущие статьи
- Играем ноты на пищалке с Arduino - 12/01/2019 10:34
- Вынос мозга!!! АЦКИЙ BUZZER - омерзительная пищалка на Arduino Uno - 12/01/2019 09:55
- Новогодняя мини гирлянда в Arduino UNO. Как сделать мини гирлянду в Arduino UNO на светодиодах. - 12/01/2019 08:40
- Скетч - выключатель, светодиод и кнопка в Arduino UNO - 12/01/2019 08:15
- Включение светодиода через кнопку в Arduino UNO - 16/12/2018 04:55
- Управление светодиодом в Arduino UNO - 14/12/2018 18:24
- Установка среды разработки для Arduino UNO и пример программы - 14/12/2018 17:49