Questo è certamente un post incrociato di malfunzionamento della dissolvenza dei LED (flash casuale) ma non riesco a ottenere una risposta sul forum di Arduino.
Stavo scherzando con un codice molto semplice e ho notato che quando si tiene ripetutamente un LED a luminosità 0 per 1 secondo e poi si dissolve alla massima luminosità, occasionalmente si verificava un piccolo lampo all'inizio di ogni dissolvenza (apparentemente casuale).
int led = 11; int luminosità = 0; void setup () {pinMode (led, OUTPUT);} void loop () {if (luminosità > = 256) // controlla se la luminosità ha superato 255, si ripristina a 0 {analogWrite (led, 255); luminosità = 0; } analogWrite (led, luminosità); se (luminosità == 0) {ritardo (1000); // LED spento per 1 secondo} luminosità + = 1; // incremento del ritardo della luminosità (20);}
Quindi, la cosa che mi ha completamente perplesso è che posso usare un pezzo di codice diverso (sotto) e il flash scompare!
int i = 0; int led = 11; void setup () {pinMode (led, OUTPUT);} void loop () {analogWrite (led, i); delay (6); if (i% 256 == 0) {i = 0; delay (1000);} i ++;}
Qualcuno ha la più pallida idea del perché ciò sarebbe accaduto? Entrambi i programmi hanno fondamentalmente lo stesso codice, tranne per il fatto che i viene reimpostato a 0 nel primo programma mentre nel secondo continuo a incrementare oltre 255 in modo che analogWrite "overflow". Penso che debba essere un problema del firmware (o forse del software?).
C'è un video su YouTube che mostra ciò che accade qui, Arduino - problema del LED sbiadito.