/*
Autor: Paulo Vitor Gomes Rosendo
GitHub: https://github.com/pvRosendo
Explicação: Sistema simples para ensinamento de multithreading com ESP32 utilizando Leds.
*/
// pinos de LED
const int led1 = 2;
const int led2 = 4;
void setup() {
Serial.begin(115200);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
xTaskCreatePinnedToCore(
Task1, // Função
"Task1", // Nome da task
10000, // tamanho da task - em bytes
NULL, // parametro de entrada para a task - aceita argumento do tipo (*void)
1, // prioridade da task
NULL, // parametro de local para guardar um identificador unico para a task
0); // setando qual em qual nucleo rodara a task (afinidade)
delay(500);
xTaskCreatePinnedToCore(Task2,"Task2", 10000, NULL, 1, NULL, 0);
delay(500);
}
void Task1(void *parametro){
Serial.print("Task1 rodando no nucleo: ");
Serial.println(xPortGetCoreID());
for(;;){
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
delay(1000);
}
}
void Task2(void *parametro){
Serial.print("Task2 rodando no nucleo: ");
Serial.println(xPortGetCoreID());
for(;;){
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2, LOW);
delay(500);
}
}
void loop() {
}