-인터럽트란 정상 루틴을 수행하는 도중 긴급한 요청이 있을 때,
요청한 루틴(인터럽트 서비스 루틴-인터럽트 콜백 함수의 내용)을 먼저 수행(정상 루틴은 일시정지) 후
다시 정상 루틴으로 돌아오는 방식이다.
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란 인터럽트 콜백 함수명
change란 high에서 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 |