Я будую ці послідовники музики .
Тільки це не зовсім секвенсор, це фізичний інтерфейс для секвенсора. Секвенсер - це програма, яка працює на ноутбуці, до якого підключається секвенсор, ця річ дозволяє користувачеві робити петлі барабана. Це досить весело, але для цього потрібен ноутбук, оскільки секвенсор не "вбудований".
Мені б хотілося зробити послідовність вбудованого мого пристрою.
Тепер припустимо, що я знаю, як вирішити відповідність класу для підключення USB MIDI, а також припустимо, що я можу розібратися, як підключити ардуїно для надсилання MIDI-приміток з 5-контактного порту DIN. Що мене найбільше хвилює, це темп переміщення у часі через невідповідність часу в хвилинній кількості за кожен цикл циклу подій.
Я знаю деякі речі:
Не слід покладатися на
delay()
керування циклом темпу. Затримка зупиняє всю роботу вбудованого програмного забезпечення, і це не може працювати, тому що мені потрібно опитати фізичний інтерфейс користувача щодо змін під час запуску послідовності.Розрахунки на основі
millis()
краще, тому що прошивка може продовжувати працювати та діяти, коли минув певний підрахунок.Незважаючи на те, що жоден з моїх фізичних засобів управління не викликає переривання підпрограми, деякі операції можуть затримати роботу основного
loop()
. Якщо я спроектую функцію, яка чекає на введення користувачем, це, очевидно, може спричинити проблему відсутності "строку" для дії, якщоmillis()
підрахунок закінчився. Я знаю, що ця проблема є власним дизайном ...
Запитання:
A. Чи ардуїно на базі AVR є відповідним мікроконтролером для опитування користувальницького інтерфейсу та запуску критичного циклу хронометражу? Я знаю, що зараз Arduino на базі зброї - це набагато швидше. Буде Teensy 3.0 кращою альтернативою? Обидва ці плати 3,3 В, тож це ще один набір питань, з якими потрібно працювати ... але я поки що це ігнорую.
B. Чи слід розділити завдання на два мікропроцесори? Один для обробки опитування та оновлення користувальницького інтерфейсу, а другий для критичного циклу хронометражу місії.
c. Щось ще?
Моя головна мета - взагалі не потрібно користуватися комп’ютером. Я також хочу обчислити гойдалки, але в цьому випадку гойдалка не означає нічого, якщо у мене немає точного темпу. Дякую за вашу пораду!
noInterrupts();
зупиняє тремтіння, але також зупиняє всі бажані переривання.