Как сделать громкость громче из этого кода при обработке?
У меня есть код, чтобы играть немного звука из Arduino. Песня была закодирована из числовых значений. но как мне заставить его играть громче от Arduino?
#include <PCM.h>
int switchPin = 8;
const unsigned char sample[] PROGMEM = {
140, 124, 130, 126, 129, 126, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 128, 128, 128,
};
void setup()
{
pinMode(switchPin, INPUT);
}
void loop()
{
if(digitalRead(switchPin) == HIGH)
{
startPlayback(sample, sizeof(sample));
}
}
3 ответа
В этом примере кода используется подпрограмма, в которой используется метод PCM для управления интервалами включения и выключения цифровых выводов (и при условии, что эти выходные выводы подключены к простому динамику). Помните, что частота звука - это то, что создает тоны, а громкость - это амплитуда этих частот. Итак, что вы спрашиваете, чтобы сделать звук громче, как увеличить амплитуду сигнала. Но поскольку эта простая демонстрация способна изменять только время переключения цифровых сигналов (частоту), а не амплитуду (бит либо включен, либо выключен. Бит никогда не находится в состоянии "ДЕЙСТВИТЕЛЬНО ВКЛЮЧЕНО" [заглавные буквы обозначают здесь:-) ]) поэтому ваш единственный выбор здесь - это добавить еще один слой аппаратного обеспечения между Arduino и динамиком, чтобы увеличить амплитуду тона - он же усилитель. Это может быть что-то простое, например, операционный усилитель, описанный в этом учебном пособии по дизайну, или замена динамика на разъем для входа бумбокс.
Звуковые сигналы по своей сути являются знаковыми величинами. Если ваша библиотека использует unsigned char
для аудиоданных, то это, вероятно, отображение 0 -> -128 и 255 -> 127. Итак, давайте посмотрим на ваш сигнал.
Первые 6 образцов:
140, 124, 130, 126, 129, 126
небольшое колебание около 127. Тогда остальная часть вашего сигнала
128, 127, 128, 127, ...
более или менее DC. Это будет неслышно.
Попробуйте подать сигнал {0, 255, 0, 255, ...}, он должен быть намного громче.
Если вы прочитаете комментарии в pcm.h, вы увидите, что громкость будет очень низкой. методика PCM регулирует процент времени, в течение которого вывод высок. Я согласен с рекомендацией JDH, что громкость будет ограничена, независимо от того, что и усилитель поможет. Для чего-то более громкого в программном обеспечении, я бы подумал, что вам понадобится больше прямоугольной волны с регулируемой частотой, чтобы вывод был высоким так же часто, как и низким, и фактическая частота регулировалась. Я не использовал его, но взгляните на библиотеку Arduino Tone().