一起使用Rs485和I2C显示

问题描述

我正在使用rs485在两个Arduino nano之间进行通信。我已经将4位I2C显示器连接到Arduino nano之一。当Nano通过Rs485从主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};// Create array that turns all segments on:
const uint8_t blank[] = {0x00,0x00,0x00}; // Create array that turns all segments off:

int i = 0;
char add[8],c;
char address[] = {'s','1','b','0','n','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
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)