■ I2C 통신을 위한장치는 마스터(Master)와 슬레이브(Slave)로 나눈다.
▶ 하나의 마스터에 다수의 슬레이브가 연결될 수 있음.
▶ 구별을 위해 각 슬레이브마다 고유한 주소 값을 갖도록 함.
▶ 슬레이브의 주소 값을 이용해 마스터는 한번에 하나의 슬레이브와 통신을 수행 함.
------< I2C 통신 송신 소스 코드 > -------------------------------------------
#include<Wire.h>
void setup() {
Wire.begin();
}
void loop() {
Wire.beginTransmission(2); // 주소 1를 가진 슬레이브에 데이터 송신을 시작
Wire.write("1");
Wire.write("2");
Wire.write("3");
Wire.endTransmission(); // 슬레이브에 1, 2, 3이라는 데이터 송신
delay(500);
}
------< I2C 통신 수신 소스 코드 > -------------------------------------------
#include<Wire.h>
void setup() {
Serial.begin(9600);
Wire.begin(2); // 슬레이브 자신을 1이라는 주소로 지정
Wire.onReceive(receiveEvent); // 데이터를 수신했을 시 receiveEvent실행
}
void loop() {
}
void receiveEvent(int parameter) { // void형 매개 변수 int형형
while(Wire.available() > 0) { // 버퍼에 데이터가 찼는지 확인
char a = Wire.read(); // 버퍼에 찬 데이터 Read
Serial.print(a);
Serial.print(" ");
} // 시리얼 모니터에 1, 2, 3이 출력됩니다.
}