转自:https://www.cnblogs.com/1996jiwei/p/6561681.html

本文转自上面链接,版权请直接参考原链接。

最近在用I2C进行通信交流,发现有两种方法的头文件需要开头宏出来(Wire.h 或 Eeprom.h),即使用了对于的源文件

所以需要了解对应库文件的语法,首先感谢博主分享

由于时间问题先介绍wire.h 语法

此库中包含

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/ I2C)语法的更多相关文章

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

    此库中包含 1 Wire.begin() 2 Wire.requestFrom() 3 Wire.beginTransmission() 4 Wire.endTransmission() 5 Wire ...

  2. "Cannot open source file "Wire.h" " in Arduino Development

    0. Environment Windows 8 x64 Arduino 1.0.5 Visual studio 2012 Visual micro Arduino 1. Steps Add &quo ...

  3. 使用Arduino Wire Library读取温湿度传感器AM2321

    AM2321是采用I2C总线或单总线通讯的国产温湿度传感器.在AM2321手册中,当采用I2C通讯时,手册指定了多处需要主机等待的时间间隔,包括: (1)唤醒传感器时,从机不回复ACK,但主机主要等待 ...

  4. verilog中24LC04B iic(i2c)读写通信设计步骤,以及程序常见写法错误。

    板子使用的是黑金的是xilinx spartan-6开发板,首先准备一份24LC04B芯片资料,读懂资料后列出关键参数. 如下: 1.空闲状态为SDA和SCL都为高电平 2.开始状态为:保持SCL,S ...

  5. 在Linux 应用层 基于i2c-dev.h 实现i2c读写

    /* i2c-dev.h - i2c-bus driver, char device interface Copyright (C) 1995-97 Simon G. Vogl Copyright ( ...

  6. 嵌入式常用技术概览之IIC(I2C)

    一.先决知识             (1)模电基础知识(用以理解IIC如何通信) 二.IIC概览               I2C是80年代飞利浦(Philips->NXP->高通)研 ...

  7. Arduino String.h库函数详解

    此库中包含 1 charAT() 2 compareTo() 3 concat() 4 endsWith() 5 equals() 6 equalslgnoreCase() 7 getBytes() ...

  8. I2C总线的Arduino库函数

    I2C总线的Arduino库函数 I2C即Inter-Integrated Circuit串行总线的缩写,是PHILIPS公司推出的芯片间串行传输总线.它以1根串行数据线(SDA)和1根串行时钟线(S ...

  9. Arduino通过I2C(PCF8574T)驱动1602LCD

    Arduino中使用I2C通信可直接调用Wire.h库, 这个库允许Arduino链接其他I2C设备, 链接线有两条, 分别是SDA(数据行)和SCI(时钟线). 各型号Arduino的I2C对应引脚 ...

随机推荐

  1. 每日JS逆向练习之斗鱼登录密码加密,今天你练了吗?

    一切的基本功都是为后期调试滑块验证码准备的. 有兴趣的关注一下知识图谱与大数据公众号,当然不关注也无所谓.今天来看看斗鱼登录密码加密,正所谓熟能生巧,这种简单一点的基本3-5分钟就要能抠出来,有兴趣得 ...

  2. [PyTorch 学习笔记] 4.3 优化器

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/optimizer_methods.py https: ...

  3. 使用代码给Unity中的动画片段绑定回调函数

    在制作动作游戏的时候,需要播放许多动画,同时还有个需求,那就是动画播放到一定时间时,给一个回调函数,好做对应的状态变更, 我查了一下,发现如果使用的是unity自带的动画系统,要做到这样的话,需要这样 ...

  4. 索引对单列极值查询的显著性影响(百万级别表单列最值查询 Cost由1405变成3)

    表结构: create table hy_emp( id number(7,0) primary key, name nvarchar2(20) not null, salary number(5,0 ...

  5. ZT:如果有来生,要做一棵树

    出处:https://zhidao.baidu.com/question/393644025.html 原以为是三毛所作,想不到还有争议. 如果有来生,要做一棵树, 站成永恒.没有悲欢的姿势, 一半在 ...

  6. Oracle数据库添加约束

    主键约束(两个特性)1:主键必须写2:主键不可重复 create table stu01( sid varchar(100), sname varchar2(100) --constraint PK_ ...

  7. burpsuite抓包乱码问题

    网上百度说只需要Change Font选择中文字体即可,但是我这边试过还是乱码,按照网上一篇博客说抓包中按钮展示乱码的问题,在下面Character Sets选择Use a specific char ...

  8. C指针那点事儿

    指针: 用来存放变量地址的变量,就成为"指针变量". 定义: 一般形式:类名标识符 *指针变量名; int *p; float *q; "*"是说明符,用来说明 ...

  9. 第2课 - Hello, DTOS!

    第2课 - Hello, DTOS! 1. 主引导程序 主引导程序是软件还是固件?如果是软件,那么由谁开发?如何开发? (1)上一节说到了固件和软件的区别.由于主引导程序没有在出厂前固化到硬件中,因此 ...

  10. 学习 | mockjs入门

    最近工作有用到mockjs模拟数据,实现前后端分离,今天系统的把mockjs的API都过了一遍,算是入门吧. 什么是mockjs mockjs就是一个模拟数据,生成随机数据,拦截ajax请求. 为什么 ...