21 Febbraio 2025 di Alessandro Colucci
Arduino, di default, non supporta il vero multi-threading come fanno i sistemi operativi come Linux o Windows. Questo perché la maggior parte delle schede Arduino utilizza microcontrollori con processori single-core, privi di un sistema operativo per la gestione dei thread.
Tuttavia, è possibile simulare il multi-threading in diversi modi:
Invece di usare delay(), è possibile utilizzare la funzione millis() per tenere traccia del tempo ed eseguire più attività in modo apparentemente parallelo. Questo approccio non blocca l'esecuzione del programma e consente di gestire più operazioni basate su intervalli di tempo.
Esempio: https://pastebin.com/SA0uScc6
Alcune librerie permettono di simulare il multi-threading attraverso la pianificazione delle attività. Queste librerie suddividono i compiti in piccoli frammenti ed eseguono ogni attività in sequenza.
Esempio con TaskScheduler: https://pastebin.com/5t78h234
Se stai utilizzando un ESP32, che ha due core, puoi sfruttare FreeRTOS (incluso nel framework Arduino per ESP32) per implementare un vero multi-threading. FreeRTOS permette di eseguire più task in parallelo su core separati.
Esempio con FreeRTOS su ESP32: https://pastebin.com/h6DbQF5z
Sulle piattaforme come ESP32, FreeRTOS rende possibile il vero multi-threading, migliorando significativamente la gestione delle operazioni in parallelo.
Quale soluzione fa al caso tuo? Proviamole insieme su pleasedontcode.com!