13-3 멀티태스킹 MSTimer2 함수 활용

공부하는 학생 A·2024년 2월 20일

아두이노 

목록 보기
68/74

MSTimer2 라이브러리 활용

[스케치] - [라이브러리 포함하기] -[라이브러리 관리]
"MS-Timer2"로 검색한 후 설치

스케치 13-5 MsTimer2 라이브러리를 활용한 멀티태스킹

#include <MsTimer2.h>
int output=1;
void flash() {
   digitalWrite(13, output);
   output = !output; // onoff는 1과 0을 반복함, ! 연산자는 값을 반전함.
}
void setup() {
    pinMode(13, OUTPUT);
    MsTimer2::set(1000, flash); // 1초 마다 flash 함수를 호출
    MsTimer2::start();          // 시작
}
void loop() {
  // 여기에 다른 코드를 넣을 수 있다.
}

스케치 13-5 분석

이 프로그램은 1초마다 LED를 깜박인다.
loop( ) 속에 다른 프로그램을 넣어서 다중 작업을 할 수 있다.

Timer 라이브러리 활용

타이머 라이브러리를 다운로드
https://github.com/JChristensen/Timer

라이브러리를 다운받고 압축을 푼 후 전체 폴더를 [내 문서] - [Arduino] - [Library]
폴더에 옮기고 아두이노를 다시 실행시킨다.

아두이노 IDE에서 [파일] - [예제] - [Timer-master] - [blink2] 를 열어서
실행해보면 LED가 깜박인다.

스케치 13-6 1초당 10번 아날로그 신호 모니터링

#include "Timer.h"
Timer t;   // instantiate the timer object
Timer led; // timer for analogRead function.
void setup(void){
    Serial.begin(9600);
    pinMode(13, OUTPUT);
    t.oscillate(13, 1000, HIGH); // 1초 마다.
    led.every(100, readData);
}
void loop( ){
    t.update();
    led.update();
}
void readData(){
  Serial.println(analogRead(A0));
}

스케치 13-6 분석

만약 1초당 A0 포트부터 10번의 아날로그 신호를 읽으려면 every() 함수로 해결할 수 있다.
메인 루프에 delay() 함수를 넣으면 모든 타이머들이 뒤로 밀려나기 때문에 주의가 필요하다.

스케치 13-6 실행결과

profile
Shine like a star, Just like a star

0개의 댓글