i2c - Rs485和I2C显示器一起使用
问题描述
我正在使用 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
}
}
解决方案
推荐阅读
- c++ - C++ 是否保证一致的指针表示?
- c# - 应在部署时 24/7 运行的控制台服务不循环
- go - 运行时:goroutine 堆栈超过 1000000000 字节限制
- typescript - '\n' 标签在将字符串推送到数组时自动添加
- python - 如何从具有值列表的字典列表中形成 DataFrame?
- c++ - 并行进行多个网络调用时,函数“ossl_connect_common”中的 Curl 崩溃
- design-patterns - 使用awk,后跟单引号时如何匹配反斜杠字符(是的,这是两个字符)
- r - 将样本大小标签添加到 x 轴刻度以在 ggplot 中进行加权调查?
- geogebra - 在 geogebra 中计算固体旋转的体积
- regex - 阅读 go.mod 并检测项目的版本