По сути, вся электроника строится на понятии, «сигнал», который в общем случае является носителем информации. В электронных устройствах сигналы создаются, передаются, обрабатываются, как для управления чем-либо, так и для ведения диалога между пользователем и электроникой.
Во всех предыдущих уроках мы постоянного пользовались электрическими сигналами для взаимодействия контроллера с электрическими компонентами и другими электронными устройствами. С различных датчиков сигналы поступают на контроллер с информацией об измеряемых параметрах. При управлении исполнительными устройствами, такими как транзистор или сервопривод, уже сам контроллер подает на них управляющие сигналы.
До настоящего момента мы успели рассмотреть световую (светодиоды) и текстовую (жидкокристаллический экран) индикации, применяемые в целях взаимодействия электроники с пользователем.
Их можно отнести к визуальным средствам передачи информации человеку. Однако, по популярности использования с ними может поспорить инструмент звукового информирования. В качестве такого инструмента используется звуковой динамик, который преобразует подаваемый на него электрический сигнал в звук. Ну а частным случаем динамика является бузер (от англ. Buzzer - в переводе на русский язык звонок или гудок). Внешний вид бузера и его обозначение на принципиальных схемах показано на рисунке.
Пищалка создана специально для подачи маломощных системных звуковых сигналов, показывающих чаще всего правильность или некорректность работы оборудования, или указывающих на завершение каких-либо операций в электронных устройствах. Исходя из своего предназначения, он имеет упрощенную конструкцию, поэтому не способен воспроизводить музыку или речь человека. Однако кое-что на нем все-таки сыграть можно.
Бузер может издавать звуки заданной частоты и длительности. Если мы будем чередовать звуки с разной частотой определенным образом, то вполне можно получить узнаваемую мелодию. Но прежде, чем что-то на нем сыграть, необходимо его правильно подключить к контроллеру Ардуино.
Создание будильника
Будильник мы сделаем автоматическим. Он будет срабатывать с восходом солнца. С точки зрения алгоритма это будет выглядеть так: при изменении освещенности в большую сторону, что происходит на рассвете или при включении света в комнате, будет один раз проигрываться известная мелодия. А при малой освещенности будет включаться светодиод и светиться, пока освещенность вновь не станет выше установленного уровня. Внешний вид собранного будильника изображен соответственно на рисунке.
Для схемы потребуется:
1. Контроллер.
2. Макетная плата.
3. Провода.
4. Резистор 10 кОм.
5. Резистор 240 Ом - 2 шт.
6. Фоторезистор.
7. Светодиод.
8. Бузер.
Бузеры бывают 2-х видов: пассивные и активные. Как известно, звук - это колебания воздуха. Чтобы эти колебания создать, у любого устройства воспроизведения звука (к классу которых относится и бузер) внутри есть специальный звукоизлучающий элемент, который колеблется под воздействием поданного на него электрического сигнала. В бузере в качестве такого элемента выступает пьезокерамический излучатель. При этом частота колебаний излучателя (т. е. частота звука) повторяет частоту подаваемого на него электрического сигнала. Так вот активные бузеры обладают встроенным генератором, создающим сигнал определенной частоты непосредственно внутри пищалки. Поэтому, активные бузеры не требуют ничего, кроме питания - колебания своего звукоизлучающего элемента такие бузеры создают сами. В связи с наличием внутренней электроники при подключении активных бузеров необходимо строго соблюдать полярность. Она задаётся либо длиной ножек бузера (короткая соединяется с «минусом», а длинная - с «плюсом»), либо маркировками «+» и «-» рядом с ножками.
Пассивный же бузер самостоятельно создавать колебания излучателя нужной частоты не умеет, отчего на него необходимо подавать уже не постоянное напряжение, а модулированный сигнал, который чаще всего имеет внешний вид прямоугольной волны.
При сборке будильника будем использовать пассивный бузер в общем случае работа с ним более сложна, поскольку требуется модулированный сигнал. Если активный бузер использовать вместо пассивного, то он будет работать и управляться точно так же. Соберите схему будильника в соответствии с принципиальной схемой и рисунком. Для управления будильником в соответствии с выбранным алгоритмом необходимо решить задачи. Первая - это установить моменты, когда наступает рассвет, а когда приходит ночь. Критерии дня и ночи, не достигающие своих крайних положений.
Вторая задача - это заставить включиться будильник всего один раз, когда освещенность увеличится до определенного уровня, а дальше ждать, пока не стемнеет, чтобы включился светодиод, т.е. обеспечить последовательность проигрывания мелодии и включения светодиода. Для этого мы используем переменную і. Когда темно, будем присваивать ей значение 1. Тогда при наступлении дня, если уровень освещенности выше пограничного значения и i=1, то у нас заиграет мелодия. После однократного проигрыша присвоим і = 0 - в этом случае мелодия воспроизводиться не будет, пока снова не наступит ночь и переменной і не будет присвоено значение 1. Напишем программу и рассмотрим новые элементы программного кода.
Ссылка для скачивания программы будет в конце статьи.
Поскольку схема будильника схожа со схемой сигнализатора света, то и программы похожи в части принципа их построения. Отметим только два момента, ранее не встречавшихся.
if (val >svet - 50 & & i==1) - это уже знакомый нам условный оператор, который выполняет проверку условия. Однако в данном скетче его конструкция немного отличается от того, что использовалось раньше. Здесь выполняется проверка сразу двух условий. Сдвоенный символ && означает логическое «И». То есть при наличии двойного символа && условие выполнится, только если значение переменной val больше svet-50 и одновременно переменная і равна единице. И первое, И второе условие.
Помимо логического «И» существует еще логическое «ИЛИ». Оно означает, что оператор примет истинное значение, если выполнится хотя бы одно условие из двух, между которыми находится символ «||». То есть может выполняться ИЛИ первое, ИЛИ второе условие. Аналогичным образом работает и логическое отрицание, для которого используется символ «!».
Второй момент, который необходимо отметить:
tone(buzer, 440, 300); - эта функция подает на цифровой вывод buzer (в нашем случае вывод 8) специальный сигнал, который заставляет бузер издавать звук с частотой 440 Гц и длительностью 300 миллисекунд. Таким образом, первый аргумент в круглых скобках функции является номером контакта, на который подается сигнал, второй - частота сигнала (прямоугольной волны), задающего тональность звучания бузера, ну а третий - длительность сигнала в миллисекундах.
Собственно говоря, проигрывание мелодии получается через многократное использование функции tone() с различными частотами подаваемых на бузер сигналов, как можно видеть в тексте программы. Известно, что все ноты в различных октавах имеют определенную частоту (например, нота «До» в первой октаве имеет частоту 261,6 герц). В нашем будильнике они подобраны как раз таким образом, что различим мотив «в траве сидел кузнечик». Конечно, звук имеет качество далеко не Hi-Fi и звучит примитивно, но это делает прослушивание еще более забавным прямо как в рингтонах старых телефонов.
Отметим также, что при использовании функции tone() программа не останавливается. Поэтому для прослушивания всего цикла звучания необходимо останавливать её вручную командой delay. В нашем скетче мы передавали значения с фотодатчика на монитор порта. Этого можно и не делать, но для контроля, особенно при первых запусках программы, желательно понаблюдать за значениями. Это позволит лучше понять принципы работы системы.
Проверьте теперь, как это все работает. Загружайте скетч. Закройте рукой фотоэлемент - загорится светодиод. Откройте фотоэлемент и «наслаждайтесь» звучанием мелодии из пищалки.
Ссылка на программу тут: https://disk.yandex.ru/d/xh1AhEgdEXIWFQ