0°

(七)Arduino系列:NodeMCUI2C通信方法

介绍

I2C(内部集成电路)是串行总线接口连接协议。它也被称为TWI(双线接口),因为它只使用两根电线进行通信。这两条线是SDA(串行数据)和SCL(串行时钟)。

I2C是需要确认的通信协议,即发送器在发送数据之后检查来自接收器的确认以知道接收器是否成功接收到数据。

I2C有两种工作模式,

  • 主模式
  • 从模式

SDA(串行数据)线用于主设备和从设备之间的数据交换。SCL(串行时钟)用于主设备和从设备之间的同步时钟。

主设备启动与从设备的通信。主设备需要从设备地址来启动与从设备的对话。从设备在主设备寻址时响应主设备。

NodeMCU的GPIO引脚具有I2C功能支持。由于ESP-12E的内部功能,我们无法将其所有GPIO用于I2C功能。因此,在将任何GPIO用于I2C应用程序之前,请先进行测试。

 

让我们为NodeMCU编写Arduino程序作为I2C主设备,为Arduino Uno编写Arduino 程序作为I2C从设备。主设备向从设备发送hello字符串,从设备将响应主设备发送hello字符串。

在这里,我们正在使用

主设备: NodeMCU

从设备: Arduino Uno

从设备地址: 8

接线图如下图所示

(七)Arduino系列:NodeMCUI2C通信方法

NodeMCU Arduino I2C连接

 

NodeMCU的Arduino程序(主I2C设备)

#include <Wire.h>

void setup() {
 Serial.begin(9600); /* begin serial for debug */
 Wire.begin(D1, D2); /* join i2c bus with SDA=D1 and SCL=D2 of NodeMCU */
}

void loop() {
 Wire.beginTransmission(8); /* begin with device address 8 */
 Wire.write("Hello Arduino");  /* sends hello string */
 Wire.endTransmission();    /* stop transmitting */

 Wire.requestFrom(8, 13); /* request & read data of size 13 from slave */while(Wire.available()){
    char c = Wire.read();
  Serial.print(c);
 }
 Serial.println();
 delay(1000);
}

Arduino Uno的Arduino程序(从I2C设备)

限制以下用户组阅读此隐藏内容

请先登录

您的用户组:

输出结果

从设备(Arduino Uno)串行监视器的输出窗口

(七)Arduino系列:NodeMCUI2C通信方法

主设备(NodeMCU)上串行监视器的输出窗口

(七)Arduino系列:NodeMCUI2C通信方法

 

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论