Arduino: Опыт с фоторезистором
Sep. 28th, 2016 01:20 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В наборе Arduino есть фоторезистор, который можно использовать для датчика освещенности. Иногда можно встретить уже готовые датчики, но у меня в наборе из датчиков только RGB диод, поэтому стоит задача собрать свой. Для основы беру урок http://robotclass.ru/tutorials/arduino-photoresistor/, где все подробно описано. Собираю стенд, копирую программу. Все просто. Стенд я собираю не один-в-один, а эквивалентный. Надеюсь, что не сгорит.
Ничего не сгорело, проверил все три фоторезистора из набора, все работает. Если заслонить резистор, то он показывает что-то около 0 (под плотной тканью), если подсветить фонариком, то 1000 с чем-то. А так что-то около 666. Есть и промежуточные значения. Если резистор убрать, то тот же 0. А вот если его убрать и выход с A0 пина соединить с 5V напрямую, то получается 1023. В общем, почти весь диапазон и выходит. Может быть, если фоторезистор будет под солнцем, а не под фонариком, то те же 1023 он и выдаст.
При этом есть побочный эффект — всё время горит LED на главной плате. Посмотрю, это поведение по умолчанию? Для этого в setup() поставлю:
digitalWrite( led, LOW );
а в начале скетча переменную:
const int led = 13;
Компилирую, загружаю и ничего не выходит. LED все равно горит. Хоть и так, но я все равно копирую теперь уже вторую программу, с управлением этим датчиком. Только границу ставлю в 400, чтобы зажигался этот LED. Работает.

Теперь возвращаюсь к проблеме, почему у меня не управлялся LED в первом случае. Дело в том, что я забыл инициализировать порт LED:
pinMode(led, OUTPUT);
перед тем, как им управлять. Теперь он не горит, что отлично.
Как это можно использовать? Например, для автоматизации рабочей лампы. Если темно, она зажигается через какое-нибудь реле. Нужно, правда, еще добавить датчик того, что кто-то у этой лампы сидит. Тогда вообще замечательно. Можно освещением аквариума или теплицы управлять, курятника. Да мало ли!
Ничего не сгорело, проверил все три фоторезистора из набора, все работает. Если заслонить резистор, то он показывает что-то около 0 (под плотной тканью), если подсветить фонариком, то 1000 с чем-то. А так что-то около 666. Есть и промежуточные значения. Если резистор убрать, то тот же 0. А вот если его убрать и выход с A0 пина соединить с 5V напрямую, то получается 1023. В общем, почти весь диапазон и выходит. Может быть, если фоторезистор будет под солнцем, а не под фонариком, то те же 1023 он и выдаст.
При этом есть побочный эффект — всё время горит LED на главной плате. Посмотрю, это поведение по умолчанию? Для этого в setup() поставлю:
digitalWrite( led, LOW );
а в начале скетча переменную:
const int led = 13;
Компилирую, загружаю и ничего не выходит. LED все равно горит. Хоть и так, но я все равно копирую теперь уже вторую программу, с управлением этим датчиком. Только границу ставлю в 400, чтобы зажигался этот LED. Работает.
Теперь возвращаюсь к проблеме, почему у меня не управлялся LED в первом случае. Дело в том, что я забыл инициализировать порт LED:
pinMode(led, OUTPUT);
перед тем, как им управлять. Теперь он не горит, что отлично.
Как это можно использовать? Например, для автоматизации рабочей лампы. Если темно, она зажигается через какое-нибудь реле. Нужно, правда, еще добавить датчик того, что кто-то у этой лампы сидит. Тогда вообще замечательно. Можно освещением аквариума или теплицы управлять, курятника. Да мало ли!