반응형
아래 프로그램은 I2C 버스에서 I2C를 지원하는 장치를 검색한다. 장치가 발견되면 Arduino 직렬 모니터에 장치들을 나타낸다. i2c scanner 프로그램이다.
프로그램은 발견된 장치의 7 비트 주소를 16 진수 값으로 보여준다. 이 값은 7 비트 주소를 사용하는 "Wire.begin"기능에 사용될 수 있다. 일부 데이터 시트는 8 비트 주소를 사용하고 일부 예제 스케치는 10 진수 주소를 사용하는 경우가 있다.
코드 출처는 다음 사이트를 참고한다. http://playground.arduino.cc/Main/I2cScanner
소스코드를 아래에 나타낸다. 변경하지 말라는 말이 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | // -------------------------------------- // i2c_scanner // // Version 1 // This program (or code that looks like it) // can be found in many places. // For example on the Arduino.cc forum. // The original author is not know. // Version 2, Juni 2012, Using Arduino 1.0.1 // Adapted to be as simple as possible by Arduino.cc user Krodal // Version 3, Feb 26 2013 // V3 by louarnold // Version 4, March 3, 2013, Using Arduino 1.0.3 // by Arduino.cc user Krodal. // Changes by louarnold removed. // Scanning addresses changed from 0...127 to 1...119, // according to the i2c scanner by Nick Gammon // http://www.gammon.com.au/forum/?id=10896 // Version 5, March 28, 2013 // As version 4, but address scans now to 127. // A sensor seems to use address 120. // Version 6, November 27, 2015. // Added waiting for the Leonardo serial communication. // // // This sketch tests the standard 7-bit addresses // Devices with higher bit address might not be seen properly. // #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknown error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan } |
결과는 아래와 같이 씨리얼 모니터에 출력된다.
반응형
'아두이노' 카테고리의 다른 글
아두이노 나노 스마트폰과 HM-10 연동하기 1 - 초기 설정 (2) | 2019.02.25 |
---|---|
아두이노 온도 습도 미터기 DHT11 과 OLED display 사용 (0) | 2019.02.25 |
아두이노 나노 핀맵 - 아두이노 나노 I2C 핀 (0) | 2019.02.20 |
Fritzing 라이브러리 다운 받는 곳 (0) | 2019.01.28 |
아두이노우노, 아두이노메가 기구 사이즈 도면 (0) | 2019.01.26 |