kocoafabeditor 2018-05-30 08:58:26
위 링크에 I2C 주소 확인하는 소스코드가 빠져있어서 아래 직접 전달드립니다.
아래 코드를 복사하여 사용하세요.
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; 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("Unknow 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);
}
kocoafabeditor 2018-05-30 08:52:28
안녕하세요. 코코아팹입니다.
아두이노로 wire라이브러리를 이용하여 I2C 통신을 할 때 Slave 장비들은 각각의 I2C를 이용해서 구별을 해줍니다.(센서의 I2C 주소는 데이터시트를 참고하시거나 아래 링크에 있는 I2C 주소 확인하는 코드를 이용해보세요,)
I2C 주소 확인하기 : https://kocoafab.cc/tutorial/view/689 ( 중간쯤 있습니다.)
각각의 센서의 예제 코드를 보시면 Addr 관련 변수를 미리 선언해 두고 이를 사용해서 데이터를 받는 코드가 있습니다.
이 Addr 주소를 따로 기억해 두고, 필요한 센서에 따라 Addr주소를 바꿔가면서 쓰시면 될 것 같습니다.