Практическое занятие 6. Управление звуком кнопками ЖК индикатора
Генерация звука
Для генерации звука определенной частоты используется команда tone:
tone(контакт, частота) – генерировать сигнал определенной частоты (в Герцах) на определенном пине Arduino
tone(контакт, частота, длительность) – генерировать сигнал определенной частоты (в Герцах) на определенном пине Arduino в течение заданного в миллисекундах времени
noTone(контакт) – прекратить генерацию звука на этом контакте
| Примечание: команда tone может генерировать звук только на одном контакте. Для использования нескольких спикеров их можно либо подключить на один и тот же контакт, либо генерировать на них звук по очереди (только один спикер звучит в определенный момент времени). Еще вариант – генерировать с помощью digitalWrite частоты на пинах, не используя команду tone
Подключать низкоомные динамики (например, 4 Ом, 8 Ом) напрямую на вход Arduino нельзя, так как в этом случае ток через динамик в соответствии с законом Ома U = I · R
I = U / R = 5 В / 4 Ом = 1,25 А = 1250 мА, что намного больше тока, который допустим для пина Arduino 40 мА
Поэтому мощные динамики подключают через транзисторный ключ или, как и в случае со светодиодом, используют резистор, чтобы ограничить проходящий через динамик ток (схема слева).
Используемые в занятии спикеры с материнских плат компьютеров имеют высокое сопротивление и малый ток (но и существенно более тихий звук), поэтому можно их подключать напрямую к пину Arduino одним контактом, и к земле другим контактом. На некоторых спикерах есть маркировка полярности, но особой разницы, какой контакт спикера подключить к пину Arduino, а какой – к земле, нет.
Практическое занятие 1. Проигрывание заданной мелодии
1. установите на макетную плату спикер, один кон такт его подключите к контакту D8 Arduino, другой – к Gnd
2. откройте и загрузите в контроллер программу Файл / Примеры / Digital / toneMelody
3. при включении контроллер должен издавать определенную мелодию
4. в примере код мелодии находится в блоке setup, поэтому мелодия проигрывается только один раз. Чтобы запустить повторное проигрывание, нужно отключить и вновь включить питание либо нажать кнопку Reset на Arduino. Сделайте воспроизведение мелодии непрерывным, переместив код в блок loop
Примечание: пример содержит библиотеку pitches.h, которая содержит наборы частот для нот
5. попробуйте загрузить в контроллер другие мелодии – пример программы приведен в приложении, также коды мелодий можно найти в интернете по запросам типа Arduino Melody, Arduino Sound и т.п.
Практическое занятие 2. Управление звуком резистором
Подключите к контроллеру переменный резистор и сделайте, чтобы частота звука спикера зависела от угла поворота резистора.
Пример программы – Файл / Примеры / Digital / tonePitchFollower
ЖК индикатор
Для работы с используемым в курсе ЖК индикатором (2 строки по 16 символов) используется библиотека LiquidCrystal, уже имеющаяся в составе программы Arduino IDE.
Практическое занятие 2. Проверка и настройка ЖК индикатора
1. установите ЖК шилд (LCD Shield) на Arduino Uno
2. откройте пример работы с ЖК индикатором: Файл / Примеры / Liquid Crystal / HelloWorld
3. приведенная в строке LiquidCrystal lcd(12, 11, 5, 4, 3, 2); нумерация контактов не соответствует таковой в используемом ЖК шилде, исправьте ее на:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
| 4. загрузите программу в контроллер. При отсутствии текста на дисплее или плохом качестве попробуйте настроить контрастность, поворачивая резистор на шилде
Примечание: так как приведенные цифровые пины – 8, 9, 4, 5, 6, 7 используются для связи с ЖК индикатором, использовать их для чего-то еще нельзя (например, не будут работать подключенные к этим контактам светодиоды)
Практическое занятие 4. Эффекты
1. откройте и загрузите в контроллер программу Файл / Примеры / Liquid Crystal / Scroll
2. откройте и загрузите в контроллер программу Файл / Примеры / Liquid Crystal / Autoscroll
3. откройте и загрузите в контроллер программу Файл / Примеры / Liquid Crystal / Display
Практическое занятие 5. Вывод текста на ЖК индикатор
1. выведите на ЖК индикатор транслитом данные занимающихся на стенде: в первой строке Фамилия Имя одного занимающегося, во второй строке Фамилия Имя другого (или какой-то другой текст, если занимающийся один)
2. попробуйте различные эффекты – мигание (выводить и стирать текст), автоскролл с надписями фамилий или другими надписями на усмотрение
Практическое занятие 6. Управление звуком кнопками ЖК индикатора
1. загрузите программу Файл / Примеры / Analog / AnalogInOutSerial в контроллер
2. откройте программу, написанную на предыдущем занятии (скопируете из папки других участников, если не была сохранена своя программа)
3. подключите к плате спикер. Пользуйтесь аналоговыми входами ЖК индикатора. Для использования их как цифровых используется соответствие: А0=14, А1=15 и т.д.
4. напишите программу, которая включает определенную частоту при нажатии на определенную кнопку. Для облегчения программирования условий запишите значения, полученные для каждой кнопки, в переменные right, up и т.д. Приведен фрагмент кода программы:
int speaker = 15;// пин, к которому подключен спикер (А1)
int right = 0; // значение, выдаваемое при нажатии кнопки Right
int up = x1; // значение, выдаваемое при нажатии кнопки Up
int down = x2; // значение, выдаваемое при нажатии кнопки Down
int left = x3; // значение, выдаваемое при нажатии кнопки Left
int select = x4; // значение, выдаваемое при нажатии кнопки Select
int f1 = 100;
… // частоты (можно поставить другие)
int f5 = 500;
int note_duration = 500; // длительность проигрывания ноты
…
if (sensorValue == right) { // если снятое с аналогового входа значение равно значению, определенному для нажатия кнопки Right
tone (speaker, f1, note_duration); // выдаем звук определенной длительности
}
…
|
5. загрузите программу в контроллер и опробуйте ее работу
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|