일상 박형

카테고리       

[복사하고 따라하는 아두이노] 아두이노 인터럽트 기능

 

안녕하세요 공대 박형입니다.

 

오늘은 아두이노 인터럽트 예제를 실습해보겠습니다.

 

코드부터 보시죠.

 

const int r_led = 13;



int sw = 2;







void setup()



{

  Serial.begin(9600);

  pinMode(sw, INPUT);

  pinMode(r_led, OUTPUT);

  attachInterrupt(0, r_led_off, RISING);        // D2 의 신호가 0에서 1이될 때 r_led_off 함수 실행

}



void loop()



{

  digitalWrite(r_led, HIGH);

  delay(2000);

  digitalWrite(r_led, LOW);

  delay(2000);

}



void r_led_off() {

  digitalWrite(r_led, LOW);

}

 

 

동작 영상입니다.

 

 


디지털 신호(D13)을 사용해 2초마다 LED를 키고 끄는 프로그램입니다. 여기에 인터럽트를 추가해 버튼을 누르면(D2핀이 0 에서 1이 된다면) r_lod_off함수를 실행시켜 LED를 강제로 끄는 동작을 추가했습니다.

이와같이 인터럽트를 사용하면 프로그램이 delay에 걸려있거나 어느 동작을 실행중이더라도 바로 인터럽트 동작을 수행할 수 있습니다. 인터럽트를 사용하면 작성한 코드 어디서나 추가 동작을 실행시킬 수 있습니다.

 

아두이노 인터럽트 함수

 

1. LOW : 핀 값이 LOW일 때 동작.
2. HIGH : 핀 값이 HIGH일 때 동작.
3. CHANGE : 핀 값이 변했을 때 동작.
4. RISING : 핀 값이 LOW에서 HIGH로 변했을 때 동작.
5. FALLING : 핀 값이 HIGH에서 LOW로 변했을 때 동작.

이번 예제에서는 RISING 함수를 사용해 인터럽트핀이 0에서 1이 되는 순간에 인터럽트가 실행되는 기능을 사용했습니다. 각 상황에 맞게 주어진 함수를 적절히 적용하면 원하는 동작을 원활히 만들어 낼 수 있습니다. 시간적 여유가 되신다면 각 함수들을 모두 사용해 인터럽트에 대한 이해도를 높이는것도 좋은 방법입니다.

 

 

 

다음 시간에는 EEPROM 예제를 실습해보겠습니다.

 

궁금한 부분은 문의 주시면 답변드리겠습니다.

 

읽어주셔서 감사합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band