Аудиорекордер Arduino

У меня есть простой проект для моего arduino: зажгите несколько светодиодов, когда я отправляю определенную частоту с моего смартфона через выходное гнездо. Например ,  Я играю простой аудиофайл, сгенерированный с помощью генератора частоты (он генерирует синусоидальные, пилообразные, квадратные волны ...) на частоте 1 кГц -> загорается красный светодиод Я играю другую частоту (5 кГц) -> загорается зеленый светодиод. Я читал подобные вопросы, но им нужно было точное считывание частоты сигнала, поэтому им пришлось конвертировать из переменного тока в постоянный ток и от 700 мВ до 2,5 В, это необходимо в моем случае? Я также могу подготовить дорожку с программой, называемой смелость, при этом оставшаяся всегда положительная, но колеблющаяся между 0 и 0,7 мВ. Как я могу реализовать свой проект самым простым способом?

Спасибо

2 голоса | спросил Sir 5 FebruaryEurope/MoscowbSun, 05 Feb 2017 19:39:05 +0300000000pmSun, 05 Feb 2017 19:39:05 +030017 2017, 19:39:05

2 ответа


1

Подключите сигнал к аналоговому входу на Arduino через конденсатор постоянного тока с делителем потенциала, центрирующим его вокруг 2,5 В. Убедитесь, что колебание напряжения находится в радиусе действия, которое должно быть.

Поддерживайте частоту сигнала ниже, скажем, 2 кГц. Например, используйте 500 Гц, 1000 Гц, 1500 Гц, 2000 Гц.

Образец (analogRead()) сигнал как можно быстрее (около 10 кГц) в течение короткого времени, записывая мин и максимальные значения. Из этого вы можете найти значение центра, значение 1/4 и значение 3/4.

Теперь, чтобы найти вашу частоту, проба до тех пор, пока сигнал не достигнет значения 3/4. Получите время с помощью micros(). Образец, пока сигнал не опустится ниже 1/4, а затем проба, пока он не перейдет выше 3/4 и не получит время с помощью micros(). Сделайте это несколько раз и усредните их. Разница между двумя временами составляет приблизительно период выборки, поэтому вы можете легко найти частоту.

Определите, какая из выбранных вами частот наиболее точно соответствует выбранной вами частоте.

ответил Mark Smith 6 FebruaryEurope/MoscowbMon, 06 Feb 2017 13:01:14 +0300000000pmMon, 06 Feb 2017 13:01:14 +030017 2017, 13:01:14
2

Если вы можете правильно уклонить свой сигнал, скажем, с помощью кепки и горшка, вы может читать его с помощью цифрового входа. Затем вы можете увеличить нарастающие края с помощью micros(), либо путем опроса булавки, либо с помощью прерывания. Вы может достичь большей точности, используя функцию «захвата ввода» 16-разрядный таймер, если вы используете Arduino на базе AVR и не боитесь из-за того, что ваши руки загрязнены низкоуровневым программированием.

Вам нужно получить правильный диапазон напряжения, чтобы это работало. На Например, Arduino Uno, пороги для переключения ввода из HIGH до LOW и обратно, как правило, вокруг 2,1 и 2,6 В соответственно, поэтому вы должны убедиться, что ваш сигнал ассортимент. Если вы можете получить пик от 1 до пика, этого должно быть достаточно, и вы можете использовать банк для настройки смещения.

ответил Edgar Bonet 6 FebruaryEurope/MoscowbMon, 06 Feb 2017 13:45:49 +0300000000pmMon, 06 Feb 2017 13:45:49 +030017 2017, 13:45:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132