// Prueba Multitarea(Hilos)RTOS en Diferente Nucleos ESP32 

TaskHandle_t Tarea0;    // Tarea0 parpadeo LED 0,3 segundos
TaskHandle_t Tarea1;    // Tarea1 parpadeo LED 1 Segundo
TaskHandle_t Tarea2;    // Tarea2 Giro Motor Lento
TaskHandle_t Tarea3;    // Tarea3 Giro Motor Rapido

#define x_paso 15   // Define el Pin de STEP para Motor de eje X
#define x_dire 2    // Define el Pin de DIR  para Motor de eje X
#define y_paso 14   // Define el Pin de STEP para Motor de eje Y
#define y_dire 27   // Define el Pin de DIR  para Motor de eje Y
int x_retardo = 3000;   // Menor numero el giro es mas rapido X
int y_retardo = 500;   // Menor numero el giro es mas rapido Y

void setup() {
 Serial.begin(115200);
 xTaskCreatePinnedToCore(loop0,"Tarea_0",1000,NULL,1,&Tarea0,0); // Core 0
 xTaskCreatePinnedToCore(loop1,"Tarea_1",1000,NULL,1,&Tarea1,0); // Core 0
 xTaskCreatePinnedToCore(loop2,"Tarea_2",1000,NULL,1,&Tarea2,1); // Core 1
 xTaskCreatePinnedToCore(loop3,"Tarea_3",1000,NULL,1,&Tarea3,1); // Core 1
 pinMode(12,OUTPUT); pinMode(13,OUTPUT);           // Define Salida LEDs
 pinMode(x_paso,OUTPUT); pinMode(x_dire, OUTPUT);  // Define Salida Motor
 pinMode(y_paso,OUTPUT); pinMode(y_dire, OUTPUT);  // Define Salida Motor
}
void loop() {
      delay (4000);  
      digitalWrite(x_dire, LOW);   // direccion de giro 0
      digitalWrite(y_dire, LOW);   // direccion de giro 0
      delay (4000);
      digitalWrite(x_dire, HIGH);   // direccion de giro 1
      digitalWrite(y_dire, HIGH);   // direccion de giro 1 
} 
void loop0(void *parameter){  // Tarea0 parpadeo LED 0,3 segundos
 while(1==1){
  digitalWrite(13, HIGH);
  delay(300);
  digitalWrite(13, LOW);
  delay(300);
 } 
}
void loop1(void *parameter){  // Tarea1 parpadeo LED 1 Segundo
 while(1==1){
  digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(12, LOW);
  delay(1000);
 } 
}
void loop2(void *parameter){  // Tarea2 Giro Motor Lento
 while(1==1){
    digitalWrite(x_paso, HIGH);      
    delayMicroseconds(x_retardo);          
    digitalWrite(x_paso, LOW);       
    delayMicroseconds(x_retardo); 
 } 
}
void loop3(void *parameter){   // Tarea3 Giro Motor Rapido
 while(1==1){ 
    digitalWrite(y_paso, HIGH);      
    delayMicroseconds(y_retardo);          
    digitalWrite(y_paso, LOW);       
    delayMicroseconds(y_retardo); 
 } 
}
A4988
A4988