Зажигаем светодиод … фоторезистором!
Всем привет! Давайте сразу же приступим к работе и не будем
отвлекаться о темы. Сначала нам нужно будет кое-какое оборудование (надеюсь,
что у вас это найдется): фоторезистор, резистор на 10 кОм и 240 Ом, светодиод,
макетная плата, и провода «П-П» (папа –папа). В последний раз мы исследовали
ШИМ сигнал, который позволял плавно менять яркость светодиода. Теперь давайте продолжим
развивать идею применения ШИМ.
Под действием света на фоторезистор у него будем меняться сопротивление.
Скажем чем ярче свет – тем сопротивление меньше. Наша задача состоит в том,
чтобы на данное световое воздействие реагировал и светодиод. Скажем чем света
меньше (например прикрыли окошко фоторезистора рукой) – тем ярче должен гореть
светодиод. Задача вроде бы простая, но здесь есть пара важных моментов: как
правильно подключить фоторезистор, и какой должен быть скетч?
Немного теории. Как вы уже догадались сигнал с фоторезистора
будет аналоговый (то есть он может принимать самые разные значения). А ведь наш
ардуино понимает эти сигналы (то есть ардуино содержит Аналогово-Цифровой
преобразователь АЦП). Arduino имеет 10 битный АЦП, т.е. подаваемый на вход
сигнал может быть преобразован в цифровые значения от 0 до 1023. Если к примеру
подключить микрофон к аналоговому входу Arduino и попасть в место с идеальной
тишиной, то будет значение 0, на улице днем -200-300, а если встать рядом с
взлетающим самолетом – 1023. Цифры абстрактные, но теперь должно быть понятно,
как это работает. Мы можем любой плавный
сигнал (звук, свет, напряжение) преобразовать в число от 0 до 1023.
Но в нашем примере мы работаем со светом – то есть
используем фоторезистор. Как же его правильно подключить, чтобы ардуино смог
принимать от него сигналы? А все просто: мы будем использовать делитель
напряжения: то есть подключим к фоторезистору последовательно еще один резистор
(10 кОм). При таком включении, будет меняться напряжение в зависимости от сопротивления.
То есть таким образом мы сможем определить уровень освещенности: чем больше
света падает на фоторезистор, тем больше напряжения пойдет на вход. Под «входом»
мы подразумеваем конечно же аналоговый вход А1.
Теперь давайте посмотрим окно монитора последовательного
порта. Вызываем окно и в нем бегут цифры. При этом если накрыть фоторезистор
рукой я получаю максимально значение 600, при открытом окне фоторезистор идет
значение о. То есть размах от 0 до 600. Но интереснее же конечно не смотреть на
меняющиеся цифры, а подключить светодиод. Подключим его к 3 выходу. На ардуино
нет отдельных аналоговых выходов, просто некоторые цифровые могут работать как
аналоговые. На плате они помечены знаком «тильда». Третий выход как раз такой.
Для начала давайте определим, какие минимальные и
максимальные значения мы получаем. У меня получилось от 0 до 600. Помним, что
АЦП Ардуино может выдавать от 0 до 1024. Обрежем крайние значения:
int a=0;
void
setup()
{
Serial.begin(9600);
pinMode(3, OUTPUT);
}
void
loop()
{
a=analogRead(1);
if(a<200)
a=0;
if (a>600)
a=1024;
Serial.println(a);
analogWrite(3, 256- (a / 4));
delay(100);
}
В итоге что-то получилось. Если прикрыть фоторезистор
рукой – то зажигается светодиод. Иными словами если значения на входе падают ниже 200, светодиод гаснет, а если выше 600, горит на полную. Обратите внимание, что значения аналогового выхода лежат в диапазоне 0-256, поэтому мы делим приходящие с входа значения на 4. Все это работает и как работает и схему
подключения вы можете увидеть в видеоролике:
Комментариев нет:
Отправить комментарий