首页 > 其他分享 >无涯教程-Arduino - 集成电路

无涯教程-Arduino - 集成电路

时间:2023-10-19 19:06:29浏览次数:40  
标签:begin 接收器 教程 Wire 字节 Arduino 主机 void 无涯

集成电路间(I2C)是用于在微控制器和新一代专用集成电路之间进行串行数据交换的系统,当它们之间的距离很短时使用。通过两个导体创建连接。一个用于数据传输,另一个用于同步(时钟信号)。

Arduino I2C

我们有两种模式-主代码和从代码-使用I2C连接两个Arduino板。他们是-

  • 主发送器/从接收器
  • 主接收器/从发送器

主发送器/从接收器

现在让我们看看什么是主发送器和从接收器。

主发射器

以下函数用于初始化Wire库,并将I2C总线作为主机或从机加入,通常只调用一次。

  • Wire.begin(address)                            -   在我们的示例中,地址是7位从站地址,因为未指定主机,它将作为主机加入总线。

  • Wire.beginTransmission(address)   -  开始使用给定地址向I2C从设备进行传输。

  • Wire.write(value)                                 -   将字节从主设备传输到从设备(在对beginTransmission()和endTransmission()的调用之间)。

  • Wire.endTransmission()                    -   结束对从设备的传输,该设备由beginTransmission()开始,并传输由wire.write()排队的字节。

#include <Wire.h> //加载 wire 库

void setup() //这只会运行一次
   Wire.begin(); //作为主机加入 i2c 总线
} 

short age=0; 

void loop() {   
   Wire.beginTransmission(2); 
   //传输到设备#2
   Wire.write("age is=");
   Wire.write(age); //发送一个字节
   Wire.endTransmission(); //停止传输
   delay(1000); 
}

从接收器

使用以下函数-

  • Wire.begin(address)                                      -    地址是7位从站地址。

  • Wire.onReceive(received data handler)    -    从设备从主机接收数据时要调用的函数。

  • Wire.available()                                              -    返回可用于Wire.read()的字节数,应在Wire.onReceive()处理程序内部调用。

#include <Wire.h> //加载 wire 库

void setup() {  //这只会运行一次
   Wire.begin(2); //使用地址 #2 加入 i2c 总线
   Wire.onReceive(receiveEvent); //当主人发送任何东西时调用receiveEvent
   Serial.begin(9600); //启动串行输出以打印我们收到的内容
}

void loop() {   
   delay(250); 
}

//-----每当从 master 接收到数据时,此函数将执行-----//

void receiveEvent(int howMany) { 
   while (Wire.available()>1) //遍历除最后一个以外的所有内容 
      char c=Wire.read(); //接收字节作为字符
      Serial.print(c); //打印字符
   }
}

主接收器/从发送器

现在让我们看看什么是主接收器和从发送器。

主接收器

主机被编程为请求,然后读取从唯一寻址的从Arduino发送的数据字节。

使用以下函数-

Wire.requestFrom(address,number of bytes)    -    主机用于从从设备请求字节,然后可以使用wire.available()和wire.read()函数来检索字节。

#include <Wire.h> //include wire library void setup() { 
   Wire.begin(); //加入 i2c 总线(主机地址可选)
   Serial.begin(9600); //启动串行输出
} 

void loop() { 
   Wire.requestFrom(2, 1); //从从设备 #2 请求 1 个字节
   while (Wire.available()) //从机可能发送少于请求的数量 
      char c=Wire.read(); //接收一个字节作为字符
      Serial.print(c); //打印字符
   } 
   delay(500); 
}

从发送器

Wire.onRequest(handler)    -    当主机从该从属设备请求数据时,将调用一个函数。

#include <Wire.h> 

void setup() { 
   Wire.begin(2); //使用地址 #2 加入 i2c 总线
   Wire.onRequest(requestEvent); //注册事件
} 

Byte x=0;

void loop() { 
   delay(100); 
} 

//每当 master 请求数据时执行的函数
//这个函数被注册为一个事件,见 setup()

void requestEvent() { 
   Wire.write(x); //响应主机期望的 1 个字节的消息
   x++; 
}

参考链接

https://www.learnfk.com/arduino/arduino-inter-integrated-circuit.html

标签:begin,接收器,教程,Wire,字节,Arduino,主机,void,无涯
From: https://blog.51cto.com/u_14033984/7941755

相关文章

  • 怎样在Windwos主机上配置git环境变量(超详细教程)
    一:概述我们在使用github时,时不时需要使用到git来进行管理,为了更好地方便去操作,我们可以配置环境变量以此来方便我们的操作二:具体说明以及配置过程(git已经安装的情况下,如若未安装,请先安装)(1)查看git的安装目录夹,演示截图如下所示:(2)进入git安装的目录文件夹,里面有以下的相关文件(3)文......
  • MySQL 8.0.34 MGR部署教程
    基于MySQL8.0.34MGR部署一、环境概述OSIPHostnameMySQLVersionDBPortMGRPortRedhat7.9172.20.10.3s18.0.34330633061Redhat7.9172.20.10.4s28.0.34330633061Redhat7.9172.20.10.5s38.0.34330633061    二、在各个节点安装M......
  • 梦幻西游手游详细图文架设教程
    前言提到梦幻西游,大家肯定不陌生。在2001年正式上线,它成为了很多人的第一款网游,陪伴了一代又一代的玩家成长。没错,今天要架设的就是梦幻西游手游!本文讲解梦幻西游手游架设教程,经典的职业、音乐、场景、玩法,就在梦幻西游!我架设的梦幻西游手游请关注我的公众号echeverra,发......
  • 无涯教程-Arduino - 函数声明
    函数允许按代码段构造程序以执行单独的任务,创建函数的典型情况是当一个程序需要在一个程序中多次执行相同的操作时。Arduinosketch或程序中有两个必需的函数,即setup()和loop(),必须在这两个函数的括号之外创建其他函数。定义函数的最常见语法是-函数声明我们可以用两种不同......
  • Adobe InDesign 2023 下载安装及永久激活教程!
    软件介绍:AdobeInDesign是Adobe公司的一个桌面出版(DTP)应用程序,主要用于各种印刷品的排版编辑。该软件是直接针对其竞争对手QuarkXPress而发布的。虽然最初在争取用户方面面临了一些困难,但在2002年发布了MacOSX版本后开始赶超其竞争对手。 安装和使用教程:1.通过文章末尾处下载......
  • elasticsearch 8.7.0的Java API详解教程(一)
    最近作者做一个es的搜索,之前采用的是7.12.1,本来接口都已经基本上写好了,后面es要升级到8.7.0,一升级就连接不上es8.7.0了,后面才发现原来es8是默认采用了HTTPS协议,需要配置认证证书,这个问题搞了好久好久,最后终于搞成功了,在此写一篇博客记录一下。一、pom文件<?xmlversion="1.0"encod......
  • Dreamweaver 2021 下载及安装教程 DW下载 软件激活版
    DreamweaverCC2017中文版简称为“DW”,它是由国外知名公司Adobe开发的一个集网页制作和管理网站于一身的所见即所得网页代码编辑器。拥有实时检查和CSS设计工具等多项增强功能,可以帮助用户更加轻松地创建和更新桌面平台和移动设备的网页内容,另外,它强大的快速检查功能可以帮助网页设......
  • 无涯教程-Arduino - 程序结构
    在本章中,我们将深入研究Arduino程序的结构,并学习Arduino世界中使用的更多新术语,Arduino软件是开源的,Java环境的源代码在GPL下发布,而C/C++微控制器库在LGPL下。Structure结构Arduino程序可分为三个主要部分:结构,值(变量和常量)和函数,在本教程中,我们将了解Arduino软件程序,以及......
  • 无涯教程-Arduino - 主板描述
    在本章中,我们将学习Arduino板上的不同组件,我们将研究ArduinoUNO板,因为它是Arduino板家族中最受欢迎的板,此外,它是入门电子和编码的最佳板,有些开发板看起来与下面给出的开发板有些不同,但是大多数Arduino在这些组件中大多数都是相同的。电源USBArduino板可使用计算机的USB电缆......
  • dig 简明教程
    哈喽大家好,我是咸鱼不知道大家在日常学习或者工作当中用dig命令多不多dig是DomainInformationGroper的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说,它是一个非常常见且有用的工具。无论是简单的DNS解析查找还是更高级的故障排除和分析,dig都能够胜任那......