Go Down

Topic: Chiarimenti su ciclo for (Read 563 times) previous topic - next topic

acron

Ciao ragazzi,
datemi una dritta....

Ho realizzato un piccolo programmino per la gestione di una lampada led, accensione e spegnimento ad orari stabiliti, sequenza di accensione, controllo automatico/manuale, tutto diviso in funzioni.Ora vorrei farla accendere in modo graduale fino ad arrivare alla massima potenza in circa un'ora.....bene....come il playground insegna, posso utilizzare il ciclo for per il pwm ma questo ovviamente non "legge" il resto del programma fino a quando non finisce il suo lavoro.Io però voglio, anche durante questa fase, poter interagire con le altre funzioni!!!
L'unica cosa che mi viene in mente è copiare tutte le funzioni all'interno del for ma qualcosa mi dice che non è corretto :~
Probabilmente sono completamente fuori strada ma non riesco a pensare ad altre soluzioni.....voi che dite?

leo72

Ti consiglio di guardare l'esempio BlinkWithoutDelay che fa al caso tuo. Esso sfrutta il controllo temporale basato su millis per eseguire un'azione ad un intervallo prestabilito senza bloccare il resto del programma

Si sei fuori strada.

La funzione loop() è già un for infinito, per cui devi chiamare le funzioni che devono sempre ritornare al chiamante che deve essere sempre la funzione loop(). Certo è possibile chiamare una funzione che ne chiama un'altra e via di seguito, ma alla fine e in un tempo accettabile si deve tornare ad eseguire codice presente nella funzione loop().

Devi trovare il modo di apportare una variazione del PWM per ogni ciclo del loop principale.

Puoi usare un  contatore miopwm++ seguito da un controllo if (miopwm > maxpwm) miopwm = 0, riparte da 0.

Posta un po il codice, che hai scritto.

Ciao.
AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Go Up