Всем привет! Я музыкант и немного программист. Ранее сделал интересный (а главное востребованный на студии) проект по MIDI-роутингу. На контроллере Iskra Nano, суть которого: есть два MIDI входа и два MIDI выхода. И на плате можно быстро кнопками переключать: соединение MIDI сообщений из двух разных источников, дублирование из одного источника на оба выхода, фильтрация и т.д. Получилось классно и сейчас я хочу развить проект. А именно: сделать новый проект на 4 MIDI входа и 4 MIDI выхода. Если я правильно понимаю, MIDI я могу подключить только к последовательным входам/выходам и мне нужен контроллер, где есть достаточное количество таких входов/выходов UART. Как мне кажется, для этих целей я могу взять Arduino Mega. Прошу подсказать: 1. В Arduino Mega мне по сути нужны последовательные входы/выходы, а вся остальная "мощь" мне не нужна и достаточно на уровне Arduino UNO. Есть ли какие-то иные варианты, как я могу к более простой плате подключить 4 MIDI входа и 4 MIDI выхода? 2. На алике нашел вот такой вариант, аналог: Ссылка на алик Во-первых он дешевый, во-вторых компактный. Правильно ли я понимаю, что я могу купить такую штуковину, как более компактный аналог Arduino Mega и реализовывать свой проект на нем? Буду очень благодарен за любые советы. Спасибо за внимание.
Зачем? Вы "умеете" ардуино ATmega328P. Mega2560 - плюс/минус то же самое, только "побольше-побольше". Что вас тянет к "другому" - экономить 20-30 рублей но потратить тучу времени на изучение? Правильно понимаете.
Спасибо за ответ! Точно не из экономии. Я предполагаю, что мне нужно бОльшее количество UART входов/выходов, к которым я могу подключить MIDI разъемы. Если я правильно понял, у UNO их два (один обычный, второй - через который происходит загрузка программы, но его тоже получилось использовать для подключения MIDI), а у MEGA как раз 4 штуки UART. Или MIDI можно как-то иначе подключить? В тех примерах проектов, которые я видел и которыми вдохновлялся, сделано именно так.
UART либо поддерживается нативно, на уровне самого МК, либо эмулируется программно. ATmega328P один "железный" UART, у Mega2560 - четыре. Вы не ограничены этими цифрами - пишете необходимую программу (применяем Software Serial) и у вас UART становится больше. Однако вы связаны возможностями МК: чем больше Software Serial тем больше ресурсов потребляет МК и тем меньше будет скорость этого UART. Как итог. И на ATmega328P, скорее всего, можно накидать больше UART, но медленно-меееедленно. Как работает MIDI я не представляю, но, полагаю, имеет определенную скорость и в нее надо "попасть". Поэтому берите Mega2560 - шансов будет больше. Но и Мега может не справиться. Практика - критерий истины.
Так же, как подключены Как подключены 2 midi входа и столько же выходов нам не сообщили. Но раз это удалось сделать и это работает, то добавить ещё парочку сущий пустяк.
Как раз-таки наоборот: в дуриновский реализации все наоборот - чем быстрее обмен по UART, тем больше времени остаётся для остальной программы. Не помню, есть ли у 328 целые порты, но при грамотном подходе за один присест мы можем обслужить сразу 8 программных сериалов. Но возиться сегодня с восьмибитками, когда есть 32 битные камни с поддержкой rtos - академического интереса ради только.
Спасибо за ответ! Один железный, другой программный. Но. Второй программный - это тоже не простой выход/выход, а тот, через который я программирую контроллер. Т.е. мне приходится отключать MIDI от разъема, когда я заливаю программу. Поэтому я думаю, что я не могу подключить MIDI к "обычной ноге".
Именно из-за "железных" выходов/выходов я и хочу её использовать. Мне кажется, для моего проекта это как раз преимущество в сравнении с программной эмуляцией. С учетом дешевой альтернативы с алика, мне кажется, это классный вариант. С новой платформой разберусь, меня это не пугает.
Таки да. Но данные надо не только принять, но и что-то с ними делать. На восьмибитнике с такой частотой все это не так быстро.
собственно, засунуть в обработчик программного сериала ещё несколько выводов порта никак не нагрузит МК. Если выводы сидят на другом порту, то придётся сделать лишние телодвижения, но и только. все AtMega +/- одинаковые. Ничего принципиально нового там нет. 30250 бод, если UART. Если поверх USB, то там нет такого понятия). Сам пакет MIDI очень простой.
Спрашиваю без подтекста: а на ваш взгляд "железные" UART в данном случае не дают никакого преимущества по стабильности обработки? Дело в том, что в том проекте, который я сделал, где один железный, второй эмулированный, там иногда (редко) бывают глюки, что сообщения какие-то не доходят и клавиша какая-нибудь залипнет. Я связывал это именно с эмулированным портом. Разумеется, главный подозреваемый - мой код. Но если вынести его за скобки, при прочих равных. Прям никакой-никакой разницы не будет в скорости и стабильности работы железного и нежелезного портов? Или все-таки разница есть? Моя логика в том, что если его можно на 100% так же эмулировать, то непонятно зачем делать железные.