Creative Code

06_SW_INPUT_interrupt(스위치누를때마다 led on/off) 본문

Arduino(C,C++)

06_SW_INPUT_interrupt(스위치누를때마다 led on/off)

빛하루 2023. 8. 11. 11:58
const int SW_0 = 2;
const int led_0 = 13;
const int SW_1 = 3;
const int led_1 = 12;

int led_flag_0 = 0; // 0 : OFF , 1 : ON
int led_flag_1 = 0;
//사용자 함수
void SW0_Pressed(void) {
  if (led_flag_0 == 0) {
    
  } else {
    digitalWrite(led_0,LOW);
    led_flag_0 = 0;
  }
}

void SW1_Pressed(void) {
  if (led_flag_1 == 0) {
    digitalWrite(led_1,HIGH);
    led_flag_1 =1;
  } else {
    digitalWrite(led_1,LOW);
    led_flag_1 = 0;
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(SW_0,INPUT);
  pinMode(led_0,OUTPUT);
  digitalWrite(led_0,LOW);
  pinMode(SW_1,INPUT);
  pinMode(led_1,OUTPUT);
  digitalWrite(led_1,LOW);

  attachInterrupt(digitalPinToInterrupt(SW_0),SW0_Pressed,RISING); //내부 칩에서 자체적으로 신호가 0에서 1로 바뀌면 SW0_Pressed 함수 실행
  attachInterrupt(digitalPinToInterrupt(SW_1),SW1_Pressed,RISING);
}

void loop() {
 
}