Как сделать громкость громче из этого кода при обработке? - PullRequest
4 голосов
/ 06 февраля 2012

У меня есть код для воспроизведения небольшого звука от 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 ]

4 голосов
/ 07 февраля 2012

В этом примере кода используется подпрограмма, использующая метод PCM для управления интервалами включения и выключения цифровых выводов (и при условии, что эти выходные выводы подключены к простому динамику).Помните, что частота звука - это то, что создает тоны, а громкость - это амплитуда этих частот.Итак, вы спрашиваете, чтобы сделать звук громче, как увеличить амплитуду сигнала.Но так как эта простая демонстрация способна изменять только время переключения цифровых сигналов (частоту), а не амплитуду (бит либо включен, либо выключен. Бит никогда не "REALLY ON" [прописныекричать здесь :-)]) так что ваш единственный выбор здесь - это добавить еще один слой аппаратного обеспечения между Arduino и динамиком, чтобы увеличить амплитуду тона - он же усилитель.Это может быть что-то простое, например, операционный усилитель, описанный в этого учебного пособия по дизайну , или замена динамика на разъем для входа бумбокс.

1 голос
/ 07 февраля 2012

Аудиосигналы являются знаковыми величинами. Если ваша библиотека использует unsigned char для аудиоданных, то она, вероятно, отображает 0 -> -128 и 255 -> 127. Итак, давайте посмотрим на ваш сигнал.

Первые 6 образцов:

140, 124, 130, 126, 129, 126

- небольшое колебание около 127. Тогда остальная часть вашего сигнала

128, 127, 128, 127, ...

- это более или менее постоянный ток. Это будет неслышно.

Попробуйте ввести сигнал {0, 255, 0, 255, ...}, он должен быть намного громче.

0 голосов
/ 18 февраля 2012

Если вы прочитаете комментарии в pcm.h, вы увидите, что громкость будет очень низкой.методика PCM регулирует процент времени, в течение которого вывод высок.Я согласен с рекомендацией JDH, что громкость будет ограничена, независимо от того, что и усилитель поможет.Для чего-то более громкого в программном обеспечении, я бы подумал, что вам понадобится больше прямоугольной волны с регулируемой частотой, чтобы вывод был высоким так же часто, как и низким, и фактически частота регулировалась.Я не использовал его, но взгляните на библиотеку Arduino Tone ().

...