Выполнить регулировку громкости на динамике arduino

Я следую этому руководству для создания тонов с помощью Arduino: https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody

При этом используется встроенная функция tone(). Соединения таковы, что один пин динамика попал на один цифровой пин ардуино, а другой на землю.

Можно ли на этой установке управлять громкостью (возможно, с помощью потенциометра)? Что меня беспокоит, так это то, что это цифровая информация (ШИМ), которая идет на динамик, а не аналоговый сигнал, который можно настроить.

, 👍-1

Обсуждение

один вариант: https://github.com/teckel12/arduino-toneac/blob/master/README.creole, @Juraj

@Juraj Спасибо! Я использовал это, но, к сожалению, качество звука не так хорошо, как у оригинальной функции tone(). В дополнение к этому, когда звук был на самом низком уровне, я мог слышать щелкающий звук, когда все не было слышно. Тем не менее, я вернулся к исходной функции тона (), и этот звук щелчка существовал, однако его было не так легко идентифицировать, потому что тона () громче, чем тона AC., @user1584421

@Juraj Я задал новый вопрос об этом здесь: https://arduinoprosto.ru/q/89993/clicking-sound-at-the-beggining-of-each-note, @user1584421


2 ответа


2

Функция tone() генерирует прямоугольную волну с рабочим циклом 50%, используя таймер и прерывания. Рабочий цикл 50 % — это, по сути, полный объем.

Можно уменьшить громкость, уменьшив рабочий цикл, но функция tone() этого не поддерживает. Конечно, можно изменить программную генерацию ШИМ, чтобы изменить рабочий цикл (я не знаю, как, так что не спрашивайте меня), но я оставлю это в качестве академического упражнения, чтобы вы могли поэкспериментировать, если хотите. .

В качестве альтернативы можно сделать это аппаратно. Вы можете использовать операционный усилитель в качестве буфера (или динамика) и пару резисторов (или потенциометр) в качестве «аттенюатора». перед этим изменить напряжение сигнала, идущего на операционный усилитель.

Вам нужен операционный усилитель в качестве буфера, потому что в противном случае динамик будет путаться с потенциометром.

,

Благодарю вас! Так можно ли исправить это только аппаратно? Я обязательно попробую это. У меня есть еще один вопрос, который, возможно, вы знаете. В начале каждой ноты слышен щелчок, и я не знаю, почему, и можно ли его смягчить. Может с аналоговым фильтром? Я создал вопрос здесь: https://arduinoprosto.ru/q/89993/clicking-sound-at-the-beggining-of-each-note. Большое спасибо!, @user1584421

Так ли должны быть подключены к системе? https://imgur.com/a/tgK0hZ2 Я правильно понял ваш совет?, @user1584421


3

Существует библиотека от LixieLabs, реализующая аудио-ШИМ на сверхвысоких частотах, что позволяет изменять громкость тона без дополнительного оборудования.

,

Спасибо. Я пробовал эту библиотеку, но раньше мне не удавалось заставить ее работать. Смотрите здесь: https://arduinoprosto.ru/q/90002/library-fails-to-compile, @user1584421