Multitasking con Arduino
Con l'aumento della capacità di elaborazione della piattaforma open source Arduino e di altre schede basate su microcontrollore, incluse le funzionalità di clock più veloci o anche più core, diventa spesso necessario gestire più attività contemporaneamente.
La piattaforma Arduino viene utilizzata ormai in una moltitudine di applicazioni e contesti, basti pensare a tutte le volte che desideriamo controllare i motori, aggiornare un display e rilevare contemporaneamente le interazioni dell'utente, oppure semplicemente eseguire attività con tempistiche diverse o attendere il verificarsi di eventi esterni, programmare scenari e automatismi. Il modo tradizionale per programmare la scheda Arduino è scrivere codice in modo che la funzione loop() possa essere eseguita il più velocemente possibile (seguire a tal proposito il link Blink Without Delay | Arduino). Tuttavia, questo approccio porta a un codice per il quale è difficile eseguire il debug e la manutenzione e inoltre non supporta più core.
La libreria Scheduler consente di scrivere codice in modo più pulito suddividendo lo sketch in più funzioni di loop, in modo che ognuna di esse possa concentrarsi su un'attività specifica. Tuttavia, questo approccio non supporta più core e non è di grande aiuto per le applicazioni a basso consumo in cui si desidera che i thread riposino il più possibile in attesa di un evento o di dati in arrivo.