18回答

2收藏

【小e智能硬件开发平台】 基于 小e开发板(ESP8266) 的I2C总线...

 

其他 其他 8027 人阅读 | 18 人回复 | 2016-07-17

10,000套小e体验板免费申请地址:
https://www.cirmall.com/bbs/thread-47660-1-1.html


【小e智能硬件开发平台】 基于 小e开发板(ESP8266) 的I2C总线扫描
因为挂在I2C总线的装置, 经常不确定该装置的I2C地址是什么, 因此使用ArduinoIDE做了个I2C总线扫描程序!
Arduino IDE安装与设置可以参考 :
游客,如果您要查看本帖隐藏内容请回复
程序使用小e开发板 的I2C , GPIO02:SDA,GPIO14:SCL.
气压传感器与OLED的I2C跳线接法如下图, ADC拨码可任意设置.

扫描后由USB串口输出结果.
气压传感器(BMP180) : 0x77
OLED : 0x3C
ADC拨码可任意拨动, 观查读取的值.


主程序如下:
  1. [hide]
  2. #include "Wire.h"

  3. /*
  4. * xiao_e1 : http://www.kaifakuai.com/kfkdev/Downloatd2.html
  5. *
  6. * jumper assignment  ( ":" is open, "|" is short)
  7. *  Audio4 RGB3 BARO2 OLED1
  8. *  ::::   |::   ||    ||
  9. *
  10. */
  11. int pinLED = 12; // GPIO12 for xiao_e1 ESP8266 LED-Red
  12. int xiao_e_SDA = 2; // GPIO02 for xiao_e1 ESP8266 I2C-SDA
  13. int xiao_e_SCL = 14; // GPIO14 for xiao_e1 ESP8266 I2C-SCL
  14. int xiao_e_ADC = 17; // ADC (A0=17) for xiao_e1 ESP8266 I2C-SCL

  15. byte start_address = 1; // scan I2C device from 0x01
  16. byte end_address = 127; // scan I2C device end to 0xFF

  17. void scanI2CBus(byte from_addr, byte to_addr)
  18. {
  19.   byte rc;
  20.   byte data = 0; // not used, just an address to feed to twi_writeTo()
  21.   for( byte addr = from_addr; addr <= to_addr; addr++ ) {
  22.     rc = twi_writeTo(addr,&data,0,1); // for xiao_e1 ESP8266
  23.     if(rc==0) {
  24.       Serial.print("addr: ");
  25.       Serial.print(addr,DEC);
  26.       Serial.print("\t HEX: 0x");
  27.       Serial.print(addr,HEX);
  28.       Serial.println("\t found!");
  29.     }
  30.   }
  31. }

  32. void setup()
  33. {
  34.     pinMode(pinLED,OUTPUT);
  35.     Wire.begin(xiao_e_SDA, xiao_e_SCL);

  36.     Serial.begin(9600);
  37.     delay(5000);

  38.     Serial.println("--- I2C Bus Scanner Test ---");
  39.     Serial.print("starting scanning of I2C bus from ");
  40.     Serial.print(start_address,DEC);
  41.     Serial.print(" to ");
  42.     Serial.print(end_address,DEC);
  43.     Serial.println("...");
  44.     Serial.println();

  45.     scanI2CBus( start_address, end_address );

  46.     Serial.println("--- I2C Bus Scanner Complete ---");
  47. }

  48. void loop()
  49. {
  50.   Serial.print("ADC : ");
  51.   Serial.println(analogRead(xiao_e_ADC));

  52.   digitalWrite(pinLED,HIGH);
  53.   delay(1000);
  54.   digitalWrite(pinLED,LOW);
  55.   delay(1000);
  56. }[/hide]
复制代码
分享到:
回复

使用道具 举报

回答|共 18 个

倒序浏览

沙发

噗噗熊

发表于 2016-7-18 09:26:54 | 只看该作者

楼主是申请到了对么
板凳

jackh

发表于 2016-7-18 11:51:52 | 只看该作者

噗噗熊 发表于 2016-7-18 09:26
楼主是申请到了对么

对,
https://www.cirmall.com/bbs/thread-47660-1-1.html
小e体验板 使用方法也一样
地板

bjwl_6338

发表于 2016-7-18 18:48:32 | 只看该作者

学习小e体验板使用方法
5#

gxchun

发表于 2016-7-21 23:58:21 | 只看该作者

好玩,实用的小e。
6#

努力的人

发表于 2016-8-12 21:08:44 | 只看该作者

请问一下楼主是如何使用Arduino IDE开发的,IDE直接就支持吗,还是需要下载什么组件,使得与Arduino开发一样
7#

jackh

发表于 2016-8-12 23:41:50 | 只看该作者

努力的人 发表于 2016-8-12 21:08
请问一下楼主是如何使用Arduino IDE开发的,IDE直接就支持吗,还是需要下载什么组件,使得与Arduino开发一 ...

Arduino IDE直接就支持生成ESP8266的固件.
需要下载 ESP8266开发板组件,
可以参考 : http://bbs.ickey.cn/community/forum.php?mod=viewthread&tid=46814
8#

zhangdaijin

发表于 2016-8-17 14:54:03 | 只看该作者

谢谢楼主分享
9#

kazuyuki

发表于 2016-8-18 16:56:24 | 只看该作者

第一次接触esp8266,来学习学习
10#

xy789

发表于 2016-11-10 16:24:23 | 只看该作者

111111111111111111111
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条