본문 바로가기

공대생 주석마루/아두이노 UNO

(7) 인터럽트 Interrupt

-인터럽트란 정상 루틴을 수행하는 도중 긴급한 요청이 있을 때,

요청한 루틴(인터럽트 서비스 루틴-인터럽트 콜백 함수의 내용)을 먼저 수행(정상 루틴은 일시정지) 후 

다시 정상 루틴으로 돌아오는 방식이다.

millis 함수를 이용한 시간 카운트와 다른 방식이다.

아두이노 우노에서는 디지털 2,3번 핀만이 수행할 수 있다.

또한 아두이노에서는 인터럽트 콜백 함수에 대한 변수형이 void로 고정된다.

왜냐하면 인터럽트 콜백 함수로 값을 보낼수도 값을 알 수도 없기 때문이다.

또한 여러 개를 인터럽트로 설정하여도 동시에 수행이 불가하다. 

구성품은

아두이노 우노, 버튼, 연결선, 저항, LED, 브렛보드 이다.


-코드는

void setup() {
  // put your setup code here, to run once:
pinMode(12,OUTPUT);
pinMode(2,OUTPUT);
attachInterrupt(1,swt,CHANGE);

}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(12,HIGH);
delay(1000);
digitalWrite(12,LOW);
delay(1000);
}
void swt()
{
  int button = digitalRead(3);
  digitalWrite(2,button);
}


12번 핀은 1초마다 점멸하는 정상 루틴

2번 핀은 출력, 3번 핀은 입력이다.

하지만 3번 핀은 인터럽트 입력이므로 인터럽트 함수로 표현

attachInterrupt(1,swt,CHANGE)에서

swt란 인터럽트 콜백 함수명

changehigh에서 low, low에서 high로 변할 때 인터럽트 수행을 하도록 설정한 것이다.

1이란 1은 디지털 3번핀, 0은 디지털 2번핀을 입력으로 두었을 때를 말한다.

따라서 버튼을 누르면 인터럽트를 수행해 불이 켜지도록 한 것이다.


-회로도는



-동영상


'공대생 주석마루 > 아두이노 UNO' 카테고리의 다른 글

(9) 조이스틱 Joystick  (0) 2018.02.27
(8) tone함수로 연주하기  (0) 2018.02.26
(6) millis 함수  (0) 2018.02.24
(5) 아날로그 출력  (0) 2018.02.23
(4) 아날로그 입력  (0) 2018.02.23