当前位置:首页 > 通信技术 > 通信模块
[导读]   Arduino之间的I2C通讯   i2c地址设定   i2caddress 就像是你家中的地址, 每个slave都有自己的地址,由於线路上只有一个master,加上slav

  Arduino之间的I2C通讯   i2c地址设定

  i2caddress 就像是你家中的地址, 每个slave都有自己的地址,由於线路上只有一个master,加上slave只可以向master通讯,所以master是不需地址的。

  设定 i2c 地址,基本上是没有限制的,只要同一线路上,没有重复就可以了。

  要设定slave板子的地址, 只需要执行Wire.begin(《地址》); 而 master因为不需要地址, 只要Wire.begin()就可以了,。

  以下是一个 slave 设定的例子,把 slave板子的地址设定为 0x12,上载到slave板子上去执行就可以了。

  [pre lang=“arduino” line=“1”file=“slave_01.ino”]#include 《Wire.h》

  #define SLAVE_ADDRESS 0x12

  void setup() {

  Wire.begin(SLAVE_ADDRESS); // join I2C bus as a slave with address 0x12

  }

  void loop() {

  }[/code]

  i2c地址扫瞄

  slave 建立後,就要看看 master 如果找到它了。

  i2c scanner可以说是 master 板子的最基本例子,可以用作测试线路上连接了的设备的存在(只测试存在性,并非测试其功能)。

  i2c_scanner 其实也很简单, 由 master 向所有地址发出 beginTransmission 再 endTransmission, 尝试建立连线。 在 beignTransmission 中输入 slave 的地址, 就可以测试该地址的装置了。

  如果error = 0(没 error),即代表这个地址有设备登记

  如果 rror = 4(这是 Wire 库的设定,不要问我为什麽是 4),即代表这个地址可能有设备, 但有错误。

  否则,就代表该地址没有设备使用了。

  以下是一个简单的 i2c scanner 程式:

  [pre lang=“arduino” line=“1” file=“i2c_scanner.ino”]#include 《Wire.h》

  #define SERIAL_BAUD 57600

  void setup()

  {

  Wire.begin();

  Serial.begin(SERIAL_BAUD);

  Serial.println(“I2C Scanner started”);

  Serial.println();

  }

  void loop()

  {

  uint8_t error, i2cAddress, devCount, unCount;

  Serial.println(“Scanning.。。”);

  devCount = 0;

  unCount = 0;

  for(i2cAddress = 1; i2cAddress 《 127; i2cAddress++ )

  {

  Wire.beginTransmission(i2cAddress);

  error = Wire.endTransmission();

  if (error == 0)

  {

  Serial.print(“I2C device found at 0x”);

  if (i2cAddress《16) Serial.print(“0”);

  Serial.println(i2cAddress,HEX);

  devCount++;

  }

  else if (error==4)

  {

  Serial.print(“Unknow error at 0x”);

  if (i2cAddress《16) Serial.print(“0”);

  Serial.println(i2cAddress,HEX);

  unCount++;

  }

  }

  if (devCount + unCount == 0)

  Serial.println(“No I2C devices found ”);

  else {

  Serial.print(devCount);

  Serial.print(“ device(s) found”);

  if (unCount 》 0) {

  Serial.print(“, and unknown error in ”);

  Serial.print(unCount);

  Serial.print(“ address”);

  }

  Serial.println();

  }

  Serial.println();

  delay(5000);

  }

  [/code]

  在这个例子中, 应该可以得到以下的结果:

  I2C Scanner started

  Scanning.。。

  I2C device found at 0x12

  1 device(s) found

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

新款Arduino UNO R4支持两个版本,为创客社区和专业设计人士提供前所未有的性能和新的可能性

关键字: 开发板 Arduino

摘要:提出了一种基于Arduino集成开发程序的智能刮痧仪设计方案,包括对设计原理、软硬件部分设计及实验结果的介绍。利用压力传感器及姿态传感器监测并记录刮痧仪的速度、压力和姿态等参数,实现对刮痧治疗的数据化。该设计方案切...

关键字: 中医 Arduino 刮痧仪

摘要:针对地方高校开放性实验室的建设与发展,设计了一套用于实验室的智能门禁管理系统,该系统以Arduino开源平台作为核心控制组件,具备光学指纹解锁功能、多位按键密码解锁功能以及门禁卡识别解锁功能,通过结合3种不同的解锁...

关键字: Arduino 门禁 指纹解锁

社区成员将有机会赢得限量版Arduino UNO Mini

关键字: e络盟 开发板 Arduino

摘 要 :随着信息时代的发展和人民日益增长的美好生活的需要,智能家居系统的设计越来越受到广泛关注。文中设计基于 Arduino 与 OneNET 云平台的简易智能家居系统,以 Arduino Sensor Sheild...

关键字: Arduino 传感器 智能家居 ESP8266 OneNET 远程操控

摘 要 :随着生活节奏的加快,现代人的睡眠普遍不足,而传统闹钟唤醒方式单一且粗暴,实际效果欠佳,因此,设计一款个性化且符合人体苏醒习惯的卧室智能唤醒系统。该系统基于 Arduino 集成开发环境,利用 PWM 基本原理实...

关键字: 智能唤醒 传感器 远程控制 Arduino 智能家居 物联网

准备好与Arduino尝试不同的东西了吗?您不必局限于用C编程。将这些替代语言用于测试驱动器。

关键字: Arduino 编程语言

Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE)。它适用于爱好者、艺术家、设计师和对于“互动”有兴趣的朋友们。

关键字: Arduino 单片机

要了解Arduino就先要了解什么是单片机,Arduino平台的基础其实就是AVR指令集的单片机。

关键字: Arduino 单片机

摘 要 :文中设计了一款智能家居系统,主要介绍了语音识别技术的相关基础原理以及流程。详细分析了一段语音信号从采集到预处理,提取特征值后与语音库中的声学模型比对得出识别结果的过程及隐马尔科夫的建模过程、算法流程,最后利用...

关键字: 智能家居 语音识别 Arduino 隐马尔科夫模型 特征提取
关闭
关闭