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).
- Альтернативные контакты Rx/Tx для Arduino Uno и Pro Mini
- SIM800L не отвечает на AT-команды
- HLW8032 UART отправляет случайные данные (регистры часто переполняются)
- Проблема последовательной связи с общей землей SIM800L
- Как читать и анализировать данные UART с радарного датчика присутствия человека
- Как выбрать использование библиотеки softserial в проекте Arduino?
- Связь UART - серийный номер всегда пуст
- Arduino framework: сколько экземпляров SoftwareSerial можно использовать одновременно с esp32