Измеритель звука на базе Arduino | Полный проект доступен с исходным кодом
Измеритель звука на базе Arduino | Полный проект доступен с исходным кодом
Здесь представлен аудиометр на базе Arduino, использующий жидкокристаллический дисплей (LCD). Измеритель уровня громкости или стандартный индикатор громкости (SVI) — это устройство, которое отображает уровень сигнала в аудиооборудовании. В этом проекте интенсивность аудиосигналов левого и правого каналов, подаваемых на вход платы Arduino UNO, отображается в виде полос на LCD размером 16×2. В этой схеме аналоговые входные контакты платы Arduino UNO используются для измерения уровней аудиосигнала.
Входы аудиосигнала предусмотрены на аналоговых входных контактах A2 и A4 платы Arduino UNO. Они могут быть в форме голоса, поступающего с микрофона через усилитель, или в виде прямого вывода из музыкального проигрывателя.
Схема аудиометра на базе Arduino
Рис. 1: Схема аудиометра на базе Arduino
Аудиосигналы на контактах A2 и A4 обрабатываются микроконтроллером ATmega328 (MCU) на плате Arduino UNO и после сравнения сигналов выполняются расчеты.
Наконец, ATmega328 предоставляет соответствующие значения для LCD 16×2 для отображения полос интенсивности звука.
Аудиометр на базе Arduino, как показано на рис. 1, построен на плате Arduino UNO, 16×2 LCD и потенциометре (или потенциометре) на 10 кОм.
Плата Arduino UNO
Arduino UNO — это платформа для прототипирования электроники с открытым исходным кодом, основанная на гибком и простом в использовании аппаратном и программном обеспечении. Плата Arduino UNO основана на ATmega328 MCU. Он имеет 14 контактов цифрового ввода/вывода (I/O), шесть из которых могут использоваться в качестве выходов с широтно-импульсной модуляцией (PWM), шесть аналоговых входов, керамический резонатор 16 МГц, разъем USB, разъем питания, кнопку сброса и разъем ICSP. Он содержит все необходимое для поддержки MCU; для начала просто подключите его к компьютеру с помощью кабеля USB или включите его с помощью адаптера переменного тока в постоянный ток или аккумулятора.
Пины 11 и 12 платы Arduino UNO подключены к контактам EN и RS LCD, контакты while со 2 по 5 подключены к контактам данных D7, D6, D5 и D4 16×2 LCD.
LCD 16×2
LCD JHD162A — модуль дисплея с 4-битным интерфейсом, который используется здесь для отображения полосок, соответствующих уровню подаваемого входного сигнала. В этой схеме используются только четыре контакта данных модуля LCD. Потенциометр сопротивлением 10 кОм используется для контроля контрастности экрана LCD.
Рис. 2. Авторский прототип аудиометра на базе Arduino: левая и правая полоски отображаются на LCD
Аналоговые аудиосигналы (левый и правый каналы) подаются на аналоговые входные контакты A4 и A2 платы Arduino UNO. Сигналы обрабатываются ATmega328 MCU на плате Arduino UNO, и после выполнения некоторых сравнений данные отправляются на экран LCD для отображения соответствующих полосок уровня сигнала.
Высота полос будет меняться в зависимости от напряжения аудиовходного сигнала на контактах A2 и A4 платы Arduino UNO, как показано на рис. 2. L отображается на LCD для левого канала и, аналогично, R отображается для правого канала. Соединения контактов A2 и A4 платы Arduino UNO должны выполняться осторожно, чтобы в схему был подан правильный аудиовход канала.
Для отображения полос на экране LCD создаются специальные символы для LCD размером 16×2, что описано в разделе программирования. Потенциометр используется для управления контрастностью дисплея, поэтому его можно изменять по мере необходимости.
Программное обеспечение
Программа для этой схемы выполняет следующие функции:
1. Инициализация схемы и LCD
2. Отображение приветственного сообщения на LCD
3. Создание собственных персонажей
4. Выполнение различных сравнений с напряжением входного сигнала на аналоговых входных контактах
5. Отображение полосок и изменение их высоты на LCD в соответствии с входными сигналами
Программа использует специальные символы для отображения высоты столбца в обеих строках LCD, используя массивы p3, p4, p5, p6 и p7, а также массивы L[8] и R[8] для отображения букв L и R в начальных столбцах LCD размером 16×2 в обеих строках соответственно.
Аналогично, массив K[8] используется для отображения специальных символов в конце обеих строк, а LEEG[8] используется для отображения специальных символов для форм полос.
Функция LiquidCrystal lcd(12, 11, 5, 4, 3, 2) используется для конфигурации LCD.
Функция void setup() используется для настройки контактов ATmega328 MCU на плате Arduino UNO.
Функция Serial.begin(9600) используется для настройки последовательной связи с платой Arduino со скоростью передачи данных 9600 бод.
Функция lcd.begin(16, 2) используется для указания размера LCD.
Функция lcd.createChar(1, p3) используется для определения пользовательских символов для дальнейшего вызова программы только по номеру.
Функция
lcd.print(“VU METER”) используется для отображения уровня громкости в качестве приветственного сообщения.
Функция voidloop() используется для выполнения задачи в течение бесконечного времени.
Функция AnalogRead(inputPin) используется для чтения значения аналогового входа.
Для получения значений для отображения высоты полос в соответствии с входными аудиосигналами выполняются простые вычисления.
Создание и тестирование
Кабель USB A-B используется для загрузки скомпилированного скетча (программного обеспечения) с ПК на MCU через Arduino IDE. Операция выглядит следующим образом:
1. Включите плату Arduino UNO с помощью кабеля USB A-B. Как только вы включаете LCD, он отображает индикатор уровня громкости в первом ряду и полосы во втором ряду LCD.
2. Потенциометр VR1 10 тыс. можно использовать для регулировки контрастности LCD.
3. Если мы подключим вход музыкального проигрывателя к аналоговым входам A2 и A4 платы Arduino через два провода, мы легко сможем увидеть изменения в полосках и буквах L и R в обоих рядах LCD одновременно, как показано на рис. 2.
Статья была первоначально опубликована 27 января 2016 года. Недавно она была обновлена.
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба