Arduino Wire.h(IIC)库函数详解

摘要:
此库包含1Wire。begin()2线。requestFrom()3线。beginTransmission()4线。endTransmission()5线。write()6Wire。可用()7线。read()8线。onReceive()9线。onRequest()导线。begin()和Wire。开始(地址)描述初始化wi

此库中包含
1 Wire.begin()
2 Wire.requestFrom()
3 Wire.beginTransmission()
4 Wire.endTransmission()
5 Wire.write()
6 Wire.available()
7 Wire.read()
8 Wire.onReceive()
9 Wire.onRequest()

Wire.begin() 和 Wire.begin(address)

描述
初始化wire库 ,并且加入到I2C网络,前者作为Master 或 Slaver,并且只能调用一次

参数
address :7位的器件地址(可选),如果没有输入,则以Master的形式加入到I2C网络

Wire.requestFrom()

描述
主设备请求从设备一个字节,这个字节可以被主设备用 read()或available()接受
Wire.requrstFrom(addtess,quantity)
Wire.requrstFrom(addtess,quantity,stop)

参数
addtess : 7位的器件地址
quantity : 请求得到的数量
stop :布尔形,‘1’ 则在请求结束后发送一个停止命令,并释放总线。‘0’则继续发送请求保持连接

返回
字节形 ,从从机接受到的字节数目

Wire.beginTransmission(address)

描述
开始一次传输数据,发送一个I2C开始字符

参数
address : 器件的7位地址

返回
none

Wire.endTransmission()和Wire.endTransmission(stop)

描述
结束一个由beginTransmission()开始的并且由write()排列的从机的传输。在Arduino中 endTransmission()接受到
一个布尔形变量,如果为1 则endTransmission()发送一个停止信息;如果为0 则发送开始信息

返回
0 成功 1 数据溢出 2 发送addtess时从机接受到NACK 3 发送数据时接受到 NACK 4 其他错误

Wire.write()

描述
向从机发送数据

形式
Wire.write(value)
Wire.write(string)
Wire.write(data, length)

参数
value :要发送的数值
string :字符组的指针
data :一个字节数组
length :传输的数量

例子

#include <Wire.h>  
  
byte val = 0;  
  
void setup()  
{  
   Wire.begin(); // join i2c bus  
}  
  
void loop()  
{  
   Wire.beginTransmission(44); // transmit to device #44 (0x2c)  
                               // device address is specified in datasheet  
   Wire.write(val);             // sends value byte    
   Wire.endTransmission();     // stop transmitting  
  
   val++;        // increment value  
   if(val == 64) // if reached 64th position (max)  
   {  
     val = 0;    // start over from lowest value  
   }  
   delay(500);  
}  

Wire.available()

描述
Wire.requestFrom()请求从机数据后,可以使用available接收

Wire.read()

描述
Wire.requestFrom()请求从机数据后,可以使用read接收

Wire.onReceive()

描述
从机接收主机发来的数据

Wire.onRequest()

描述
从机请求主机发送数据

免责声明:文章转载自《Arduino Wire.h(IIC)库函数详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在oracle中自动大批量生成测试数据基于QT的换肤整体解决方案(QSkinStyle)(提供Linux的XP风格)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

awk入门及进阶

awk入门部分   awk不仅仅是linux系统中的一个命令,而且还是一种编程语言,可以用来处理数据和生成excel表格。处理的数据可以是一个或多个文件,可以是标注输入,也可以通过管道符获取标准输入。   awk -F:指定awk按照什么样的标准进行文本切割,切割成一列一列的。如果不知道-F参数,awk默认按照空格进行文本切割。   {}中的print代...

sqlserver 拼接字符串分割

CREATE FUNCTION [dbo].[fnQuerySplit]( @string VARCHAR(MAX) ,--待分割字符串 @separator VARCHAR(255)--分割符 ) RETURNS @array TABLE ( item VARCHAR(255) ) AS BEGIN DE...

ClientDataSet控件ApplyUpdates的异常触发

在使用ClientDataSet控件时,在关联的TDBGrid控件插入不合法的字段,再执行ClientDataSet的ApplyUpdates方法,数据插入失败 但在客户端没有报异常,try...except...end 无法捕捉到。 在网上找到了几种解决方法 第一种是在中间服务层的DataSetProvider控件中加入OnUpdateError事件 在...

C++11的for循环,以及范围Range类的实现

C++11支持range-based for循环。这是一个很方便的特性,能省挺多代码。以下代码就能很方便的遍历vector中的元素,并打印出来: 1 2 3 4 5 6 7 8 std::vector<int> int_vec; int_vec.push_back(1); int_vec.push_back(2); //如果要修改i...

cxGrid的使用方法

1.  去掉cxgrid中抬头的box ,在tableview1的ptionsview的groupbybox=false;2.  在GRID footer 中加入sum(列), tableview1的optionsview的footer=ture然后在cxGRid1的customize中的summary 的footer.add需要合计的列kind= skS...

SQL中的go、begin、end的用法

go 向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号。go是把t-sql语句分批次执行。(一步成功了才会执行下一步,即一步一个go)BEGIN 和 END 语句用于将多个 Transact-SQL 语句组合为一个逻辑块。在控制流语句必须执行包含两条或多条 Transact-SQL 语句的语句块的任何地方,都可以使用 B...