//Exercise 1 (FreeRTOS)
// Task 1: Blink LED (sourcing mode) at pin D32 every 500ms
// Task 2: If BTNA (internal pull-up enabled) at pin D21 is pressed send message "BTNA" to the serial monitor
// Task 3: If BTNB (external pull-down) at pin D2 is pressed send message "BTNB" to the serial monitor
// Priority Task 1 > (Task 2 = Task 3)
#define LED 32
int BTNA = 21;
unsigned char BTNB = 2;
void setup() {
Serial.begin(115200);
xTaskCreatePinnedToCore(Task1,"Task 1", 1024, NULL, 3, NULL, 1);
xTaskCreatePinnedToCore(Task2,"Task 2", 1024, NULL, 2, NULL, 1);
xTaskCreatePinnedToCore(Task3,"Task 3", 1024, NULL, 2, NULL, 1);
}
void loop() { }
void Task1 (void *pt){
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW); //LED OFF
for(;;){
digitalWrite(LED, HIGH); //LED ON
delay(500);
digitalWrite(LED, LOW); //LED OFF
delay(500);
}
}
void Task2(void *pt){
pinMode(BTNA, INPUT_PULLUP);
while(1){
if(digitalRead(BTNA)==0)
Serial.println("BTNA");
//digitalRead(BTNA)==0? Serial.println("BTNA"):Serial.println("High signal at BTNA");
delay(50);
}
}
void Task3(void *pt){
pinMode(BTNB, INPUT);
for(;;){
if(digitalRead(BTNB)==1){
Serial.println("BTNB");
}
delay(50);
}
}