Ви не увійшли.
Если в вашей ситуации код пишется для всех контроллеров в сборке, то самым простым способом будет проверка готовности UART.
<code>
if(Serial.available())
{
// do some stuff
}
<code>
В зависимости от библиотеки SoftwareUART данная функция может быть не реализована. В таком случае можно её реализовать отправкой тестового пакета(отправить 1 байт и ждать ответ до таймаута).
Ещё в такой конфигурации нужно думать об идентификаторах для каждой ардуины, т.к. мастер может не знать от кого получены данные, а слейв не сможет определить, нужно ли эти данные обработать или переслать дальше по цепи...
Приветствую дорогие форумчани! У меня к вам такой вопрос: Как узнать количество подключенных плат на данный момент, которые подключены через UART. То есть я знаю точно что например сейчас я подключил 3 платы, но мне надо чтобы это число 3 была видна в SerialMonitor.
На всех ардуинок должен быть один и тотже код программы.
Вот код которыи загружен на платах на данный момент:
#include <SoftwareSerial.h>
SoftwareSerial Serial_1 = SoftwareSerial(2,3); //Rx , Tx
int incoming = 0;
int incoming1 = 0;
int analogValue = 0;
int count_device = 0;
int val;
void setup()
{
Serial.begin(9600); //Begin Serial to talk to the Serial Monitor
Serial_1.begin(9600); //Begin Serial to talk to the Rx Arduino
Serial.print("Количество подключенных плат: ");
Serial.println(count_device);
}
void loop()
{
analogValue = analogRead(0); //Считаем данные с потенциометра
/* Через Serial Monitor отправляем число которая означает номер платы с которой хотим получить данные.
Например у меня подключено 3 платы. К каждой плате подключен один потенциометр к аналоговуму входу 0. Через Serial Monitor
я отправляю например число 2. Это означает что я хочу получить данные с потенциометра который подключен ко второй плате.
*/
incoming = Serial.available();
while (incoming != 0)
{
nr_device_out = Serial.parseInt(); // В начале в переменную nr_device_out попадает число 2.
nr_device_out--; // Декрементируем. 2 - 1 = 1
if (nr_device_out == 0) // Число 1 не равна нулю, значит через SoftwareSerial передаем число 1 к второй плате.
{
/*
Получаем данные с потенциометра который подключен к ардуино с номером которого послали через Serial Monitor, в нашом случае со второй платы.
*/
Serial.println(analogValue);
}
else{
Serial_1.print(nr_device_out); // передаем число 1 к второй плате через SoftwareSerial.
}
incoming = Serial.available();
}
// From the Rx Arduino
incoming1 = Serial_1.available(); // Получаем данные со второй платы
while(incoming1 != 0) //While there is something to be read
{
Serial.write(Serial_1.read()); // Выводим значение потенциометра, который подключен к второй платы.
incoming1 = Serial_1.available();
}
}
И вот я хочу чтобы в переменную count_device попало число, которая означает количество подключенных плат на данный момент.
ВОПРОС: Как вычислить количество подключенных плат, которые соединены между собой через UART ?
На изображение показано как я соединил платы :
Спасибо и жду Ваших ответов!
Извиняюсь за мой русский!