Есть предложения? (Возможно, по запуску двух программ на одном Arduino)
Супер-пупер нуб здесь! Пожалуйста, помогите мне, спасибо!. Так что то, что я делаю прямо сейчас для проекта - это создание устройства, которое может считывать ЭМГ (напряжение мышц) в теле, и когда оно считывает определенное число, будет запущен аудиоклип для воспроизведения. Я уже подключил плату Arduino к этому устройству, которое успешно считывает ЭМГ. Теперь мой вопрос - что мне нужно сделать, чтобы добавить аудиокомпонент к этому устройству? Может ли другая программа работать на том же устройстве Arduino? Есть ли дополнение, которое мне нужно купить? (Возможно, какое-то устройство Bluetooth для подключения к динамику Bluetooth для звука?)
@Marsel, 👍0
1 ответ
Небольшая экскурсия:
Вы правы, заметив, что Arduino с его 1 ядром может выполнять только одну инструкцию в любой момент времени. Однако есть способы, с помощью которых мы можем добиться того, чтобы Arduino «делал вещи в фоновом режиме». Мы можем, например, использовать прерывания от аппаратных таймеров, которые будут прерывать основное ядро ЦП для быстрого выполнения процедуры обслуживания прерывания, а затем продолжать с того места, где оно изначально остановилось.
Точно так же работает RTOS (операционная система реального времени). Вы можете выполнять только одну вещь за раз, но если вы настроите прерывание таймера каждые 20 миллисекунд, в течение которого вы переключаетесь между выполняемыми функциями, вы получите «эмулированную» многозадачную систему. Это основы любой операционной системы.
Ссылки:
- https://www.sparkfun.com/tutorials/326
- https://www.youtube.com/watch?v=QtyOiTw0oQc
- https://arduino-info.wikispaces.com/Таймеры-Arduino
- https://www.freertos.org/implementation/a00002.html
Вы также заметите, что ваш Arduino Uno не может воспроизводить музыку напрямую — для этого вам понадобится цифро-аналоговый преобразователь для создания необходимых аналоговых аудионапряжений, а также аудиоусилитель для наушников или громкоговорителей.
К счастью, есть много Arduino shields, которые справляются с этой задачей. Вот некоторые из них:
- Музыкальный щит Seedstudio (документация, библиотека)
- Шилд Adafruit Music Maker с выходом на наушники или громкоговоритель
Здесь работа по воспроизведению музыки (например, из файла на вставленной SD-карте) выгружается на внешний чип синтезатора. Однако нам необходимо снабдить чип данными для воспроизведения музыки в фоновом режиме.
Если вы посмотрите, например, на справочник библиотеки для Adafruit Music shield, вы увидите, что он предлагает функцию, которая будет использовать прерывания для воспроизведения файла с SD-карты в фоновом режиме.
Использование библиотеки в этом режиме прерывания, конечно, будет использовать источник прерывания (таймер или пин), который может конфликтовать с вашим кодом EMG, если он также использует эти таймеры. В этом случае вам придется переместить либо код EMG, либо музыкальный код на другой доступный таймер.
Короче говоря:
- Узнайте больше о том, что такое прерывания и таймеры
- найдите подходящий щит (например, щит adafruit выше) и изучите возможности и ограничения его библиотеки
- Как подключить ардуино к разъему для наушников?
- Подключить Arduino к телефонной линии?
- Синтезатор Arduino Uno — выход линейного уровня (аудио) на микшер/усилитель
- DFPlayer для записи на SD-карту
- Генерация истинного аналогового сигнала с помощью Arduino
- Можем ли мы генерировать тон 20 кГц с обычным зуммером в arduino?
- При нажатии кнопки мне нужно воспроизвести вступительный звуковой файл, затем один из 50 других звуков по порядку при каждом нажатии кнопки
- Несколько ИК-датчиков с Arduino