ha funzionanto la mia idea?
bhe la spiegazione è abbastanza semplice, però son partito da delle assunzioni.
allora, il draw sappiamo che molto probabilmente avvioene molto velocemente, a naso almeno 300 volte al secondo se la grafica è semplice e il pc regge almeno un minimo di grafica (anche senza accelerazione probabilmente, 1000 o più in casi di pc un pò spinti (sono i famosi FPS), di solito con una wait (differisce dal delay perchè lascia spazio ad altri thread/processi) li si limita a 60 al secondo, più che sufficianti per ingannare l'occhio umano.
sappiamo anche che il PWM non è altro che un seganle che si ripete circa 50 volte al secondo, con una durata di 0 e 1 proporzionale al valore immesso
ora assunzione: il PWM parte sempre con un segnale 0, ed ogni analogWrite riazzera l'interrupt.
quindi: il pwm partiva, ma prima che arrivasse il segnale di 1 cambiavi subito il timer resettando tutto. Invece la digital write è immediata
non solo, in realtà la seriale è lenta, quindi mentre scrivileggi possono avvenire centinaia di istruzioni lato arduino. bisognerebbe vedere firmdata come gestisce alcune situazioni
potrebbe anche darsi che draw venga chiamata di nuovo per forzare abbastanza fps... bel casino vero?
comunque un segreto:
si usa un thread per la graica (esiste di già, ed è sbagliato usarlo ANCHE per la logica... devono esserci delle variabili ATOMICHE oppure SINCRONIZZATE in condivisione col thread della logica.
Si complica il codice, ma in realtàò diventa molto più portabile e mantenibile