Последовательная связь между двумя Arduino

Я хочу отправить величину напряжения, полученную на аналоговом выводе atmega328Pu, на другой Arduino Uno, используя контакты последовательной связи TX и RX, и отобразить значение на последовательном мониторе Arduino приемника.

Код передатчика Arduino:

void setup()
{

  Serial.begin(9600);

  pinMode(A0, INPUT);

}

void loop()

{

  int voltage=analogRead(A0);

  Serial.println(voltage); 


}

Код приемника Arduino:

void setup()

{

  Serial.begin(9600);

}
int incomingByte = 0;

void loop()
{
if (Serial.available() > 0) {    
    incomingByte = Serial.read();   
    Serial.print("I received: ");
    Serial.println(incomingByte, DEC);
}

}

Проблема: теперь проблема, с которой я столкнулся, заключается в том, что последовательный монитор приемника arduino ничего не показывает, он остается пустым. Пожалуйста, проанализируйте эту систему, помогите мне найти лучший способ обойти эту проблему?

, 👍0

Обсуждение

Вам нужно подключить GND (0V) между к. Электричество течет по кругу., @Dougie


2 ответа


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

2
  1. Соедините вместе земли двух плат Arduino. Их последовательные передатчики и приемники нуждаются в одинаковом эталонном напряжении.

  2. pinMode(A0, INPUT); не требуется. pinMode() влияет только на цифровую часть драйвера вывода. (Но, вероятно, это не приносит никакого вреда).

  3. Передатчик Arduino будет отправлять 1, 2, 3 или 4 байта ASCII — цифры 0–9, представляющие результат D/A, 0–1023. В десятичном виде эти цифры будут выглядеть как 48, 49, ..., 57 (для '0', '1', ... '9' соответственно). Таким образом, принимающая Arduino будет обрабатывать символы, а не числа. Он должен собрать все символы, а затем повторить их на своем терминале.

,

Спасибо за помощь. Это работает сейчас, @gautam sagar


3

Проблема в том, что последовательное соединение обычно соединяет два устройства, в вашем случае три (датчик ардуино, принимающее ардуино и ваш компьютер).

Чтобы обойти это, вы должны использовать дополнительный software serial на разных контактах принимающей Arduino (к сожалению, atmega328 имеет только один аппаратный последовательный интерфейс). Пока вам не нужно ничего отправлять с ПК на принимающую Arduino и с принимающей Arduino на воспринимающую, вы можете попробовать просто отключить провод приема-TX к датчику-RX и посмотреть, работает ли он. В последнем случае вы можете вообще избавиться от принимающей Arduino.

Редактировать: в ответе JRobert был упомянут еще один важный момент: основания устройств, взаимодействующих друг с другом, должны всегда быть подключены!

,

Огромное спасибо за помощь., @gautam sagar

Если ваша проблема решена, пожалуйста, примите ответ, чтобы вопрос был закрыт., @Sim Son