Arduino Mega Pins для SoftwareSerial (по сравнению с AltSoftSerial)
В настоящее время я рассматриваю возможность использования Arduino Mega для создания устройства приема MIDI, которое затем будет передавать данные по USB, но у меня возникли проблемы/неопределенности с конструкцией приемной стороны Arduino.
Я надеюсь, что в этой сборке будет 16 входов MIDI (как 5-контактные DIN), без выходов, кроме USB. У Mega 4 контакта Rx, что все еще оставляет мне 12 для создания в программном обеспечении. Из того, что я читал, похоже, что SoftwareSerial не будет поддерживать одновременное чтение с разных входов, в то время как AlftSofSerial поддерживает. Однако также похоже (по крайней мере, из того, что я собрал), что AltSoftSerial не поддерживается на таком количестве контактов, которое мне нужно для работы.
В моей настройке не все 16 MIDI-устройств будут отправлять данные в Arduino одновременно, а только 2–4; однако они будут работать одновременно (например, нота клавиатуры вместе с фейдером громкости), поэтому я не думаю, что SoftwareSerial будет хорошо работать для того, что мне нужно.
Можно ли разобраться с тем, что мне нужно, с помощью SoftwareSerial/AltSoftSerial и физических UART? Если есть какая-то необходимая информация, которая, кажется, отсутствует или я что-то не понимаю, пожалуйста, дайте мне знать. Спасибо!
@som3oneMw, 👍1
Обсуждение1 ответ
Лучший ответ:
Из того, что я прочитал, следует, что SoftwareSerial не будет поддерживать одновременное чтение с разных входов
Верно. Вы можете listen() только на одном экземпляре за раз.
AltSoftSerial может поддерживать только 1 экземпляр, но позволяет одновременно передавать и получать данные и не блокирует всю систему во время передачи или получения данных.
Так что лучшее, на что вы можете надеяться, — это 4 аппаратных UART и один AltSoftSerial на 5 портов.
Я бы предложил рассмотреть возможность использования нескольких плат Arduino Mega с 4 портами на каждой (4 платы дадут в общей сложности 16 портов) и заставить их взаимодействовать друг с другом через какой-либо другой протокол (например, SPI или I2C).
Поначалу я рассматривал подобную схему, но отказался от неё в попытке сэкономить. Похоже, это и есть выход. Не знаете ли вы случайно, есть ли другое устройство с большим количеством UART? Я рассматривал последнюю версию Teensy, но там их всего 6., @som3oneMw
- Альтернативные контакты Rx/Tx для Arduino Uno и Pro Mini
- SIM800L не отвечает на AT-команды
- HLW8032 UART отправляет случайные данные (регистры часто переполняются)
- Проблема последовательной связи с общей землей SIM800L
- Как читать и анализировать данные UART с радарного датчика присутствия человека
- Связь UART - серийный номер всегда пуст
- Arduino framework: сколько экземпляров SoftwareSerial можно использовать одновременно с esp32
- Как выбрать использование библиотеки softserial в проекте Arduino?
Похоже, altsoftserial поддерживает только один экземпляр. Вам нужен только RX для MIDI? Какая скорость передачи данных?, @Gerben
Для такого специализированного приложения вы, вероятно, не можете полагаться на библиотеку и должны будете программировать оборудование напрямую., @CL.
@Gerben Мне он нужен только для MIDI. Я использовал 9600 в своих аппаратных «тестах» с одним устройством, и, похоже, всё работало нормально., @som3oneMw
@CL Мне нужно будет узнать, как это сделать. Есть ли полезные ссылки, которые подскажут мне верное направление?, @som3oneMw
[AVR304](http://www.microchip.com//wwwAppNotes/AppNotes.aspx?appnote=ru591260) может быть хорошим началом. Но вам потребуются знания и опыт, чтобы написать собственную библиотеку AltSoftSerial и улучшить её., @CL.