Монк - Программируем Arduino. Профессиональная работа со скетчами.

Тут можно читать онлайн Монк - Программируем Arduino. Профессиональная работа со скетчами. - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
Монк - Программируем Arduino. Профессиональная работа со скетчами.
  • Название:
    Программируем Arduino. Профессиональная работа со скетчами.
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Питер
  • Год:
    2017
  • Город:
    СПб.
  • ISBN:
    978-5-496-02385-6
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Монк - Программируем Arduino. Профессиональная работа со скетчами. краткое содержание

Программируем Arduino. Профессиональная работа со скетчами. - описание и краткое содержание, автор Монк, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Arduino — стандартный микроконтроллер, получивший широкое признание у инженеров, мастеров и преподавателей благодаря своей простоте, невысокой стоимости и большому разнообразию плат расширения. Платы расширения, подключаемые к основной плате Arduino, позволяют выходить в Интернет, управлять роботами и домашней автоматикой.
Простые проекты на основе Arduino не вызывают сложностей в реализации. Но, вступив на территорию, не охваченную вводными руководствами, и увеличивая сложность проектов, вы быстро столкнетесь с проблемой нехватки знаний — врагом всех программистов.
Эта книга задумана как продолжение бестселлера «Programming Arduino: Getting Started with Sketches». Несмотря на то что эта книга включает краткое повторение основ из книги «Programming Arduino», она познакомит читателя с более продвинутыми аспектами программирования плат Arduino.

Программируем Arduino. Профессиональная работа со скетчами. - читать онлайн бесплатно полную версию (весь текст целиком)

Программируем Arduino. Профессиональная работа со скетчами. - читать книгу онлайн бесплатно, автор Монк
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

На рис. 13.7 показано, как эта схема воспроизводит входной сигнал с частотой 5 кГц. Как видите, в выходном сигнале имеются ступеньки, образованные 20 замерами на цикл, следующими с частотой 100 кГц.

Рис 137Воспроизведение сигнала с частотой 5 кГц платой Arduino Due - фото 89

Рис. 13.7.Воспроизведение сигнала с частотой 5 кГц платой Arduino Due

Генератор реализаций фильтров

Если потребуется организовать более сложную фильтрацию, обратитесь к онлайн-генератору кода, с помощью которого вы сможете спроектировать фильтр и скопировать строки сгенерированного кода в свой скетч. Найти генератор можно по адресу http://www.schwietering.com/jayduino/filtuino/.

Альтернативой ему является изучение сложнейших математических приемов!

На рис. 13.8 показано, как выглядит интерфейс генератора фильтров. В нижней половине экрана находится сгенерированный код, и далее я кратко расскажу, как включить его в скетч.

В вашем распоряжении имеется масса параметров для настройки будущего фильтра. На рис. 13.8 демонстрируется проект полосового фильтра, целью применения которого является уменьшение амплитуды сигнала на частотах от 1 до 1,5 кГц. Начнем с первого ряда параметров в верхней части: Butterworth, band stop и 1st order. Butterworth (фильтр Баттерворта) — это конструкция фильтра, название которого соответствует оригиналу из электроники ( https://ru.wikipedia.org/wiki/Фильтр_Баттерворта). Фильтр Баттерворта хорошо подходит для разных целей и считается хорошим выбором по умолчанию.

Я также выбрал параметр 1st order (первого порядка). Большее значение этого параметра приведет к увеличению числа хранимых предшествующих замеров и крутизны затухания амплитудно-частотной характеристики (АЧХ) на частотах полосы подавления. Для данного примера вполне подойдет значение 1st order. Увеличение порядка потребует выполнения дополнительных вычислений и, возможно, уменьшения частоты следования замеров, чтобы плата Arduino успевала делать это.

Затем идут несколько неактивных полей ввода, имеющих отношение к фильтрам других конструкций, а еще ниже — параметр samplerate (частота замеров). Этот параметр определяет частоту, с которой будет производиться отбор данных, а также частоту, с которой сгенерированный код будет вызываться для фильтрации сигнала.

Далее я определил верхний и нижний пороги полосы подавления. В эти поля можно вводить частоту в герцах или ноту MIDI.

Раздел more (дополнительно) включает пару дополнительных параметров и даже содержит подсказки, как лучше их настроить. В разделе output

Рис 138Генератор реализаций фильтров для Arduino выходной сигнал можно - фото 90

Рис. 13.8.Генератор реализаций фильтров для Arduino

(выходной сигнал) можно выбрать тип массива значений, который будет использоваться для фильтрации. Я выбрал тип float type (вещественный). В заключение щелкнул на кнопке Send (Отправить), чтобы сгенерировать код.

Для проверки можно взять за основу пример скетча null filter, который использовался в эксперименте с платой Due. Полный скетч можно найти в пакете примеров под именем sketch_13_05_band_stop_due.

Сначала скопируйте сгенерированный код в буфер обмена и вставьте его в базовый пример null filter сразу после определения констант. Добавьте в код комментарий с адресом URL страницы генератора, чтобы при необходимости можно было вернуться и изменить настройки фильтра: URL хранит выбранные вами значения параметров. Сгенерированный фильтр оформлен в виде класса. Мы еще встретимся с классами в главе 15. А пока просто считайте его черным ящиком, выполняющим фильтрацию.

После вставленного кода добавьте следующую строку:

filter f;

Теперь нужно изменить функцию loop, чтобы вместо простого вывода входного сигнала плата Arduino выводила отфильтрованные значения:

void loop()

{

static long lastSampleTime = 0;

long timeNow = micros();

if (timeNow > lastSampleTime + samplePeriod)

{

int raw = analogRead(analogInPin);

float filtered = f.step(raw);

analogWrite(analogOutPin, (int)filtered);

lastSampleTime = timeNow;

}

}

Чтобы получить отфильтрованное значение, достаточно просто вызвать функцию f.step и передать ей значение, прочитанное с аналогового входа. Возвращаемое значение этой функции и есть отфильтрованное значение, которое нужно привести к типу int перед записью в ЦАП.

Заглянув в функцию step, можно увидеть, что реализация фильтра хранит три последних и один текущий замер. Далее производятся некоторые манипуляции со значениями, а затем они масштабируются коэффициентами, чтобы получилось возвращаемое значение. Разве математика не прекрасна?

На рис. 13.9 показан результат фильтрации. С помощью генератора воспроизводились сигналы разной частоты, амплитуда выходного сигнала (измерялась с помощью осциллографа) записывалась в электронную таблицу, и затем по массиву полученных данных строился график.

Рис 139АЧХ полосового фильтра на основе Arduino Преобразование Фурье - фото 91

Рис. 13.9.АЧХ полосового фильтра на основе Arduino

Преобразование Фурье

Преобразование Фурье — удобный инструмент анализа частотных характеристик сигнала. Как уже говорилось во введении к этой главе, сигналы часто формируются путем наложения разного количества синусоид с разной частотой. Возможно, вам приходилось видеть дисплеи анализаторов спектра на музыкальном оборудовании или средства визуализации в программных проигрывателях MP3. Они имеют вид столбиковой диаграммы. Высота каждого столбика соответствует мощности соответствующей полосы частот, при этом низкочастотные басовые ноты отображаются слева, а высокочастотные — справа.

На рис. 13.10 показано, как один и тот же сигнал может быть представлен в виде одной линии (называется временной областью ) и как множество значений мощности сигнала на разных частотах (называется частотной областью ).

Алгоритм расчета частотной области из данных временной области сигнала называется быстрым преобразованием Фурье (БПФ). В вычислениях преобразования используются комплексные числа, и его реализация — задача не для слабых духом, если только вы не увлекаетесь математикой.

Рис 1310Сигнал во временной и частотной областях К счастью для нас умные - фото 92

Рис 1310Сигнал во временной и частотной областях К счастью для нас умные - фото 93

Рис. 13.10.Сигнал во временной и частотной областях

К счастью для нас, умные люди часто готовы поделиться своим кодом. Вы можете загрузить из Интернета функцию, выполняющую быстрое преобразование Фурье. Пример кода, который использовал я, не организован в библиотеку — он распространяется в виде двух файлов: заголовочного файла и файла реализации (с расширением .h и .cpp соответственно). Чтобы воспользоваться им, просто сохраните оба файла в папку со скетчем. Они находятся в пакете примеров, сопровождающем книгу, поэтому их не придется загружать из Интернета. Впервые код появился в статье на форуме Arduino ( http://forum.arduino.cc/index.php/topic,38153.0.html). Эти же два файла можно найти в составе других примеров на следующих веб-сайтах: https://code.google.com/p/arduino-integer-fft/ и https://github.com/slytown/arduino-spectrum-analyzer/.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Монк читать все книги автора по порядку

Монк - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программируем Arduino. Профессиональная работа со скетчами. отзывы


Отзывы читателей о книге Программируем Arduino. Профессиональная работа со скетчами., автор: Монк. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x