Как я могу использовать переменную, чтобы выбрать, с каким последовательным портом взаимодействовать?

В моем случае у меня есть несколько устройств, подключенных к последовательным портам Arduino. В настоящее время я пишу им, используя Serial1.write(), Serial2.write() и т. д.

Как я могу выбрать порт программно, например:

for(int i = 0; i < numDevices; i++){
  Serial[i].write();
}

, 👍1

Обсуждение

что ты пробовал? ... какие ошибки вы получили?, @jsotola

Я не получаю никаких ошибок, потому что, как уже говорилось, я знаю, как написать это «жестко закодировано», но не так, как я хочу. Я не пробовал Serial [i], потому что это явно неправильно, но я не могу найти никаких документов о том, как писать в переменный вывод., @popctrl


1 ответ


Лучший ответ:

4

Вы можете использовать массив указателей на фактические последовательные порты. Для например, на Arduino Mega:

const size_t PORTS_COUNT = 4;
const HardwareSerial *ports[PORTS_COUNT] = {
    &Serial, &Serial1, &Serial2, &Serial3
};

void setup() {
    for (size_t i = 0; i < PORTS_COUNT; i++)
        ports[i]->begin(9600);
}
,