ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • I2C 통신의 기본적인 연결하기
    Arduino/I2C 통신 2020. 11. 5. 18:04

    하드웨어의 연결

    DATA PIN은 아두이노의 A4핀이고, CLK  PIN은 아두이노의 A5핀이다. 
    두 아두이노 간에 서로 각 핀들을 서로 연결한다. 
    마스터 아두이노의 5V 핀을 슬레이브 아둥노의 Vin 핀에, 그리고 마스터 GND핀을 슬레이브 GND핀에 연결한다.

    I2C의 통신을 위해서는 Wire.h 헤더 파일을 추가해야 한다.

     

     

    Slave가 보낸 데이터 값을 Master가 읽는 예제 

    Master 소스 코드

    더보기
    //  I2C 통신. 
    //  Master : Sender
    #include <Wire.h>
    #define   SLAVE   4 //  Slave의 주소. 마스터에서는 자유롭게 선택 가능하지만
                        //  슬레이브에서는 고정되어야 한다.
    void setup() {
      // put your setup code here, to run once:
      Wire.begin();
    
      Serial.begin(9600);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      //  받을 데이터가 integer이면, sizeof(int)로 읽으면 된다.
      Wire.requestFrom(SLAVE,1);  //  4번 주소로부터 1바이트를 요청
      
      char data = Wire.read();
    
      Serial.println(data);
    
      delay(1000);
    }

     

     

    Slave 소스 코드

    더보기
    #include <Wire.h>
    
    #define   SLAVE   4 //  Slave의 주소. 마스터가 4번 주소로 설정했으니, 4번으로 설정해야 한다.
    
    //  4번으로 주소
    void setup() {
      // put your setup code here, to run once:
      Wire.begin(SLAVE);
    
      Serial.begin(9600);
    
      Wire.onRequest(onMaster); //  요청이 들어올 때,
                                //  마스터의 Wire.read() 함수가 호출되면  
                                //  슬레이브의 onMaster함수가 호출된다. 
    }
    
    char i = '1';
    
    void onMaster()
    {
      if (i == '9')
      {
        i = '1';
      }
      //  마스터에게 전닳줘야 한다.
      Wire.write(i++);
    }
    
    void loop() {}

     

     

    댓글

Designed by Tistory.