Проблема связи между arduino UNO R3 и Mega 2560 через MAX485

Я хочу отправить данные между Arduino Uno и Mega через MAX485.

Когда я устанавливаю вывод данных Enable на HIGH на Mega (для передачи данных) и устанавливаю тот же вывод на UNO на LOW (для приема данных), я могу правильно считывать данные из Mega в Uno. Однако, когда я хочу сделать это наоборот (отправить данные из uno в мега), не может получить данные из Uno в Mega. Пробовал разные контакты на обеих досках, но ответа пока нет.

Эта проблема возникает, когда я хочу изменить данные. Включение контактов в низкий или высокий внутренний цикл (), я имею в виду, когда я использую, например, Uno как постоянный мастер и мега в качестве постоянного подчиненного, он работает правильно, но когда я пытаюсь изменить их от ведомого до мастера во время выполнения, данные не могут быть отправлены из uno в мега!

PS: Я новичок на RS485 и MAX485. Вот мой код на стороне MEGA:

#include <SoftwareSerial.h>'
SoftwareSerial mySerial(2, 3);
String inputS = "";
boolean stringComplete = false;
int i = 0;
bool b= false;

void setup() {
  mySerial.begin(9600);//Using SoftwareSerial Port
  Serial.begin(9600);
  pinMode(8, OUTPUT);//DE/RE Controling pin of RS-485
  digitalWrite(8, HIGH);//DE/RE=HIGH Transmit Enabled M1
}

void loop() {
  mySerial.println("MEGA:Hi");
  Serial.println("Hi Sent");
  digitalWrite(8, LOW);
  CheckAndReceive();
  if(stringComplete)
  {
  stringComplete = false;
  inputS.trim();
  Serial.print(inputS);
  Serial.println(": " + String(i++));
  inputS = "";
  }
  digitalWrite(8, HIGH);
    delay(1000);
}

void CheckAndReceive()
{
  while (mySerial.available()) {
    // get the new byte:
    char inChar = (char)mySerial.read();
    // add it to the inputString:
    inputS += inChar;
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

Этот код должен отправить строку в UNO и прослушать ее.

UPDATE: ООН не может отправлять данные в МЕГА вообще. Я думаю, что проблема с моей UNO

2 голоса | спросил Safa Seed 10 SunEurope/Moscow2017-12-10T22:07:43+03:00Europe/Moscow12bEurope/MoscowSun, 10 Dec 2017 22:07:43 +0300 2017, 22:07:43

1 ответ


3

Вы забыли добавить mySerial.flush()

mySerial.flush() ждет завершения передачи исходящих последовательных данных.

Добавьте его сразу после отправки данных и хотите изменить статус выводов DE.

ответил user40734 13 WedEurope/Moscow2017-12-13T06:16:49+03:00Europe/Moscow12bEurope/MoscowWed, 13 Dec 2017 06:16:49 +0300 2017, 06:16:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132