Arduino:Примеры/fft adc serial
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Применение БПФ на данных от АЦП и отправка результата посредством println()[1]
Это скетч для библиотеки FFT, который при помощи платы Arduino считывает данные с АЦП (аналогово-цифрового преобразователя), а затем обрабатывает их при помощи алгоритма БПФ (быстрое преобразование Фурье).
Для передачи данных по последовательному порту используется цикл for() и функция println().
Код
/*
Применение БПФ на данных от АЦП и отправка результата через printIn()
Создан пользователем guest на openmusiclabs.com
Дата создания – 7 июля 2014 года.
Скетч предназначен для тестирования библиотеки FFT.
Он берет данные у adc0 (0—ой аналоговый контакт), а затем
обрабатывает их при помощи БПФ. Данные отправляются
по последовательному порту на скорости 115,2 килобит.
*/
#define LOG_OUT 1 // включаем функцию для логарифмического формата
#define FFT_N 256 // задаем количество выходных отсчетов на 256
#include <FFT.h> // подключаем библиотеку
void setup() {
Serial.begin(115200); // запускаем последовательный порт
TIMSK0 = 0; // выключаем timer0, чтобы уменьшить джиттер
ADCSRA = 0xe5; // задаем для АЦП автономный режим работы
ADMUX = 0x40; // используем adc0
DIDR0 = 0x01; // выключаем цифровой вход для adc0
}
void loop() {
while(1) { // уменьшаем джиттер
cli(); // на Arduino 1.0 со снижением хорошо справляются прерывания UDRE
for (int i = 0 ; i < 512 ; i += 2) { // сохраняем 256 отчетов
while(!(ADCSRA & 0x10)); // ждем, когда АЦП будет готов
ADCSRA = 0xf5; // перезапускаем АЦП
byte m = ADCL; // считываем данные АЦП
byte j = ADCH;
int k = (j << 8) | m; // конвертируем в данные типа int
k -= 0x0200; // конвертируем в данные типа int со знаком
k <<= 6; // конвертируем в 16-битные данные типа int со знаком
fft_input[i] = k; // сохраняем действительные значения в четные отсчеты
fft_input[i+1] = 0; // задаем нечетным отсчетам значение «0»
}
fft_window(); // функция-окно, повышающая частотное разрешение
fft_reorder(); // реорганизовываем данные перед запуском БПФ
fft_run(); // обрабатываем данные в БПФ
fft_mag_log(); // извлекаем данные, обработанные БПФ
sei();
Serial.println("start"); // "Старт"
for (byte i = 0 ; i < FFT_N/2 ; i++) {
Serial.println(fft_log_out[i]); // отсылаем данные
}
}
}
См.также
Внешние ссылки
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