Arduino – Wire 库

Wire库

 

申明

Wire库能够让Arduino与IIC / TWI装备遏制通信。 与SPI总线一样, IIC也是主从体例通信, 是以不能同时存在两个主装备,只能是一个主装备与一个或多个从装备遏制通信

利用之前利用以下语句遏制Wire库申明
#include <Wire.h>

下表显现了TWI引脚在各类Arduino板上的地位。

(在Arduino UNO板上,SDA(数据线)和SCL(时钟线)位于接近AREF引脚下面的引脚。)

Board I2C / TWI pins
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1

从Arduino 1.0起头,Wire库担当Stream流,使其与其余读/写的库分歧。
是以此刻send()receive()已被read()write()代替。

注重

普通来讲I2C地点有7位和8位的版本。 7位是装备标识码,而第8位则是为了确认装备以后状况是正在写入仍是读取。 而Arduino -Wire库一直利用的是7位地点。 若是您利用了8位,则须要删除低位,从而获得0到127之间的地点。可是,地点从0到7 被保留了, 是以您在开辟的时辰请不要利用它们!!! 能够从8起头利用。

请注重,毗连SDA / SCL引脚时须要一个上拉电阻。 另外MEGA 2560开辟板上引脚20-21具备上拉电阻。

Wire库的完成利用了32字节缓冲区,是以任何通信都必须在此限定以内。 单次传输中超越的字节将被抛弃。

两块UNO经由过程IIC遏制板间通信

主装备读取,从装备发送

在这个示例中,将利用两块开辟板经由过程在主装备读取/从装备发送的体例遏制通信。

Arduino UNO主装备经由过程利用Wire库, 能够要求并读取从独一寻址的从装备 Arduino UNO发送来的6字节数据。 收到该动静后,便能够在Arduino IDE 串口监督器窗中遏制检查。

所需硬件
  • 2块Arduino或Genuino开辟板
  • 杜邦线
电路毗连

将主装备开辟板的引脚4(或SDA数据引脚)和引脚5(或SCL时钟引脚)毗连到从装备开辟板的对应引脚上。图示电路图以两块UNO为例遏制毗连

为了保障串口通信的运转,必须经由过程USB将开辟板毗连到计较机上并保障各个开辟板的供电。

Wire板间通信电路图Arduino IIC和谈 Wire 太极创客
Wire板间通信电路图Arduino

Wire板间通信电路道理图 Arduino IIC和谈 Wire 太极创客

法式
主装备读取

从装备发送

结果演示

Wire板间通信 主装备读取,从装备发送 Arduino IIC和谈 Wire 太极创客

经由过程主装备UNO硬件串口翻开的串口监督器窗口视图

主装备写入, 从装备接管

在这个示例中,将利用两个开辟板经由过程I2C同步串行和谈以主机写入从机接管的体例彼此通信。

Arduino UNO(主装备)颠末编程,每半秒向独一寻址的从装备发送6个字节的数据。 从装备收到该动静后,能够在Arduino IDE 的串口监督器窗口中检查该数据。


所需硬件
  • 2块Arduino或Genuino开辟板
  • 杜邦线


电路毗连

将主装备开辟板的引脚4(或SDA数据引脚)和引脚5(或SCL时钟引脚)毗连到从装备开辟板的对应引脚上。图示电路图以两块UNO为例遏制毗连

为了保障串口通信的运转,必须经由过程USB将开辟板毗连到计较机上并保障各个开辟板的供电。

Wire板间通信电路图Arduino IIC和谈 Wire 太极创客
Wire板间通信电路图Arduino

道理图

Wire板间通信电路道理图 Arduino IIC和谈 Wire 太极创客

Code
主装备写入

从装备接管


结果演示

Wire板间通信 主装备写入,从装备领受Arduino IIC和谈 Wire 太极创客

库函数

begin
快乐飞艇开奖网:requestFrom
快乐飞艇开奖网:beginTransmission
快乐飞艇开奖网:endTransmission
write
快乐飞艇开奖网:available
read
SetClock
快乐飞艇开奖网:onReceive
快乐飞艇开奖网:onRequest