// Program: Template_multitasking.ino
// งาน = Task หรือ Treading
// Multitasking หลายๆงาน
#define LED0 2
#define LED1 21
#define SW0 22
uint32_t previousTime0 = 0;
uint32_t previousTime1 = 0;
uint32_t previousTime2 = 0;
uint32_t currentTime = 0;
uint32_t time_task0 = 10;
uint32_t time_task1 = 10;
uint32_t time_task2 = 2000;
boolean stateSW;
void setup() {
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
// pinMode(LED1, OUTPUT);
pinMode(SW0, INPUT_PULLUP);
// pinMode(SW1, INPUT);
}
void loop(){
currentTime = millis();
// Task0 : Read SW0
if(currentTime - previousTime0 >= time_task0){
previousTime0 = currentTime;
stateSW = digitalRead(SW0);
}
// Task1 : Activate LED0
if(currentTime - previousTime1 >= time_task1){
previousTime1 = currentTime;
digitalWrite(LED0, !stateSW);
}
// Task2 : Activate LED1 every 2 sec.
if(currentTime - previousTime2 >= time_task2){
previousTime2 = currentTime;
digitalWrite(LED1, !digitalRead(LED1));
}
}