Arduino

I2C 슬레이브 LED와 Switch 사용하기

작성자 임베디드코리아 작성일25-05-16 00:41 조회171회 댓글0건

첨부파일

<* I2C 슬레이브  LED와 Switch 사용 *>
◎ 마스터로 부터 LED 켜기/끄기 데이터를 받고, 동작 시킨다.
◎  Switch 를  On/Off 데이터를 마스터로 보낸다.

------- < I2C 슬레이브  LED와 Switch 사용 소스 코드 > --------------------------------
#include <Wire.h> 
 
//I2C 주소 지정   
#define SLAVE_ADDRESS 0x35 
int number = 0; 
int state = 0; 
int temp; 
char retMSG[1024] = ""; 
 
const int ledPIN = 7; 
const int swPIN = 5; 
 
void setup() { 
  pinMode( ledPIN, OUTPUT); 
  Serial.begin(9600);
  Serial.println("kkkk"); 
  //슬레이브로써 I2C를 초기화한다. 
  Wire.begin(SLAVE_ADDRESS); 
   
  //I2C 통신을 위한 콜백함수를 지정한다. 
  Wire.onReceive(receiveData); //데이터 수신용 
  Wire.onRequest(sendData);    //데이터 전송 

 
 
void loop() { 
  delay(100); 
  temp = digitalRead(swPIN);
    Serial.println(temp);
  sprintf( retMSG, "Light = %d\n", temp );
 

 
 
void receiveData(int byteCount){ 
 
 while(Wire.available()) { 
    number = Wire.read(); 
   
    if (number == 1){ 
        if (state == 0){ 
            digitalWrite( ledPIN, HIGH ); // set the LED on 
            state = 1; 
            strcpy( retMSG, "Trun on LED\n"); 
        } else{ 
            digitalWrite(ledPIN, LOW); // set the LED off 
            state = 0; 
            strcpy(retMSG, "Turn off LED\n"); 
          } 
    }   
       
     
  } 

 
void sendData(){ 
    Wire.write( retMSG, strlen(retMSG) ); 
}