Funzione yield().

Gli sviluppatori di Arduino si sono assicurati che la funzione delay() non solo blocchi l'esecuzione del codice, ma consenta anche l'esecuzione di altro codice durante questo ritardo. Questa funzione si chiama yield() e funziona come segue:
void yield() 
     //esecuzione del codice
}
Se dichiari una funzione, il codice al suo interno verrà eseguito quando viene attivato un ritardo delay() nel programma! Questa soluzione, sebbene sembri ridicola, allo stesso tempo consente di eseguire rapidamente e senza scrivere funzioni e timer aggiuntivi per implementare un paio di attività parallele. Questo è in linea con la filosofia Arduino: prototipazione più semplice e veloce. Considera un semplice esempio: un LED lampeggiante standard, ma con un pulsante poll:
void setup() 
     pinMode(13, OUTPUT);
}
void loop() 
     digitalWrite(13, 1); 
     delay(1000); 
     digitalWrite(13, 0); 
     delay(1000);
}
void yield() 
      //il codice per gestire il pulsante
}
Questa funzione consente di implementare molto rapidamente l'esecuzione "parallela" di due attività: una in ritardo e la seconda in modo costante.
Questo trucco funziona su AVR Arduino, non su esp8266.
Multitasking con yield():
Considera un esempio di un motore che si muove lungo diversi punti dati, la funzione di rotazione del motore dovrebbe essere chiamata il più spesso possibile (questo viene fatto in quasi tutte le librerie per motori passo-passo):
void setup() 
{
}
void loop() 
     // impostare l'angolo di destinazione №1 
     delay(1000); 
     // impostare l'angolo di destinazione №2 
     delay(120); 
     // impostare l'angolo di destinazione №3 
     delay(2000); 
     // impostare l'angolo di destinazione №4 
     delay(250); 
     // impostare l'angolo di destinazione №5 
     delay(600);
}
void yield() 
{
     // ruotare il motore
}
Pertanto, abbiamo dipinto in modo rapido e semplice la "traiettoria" del movimento per un motore passo-passo nel tempo, senza utilizzare timer e librerie. Per programmi più complessi, ad esempio, con il movimento di due motori, un trucco del genere potrebbe non funzionare più ed è più facile lavorare con un timer.
Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia