前言:Wire.h是Arduino的IIC库。

一、Wire库函数

  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()

二、库函数详细介绍

1、Wire.begin() 和 Wire.begin(address)

描述

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

参数

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

2、Wire.requestFrom()

描述

主设备请求从设备一个字节,这个字节可以被主设备用 read()或available()接受。

Wire.requrstFrom(addtess,quantity)

Wire.requrstFrom(addtess,quantity,stop)

参数

addtess : 7位的器件地址

quantity : 请求得到的数量

stop :布尔形,‘1’ 则在请求结束后发送一个停止命令,并释放总线。‘0’则继续发送请求保持连接。

返回

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

3  Wire.beginTransmission(address)

描述

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

参数

address : 器件的7位地址

返回值 无

4、 Wire.endTransmission()和Wire.endTransmission(stop)

描述

结束一个由beginTransmission()开始的并且由write()排列的从机的传输。在Arduino中 endTransmission()接受到

一个布尔形变量,如果为1 则endTransmission()发送一个停止信息;如果为0 则发送开始信息

返回值

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

5、 Wire.write()

描述

向从机发送数据

形式

Wire.write(value)

Wire.write(string)

Wire.write(data, length)

参数

value :要发送的数值

string :字符组的指针

data :一个字节数组

length :传输的数量

例子:

#include <Wire.h>

;

void setup()
{
   Wire.begin(); // join i2c bus
}

void loop()
{
   Wire.beginTransmission(); // 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 reached 64th position (max)
   {
     val = ;    // start over from lowest value
   }
   delay();}

6、  Wire.available()

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

7、 Wire.read()

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

8、 Wire.onReceive()

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

9、 Wire.onRequest()

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

参考自:https://blog.csdn.net/zhao_120/article/details/47028415

-END-

最新文章

  1. 【oracle】数据泵expdp与impdp
  2. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(八)
  3. 【推荐】iOS集合视图的可重新排序的layout
  4. cnblog code syntaxhighlighter view
  5. CoverFlow效果
  6. 关于html和body高度 登录页面登录框永远保持在页面垂直水平居中位置
  7. jquery实现多行文字图片滚动效果
  8. ios 添加到cell 上的button点击无效!扩大button的点击区域(黑魔法)
  9. 插入排序之python实现源码
  10. java学习之反射机制
  11. [Swust OJ 767]--将军回家(Dijkstra算法)
  12. JS经常使用正則表達式【分享】
  13. MySQL(1) - 基础
  14. Tomcat 服务器及使用Eclipse绑定Tomcat并发布应用
  15. Intellijidea建javaWeb以及Servlet简单实现
  16. vuejs关于函数式组件的探究
  17. python迭代器与生成器详解
  18. linux下的~/
  19. django之session与分页
  20. angular上传获取图片的directive指令

热门文章

  1. 使用脚本卸载.net framework for mac
  2. Object.assign和序列/反序列
  3. Vue select默认选中第一个
  4. let、var、const用法区别
  5. 搭建rsync服务(端口号873)
  6. spi简介(自我理解)
  7. PAT 1072. Gas Station
  8. ELK之Logstash配置文件详解
  9. 【微软2017年预科生计划在线编程笔试第二场 B】Diligent Robots
  10. [Angular] Advanced DI