728x90
반응형
SMALL
1. 개념 정리
인터럽트 : 프로세서가 현재 실행 중인 작업을 중단하고 특정 이벤트에 응답하여 다른 코드 블록을 실행하는 기능
인터럽트가 작동되는 방식은 실행하면 현재 프로세서가 실행중인 작업을 중단한 뒤, 해당 인터럽트 함수를 실행하여 수행한 후, 그 이후에 다시 중단되었던 작업을 마저 실행한다. 이를 통해 외부 이벤트에 빠르게 대응할 수 있다.
외부 인터럽트 : 아두이노 우노의 외부 인터럽트 핀인 D2, D3 핀에서 입력 받으면 실행 중이던 작업을 일시 중단하고 인터럽트 함수를 실행하는 기능이다. 외부 인터럽트를 사용하려면 attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) 함수를 사용하면 된다. 여기서 pin은 외부에서 입력받을 인터럽트 핀, ISR은 인터럽트 발생시에 호출될 함수, mode는 인터럽트가 발생시킬 조(CHANGE, RISING, FALLING, LOW)이다.
2. 실습
다음 그림에서 빨간색 led 가 1초마다 깜빡거릴 동안, 시간 지연없이 스위치가 눌러있을 때 초록색 led가 점등하고 떼어져 있을 때 초록색 led가 소등하게 해주는 코드를 작성하시오.
정답 코드 :
void setup() {
pinMode(13, OUTPUT);
pinMode(8, OUTPUT);
pinMode(2, INPUT);
attachInterrupt(digitalPinToInterrupt(2), interrupt, CHANGE);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
void interrupt() {
int buttonState = digitalRead(2);
digitalWrite(8, buttonState);
}
반응형
LIST
'Develop > Arduino Uno' 카테고리의 다른 글
[아두이노 우노] SoftwareSerial (0) | 2023.12.18 |
---|---|
[아두이노 우노] delay() 함수 없이 주기적인 작업 실행하기 - millis() 함수 (0) | 2023.12.18 |
[아두이노 우노] 내부 인터럽트(타이머 인터럽트) 실습하기 (0) | 2023.12.18 |
[아두이노 우노] I2C 통신 (TWI 통신) (0) | 2023.12.17 |
[아두이노 우노] I2C 통신 방식의 캐릭터 LCD 실습 (0) | 2023.12.17 |