// Definição dos pinos dos LEDs
const int ledVermelho = 4;
const int ledVerde = 5;
// Função para controlar o LED vermelho no Core 0
void controlaLedVermelho(void *parameter) {
// Variável para alternar o estado do LED
bool estadoVermelho = LOW;
while (true) {
// Alterna o estado do LED vermelho
estadoVermelho = !estadoVermelho;
digitalWrite(ledVermelho, estadoVermelho);
// Espera por 2 segundos
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
// Função para controlar o LED verde no Core 1
void controlaLedVerde(void *parameter) {
// Variável para alternar o estado do LED
bool estadoVerde = LOW;
while (true) {
// Alterna o estado do LED verde
estadoVerde = !estadoVerde;
digitalWrite(ledVerde, estadoVerde);
// Espera por 3 segundos
vTaskDelay(3000 / portTICK_PERIOD_MS);
}
}
void setup() {
// Configurando os pinos dos LEDs como saída
pinMode(ledVermelho, OUTPUT);
pinMode(ledVerde, OUTPUT);
// Criando as tarefas:
// Tarefa do LED vermelho no núcleo 0
xTaskCreatePinnedToCore(
controlaLedVermelho, // Função da tarefa
"TaskLedVermelho", // Nome da tarefa (para identificação)
1000, // Tamanho da stack
NULL, // Parâmetro da tarefa (não usado aqui)
1, // Prioridade da tarefa
NULL, // Handle da tarefa (não usado aqui)
0 // Núcleo onde a tarefa será executada (Core 0)
);
// Tarefa do LED verde no núcleo 1
xTaskCreatePinnedToCore(
controlaLedVerde, // Função da tarefa
"TaskLedVerde", // Nome da tarefa
1000, // Tamanho da stack
NULL, // Parâmetro da tarefa
1, // Prioridade da tarefa
NULL, // Handle da tarefa
1 // Núcleo onde a tarefa será executada (Core 1)
);
}
void loop() {
// O loop permanece vazio porque as tarefas estão sendo controladas
}