Arduino:Примеры/fft codec: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 87: | Строка 87: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Пример]] | [[Категория:Пример]] | ||
[[Категория:Примеры]] | [[Категория:Примеры]] | ||
[[Категория:Пример программирования Arduino]] | [[Категория:Пример программирования Arduino]] | ||
[[Категория:Примеры программирования Arduino]] | [[Категория:Примеры программирования Arduino]] |
Текущая версия от 12:39, 8 июля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Применение БПФ на данных от модуля Codec Shield[1]
Это скетч для библиотеки FFT, который при помощи платы Arduino считывает данные с модуля Codec Shield, а затем обрабатывает их при помощи алгоритма БПФ (быстрое преобразование Фурье).
Код
/*
Применение БПФ на данных от модуля Codec Shield
Создан пользователем guest на openmusiclabs.com
Дата создания – 18 августа 2012 года. Скетч предназначен
для запуска БПФ на данных, собранных при помощи модуля Codec Shield.
Он отсылает 128 выходных отсчетов с данными
по последовательному порту на скорости 115,2 к/бит.
Для визуализации данных есть специальный патч на PureData.
Примечание: обязательно загрузите последнюю версию
библиотеки AudioCodec, если нынешняя версия ниже 8.16.12. Там есть
модификации, благодаря которым код может быть вне прерывания.
*/
#define SAMPLE_RATE 44 // 44.1 КГц
#define ADCS 0 // АЦП не используются
#define LOG_OUT 1 // включаем функцию для логарифмического формата
#define FFT_N 256 // задаем количество выходных отсчетов на 256
// подключаем нужные библиотеки:
#include "FFT.h"
#include <Wire.h>
#include <SPI.h>
#include <AudioCodec.h>
// создаем переменные для передачи звука:
int left_in = 0x0000;
int left_out = 0x0000;
int right_in = 0x0000;
int right_out = 0x0000;
unsigned int count = 0;
volatile byte flag = 1;
void setup() {
Serial.begin(115200); // активируем последовательный порт
AudioCodec_init();
}
void loop() {
while(1) { // уменьшаем джиттер
while(flag); // ждем, пока соберутся отсчеты
fft_window(); // запускаем функцию-окно
fft_reorder(); // реорганизовываем данные перед запуском БПФ
fft_run(); // обрабатываем данные в БПФ
fft_mag_log(); // извлекаем данные, обработанные БПФ
Serial.write(255); // отсылаем стартовый байт
Serial.write(fft_log_out, FFT_N/2); // отсылаем данные
flag = 1; // говорим кодеку, что обработка готова
}
}
// функция для прерывания timer1 – тут собираются данные:
ISR(TIMER1_COMPA_vect) { // сохраняем регистры (аргумент NAKED удален)
// перед переменными типа «***_in» нужен знак «&»:
AudioCodec_data(&left_in, &right_in, left_out, right_out);
left_out = left_in; // передаем аудио
right_out = right_in;
if (flag) { // проверяем, готов ли БПФ к новым данным
fft_input[count] = left_in; // записываем действительные числа в четные отсчеты
fft_input[count + 1] = 0; // записываем нули в нечетные отсчеты
count += 2; // переходим к следующему отсчету
if (count >= FFT_N*2) { // проверяем, заполнены ли все отсчеты
flag = 0; // запускаем БПФ
count = 0; // сбрасываем счетчик отсчетов
}
}
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino