广告

使用Arduino 尋找裝置的I2C 地址

2019-1-7 18:50 141 1 分类: MCU/ 嵌入式

#Arduino #Arduino UNO #Arduino MEGA2560 #Arduino DUE #I2C #IIC #I2C LCD #1602 LCD #LCD


這裏我先用一張圖來解釋Arduino 專案的發展需要的工具

我們常常到購物網買一些Arduino的sensor。。。由於Sensor 百花齊放,做的人沒有提供資料,賣的人也不清楚,技術資料轉來轉去,大家一片混亂,拿I2C界面LCD來講,明明範例的位置是0x27,但是我們照着寫就是動不了,差半天才知道LCD模組的位置不同,現在我就提供大家一個方法I2C address Scan 程式有了它就不用再傷腦了。


完整的程式碼如下:


// I2C Scanner

// Written by Nick Gammon http://gammon.com.au/i2c

// Date: 20th April 2011

// 2016-09-30

//中文註解李進衛

//IIC 位址掃描程式

//適用於Arduino UNO,DUE,MEGA2560

// 技術參考網址 http://playground.arduino.cc/Main/I2cScanner

// 作者網址(他有詳細說明I2C通信格式與原理) : http://gammon.com.au/i2c


#include


void setup() {

  Serial.begin (115200);


  // Leonardo: wait for serial port to connect

  while (!Serial)

    {

    }


  Serial.println ();

  Serial.println ("I2C scanner. Scanning ...");

  byte count = 0;

 

  Wire.begin();

  for (byte i = 8; i < 120; i++) //地址掃描

  {

    Wire.beginTransmission (i); //對裝置發出I2C位址函數解釋請參考: https://www.arduino.cc/en/Reference/WireBeginTransmission

    if (Wire.endTransmission () == 0) //假如裝置有ACK 就顯示其位址資訊藉由RS232傳送出來

// 函數解釋請參考: https://www.arduino.cc/en/Reference/WireEndTransmission

      {

      Serial.print ("Found address: ");

      Serial.print (i, DEC);

      Serial.print (" (0x");

      Serial.print (i, HEX);

      Serial.println (")");

      count++;

      delay (1);  // maybe unneeded?

      } // end of good response

  } // end of for loop

  Serial.println ("Done.");

  Serial.print ("Found ");

  Serial.print (count, DEC);

  Serial.println (" device(s).");

}  // end of setup


void loop() {}


广告

文章评论 3条评论)

登录后参与讨论

moniqiuwen 2019-1-9 16:00

阿衛: 圖片現在有看到了嗎?
现在可以看到了,您其他几篇博文的图片我也是看不到,好像都是blogspot的。。。

阿衛 2019-1-9 13:26

moniqiuwen: 博主盆友,blogspot的图看不到。。。
圖片現在有看到了嗎?

moniqiuwen 2019-1-8 14:11

博主盆友,blogspot的图看不到。。。
相关推荐阅读
阿衛 2019-01-07 19:01
五分鐘搞定Arduino I2C LCD Display
對於不懂的Firmware的人要進入Firmware的世界真的很難,現在有一種工具很快就讓人上手使用,我今天要介紹的就是Arduino UNO + I2C LCD模組。什麼是Arduino?圖一 &n...
阿衛 2019-01-07 18:59
五分鐘搞定Arduino控制SPI
什麼是SPI?https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_BusSPI 是一種四線制串列匯流排介面,為主/從結構,四條導線分別為...
阿衛 2019-01-07 18:55
如何使用Arduino 替代 NI USB-6501 DAQ
#Arduino#DAQ#Labview#Arduino UNO#NI USB-6501如何使用Arduino 替代 NI USB-6501 DAQ所需的硬體以及軟體如下:Ardu...
阿衛 2019-01-07 18:53
使用Arduino 來偵測Rotary Encoder
# Arduino# Rotary Encoder# Interrutp# Ext interrupt# Arduino for Encoder# Arduino for Rotary# 兩個剪貼搞定...
我要评论
3
1
广告