пятница, 12 февраля 2016 г.

Зажигаем светодиод … фоторезистором!

Всем привет! Давайте сразу же приступим к работе и не будем отвлекаться о темы. Сначала нам нужно будет кое-какое оборудование (надеюсь, что у вас это найдется): фоторезистор, резистор на 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. Все это работает и как работает и схему подключения вы можете увидеть в видеоролике:




Комментариев нет:

Отправить комментарий