728x90
반응형
SMALL
타이머를 사용하여 delay() 함수 없이 주기적인 작업을 실행해보자. 이번에 내부 인터럽트를 사용할 예정이다.
#include <TImerOne.h>
int rLedPin = 13;
int gLedPin = 8;
int buttonPin = 2;
int rLedState = LOW;
int gLedState = LOW;
void setup() {
pinMode(rLedPin, OUTPUT);
pinMode(gLedPin, OUTPUT);
pinMode(buttonPin, INPUT);
// 내부 인터럽트(타이머 인터럽트)
Timer1.initialize(1000000); // 10의 6승 -> 1초 : us 단위
Timer1.attachInterrupt(blink); // -> 1초마다 CPU에게 내부 인터럽트, ISR 함수 이름은 blink();
// 외부 인터럽트
attachInterrupt(0, buttonRead, CHANGE); // 2번핀
}
void loop(){}
// 내부 인터럽트 - R.Led가 1초마다 ON/OFF 한다.
void blink(){
rLedState != rLedState;
digitalWrite(rLedPin, rLedState);
}
// 외부 인터럽트 - G.Led가 1초마다 ON/OFF 한다.
void buttonRead(){
gLedState != gLedState;
digitalWrite(gLedPin, gLedState);
}
반응형
LIST
'Develop > Arduino Uno' 카테고리의 다른 글
[아두이노 우노] SoftwareSerial (0) | 2023.12.18 |
---|---|
[아두이노 우노] delay() 함수 없이 주기적인 작업 실행하기 - millis() 함수 (0) | 2023.12.18 |
[아두이노 우노] I2C 통신 (TWI 통신) (0) | 2023.12.17 |
[아두이노 우노] I2C 통신 방식의 캐릭터 LCD 실습 (0) | 2023.12.17 |
[아두이노 우노] 인터럽트와 외부 인터럽트 (0) | 2023.12.17 |