0

我正在使用 rs485 在两个 Arduino nano 之间进行通信。我已将 4 位 I2C 显示器连接到其中一个 Arduino nano。当 nano 通过 Rs485 从 master nano 接收数据时,数据会显示在 I2C 显示器上。但问题是我只能使用其中之一,即如果我正在接收数据,我无法在 I2C 显示器上显示它,如果我正在显示,那么我将无法接收数据。有人试过一起做吗?

纳米大师的代码

// rs485 master
void setup() {
  Serial.begin(115200);
  pinMode(2,OUTPUT);  //DE/RE pin
}

int i;
String s = "s1b01n01";

void loop() {
  digitalWrite(2,HIGH);  // high for transmiting

  for(i=0;i<=8;i++) {
    Serial.print(s[i]);
  }

  digitalWrite(2,LOW);
}

从纳米的代码

#include <TM1637Display.h>
#define CLK 4
#define DIO 16
#define ExtEnable 2  //DE/RE pin

TM1637Display display = TM1637Display(CLK, DIO); // Create display object of type TM1637Display:

const uint8_t data[] = {0xff, 0xff, 0xff, 0xff};// Create array that turns all segments on:
const uint8_t blank[] = {0x00, 0x00, 0x00, 0x00}; // Create array that turns all segments off:

int i = 0;
char add[8], c;
char address[] = {'s', '1', 'b', '0', '1', 'n', '0', '1'};

void setup() {
  Serial.begin(115200);
  pinMode(ExtEnable, OUTPUT); //DE/RE pin
  display.clear();
  delay(1000);
  display.setBrightness(7); // Set the brightness:
}

void loop() {
  digitalWrite(ExtEnable, LOW); // low for receiving
  
  if (Serial.available()) {
    c = Serial.read();
    Serial.print(c);
    add[i] = c;
    i++;
    digitalWrite(ExtEnable, HIGH);
    //display.showNumberDec(3); //print on display
  }

  Serial.print("add");
  Serial.println(add);

  if(add == address) { // to check 
    display.showNumberDec(3); //print on display
  }
}
4

0 回答 0