

기초 0. 3개 이상의 Multi Task 작업
2014.05.13 16:33
/*
3개의 작업을 서로 독립적으로 수행하는 예제입니다. - 1초마다 시리얼통신 작업 - 0.5, 1초 간격으로 ON/OFF 하는 LED - 1, 2초 간격으로 ON/OFF 하는 LED
이 예제로 많은 TASK를 만들어 확장이
가능합니다. 출처: http://whiteat.com/bArduino 보드: WAT-128 Arduino */ #include <WAT_Multi.h> WMulti tSerial = WMulti(1000); WMulti tLED1 = WMulti( 3000); WMulti tLED2 = WMulti( 3000); // 프로그램 시작 - 초기화 작업 void setup() {
Serial.begin(115200); //시리얼 통신 초기화
pinMode(PA1,OUTPUT); //PA1 포트를 출력으로 설정
pinMode(PA2,OUTPUT); //PA2 포트를 출력으로 설정 } void loop() {
TaskSerial(&tSerial); // 시리얼 통신 작업
TaskLED1(&tLED1); // LED1 작업
TaskLED2(&tLED2); // LED2 작업 } int g_Timer = 0; // 1초마다 타이머 값을 전송 void
TaskSerial(WMulti * _task) { if(!_task->IsMyTurn()) return;
Serial.println(++g_Timer); } // PA1 에 연결된 LED 를 0.5초 ON 하고, 1초간 OFF 를 반복 void
TaskLED1(WMulti * _task ) { if(!_task->IsMyTurn()) return; switch(_task->Status) { case 0:
digitalWrite(PA1,HIGH);
_task->Next(1000); break; case 1: digitalWrite(PA1,LOW); _task->SetNext(0,500); break; default: _task->Status = 0; } } // PA2 에 연결된 LED 를 1초 ON 하고, 2초간 OFF 를 반복 void
TaskLED2(WMulti * _task ) { if(!_task->IsMyTurn()) return; switch(_task->Status) { case 0:
digitalWrite(PA2,HIGH);
_task->Next(2000); break; case 1:
digitalWrite(PA2,LOW);
_task->SetNext(0,1000); break; default: _task->Status = 0; } }
모니터링 화면