Pages: [1]   Go Down
Author Topic: aiuto per gestione rampa PWM LED  (Read 919 times)
0 Members and 1 Guest are viewing this topic.
Belluno
Offline Offline
Jr. Member
**
Karma: 1
Posts: 60
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti,
sto cercando di creare una rampa PWM per fare un fading da un valore ad un'altro.
La mia intenzione è di illuminare un acquario a led e di gestire una sorta di alba-tramonto con una sfumatura costante anzichè il passaggio drastico tra la luce giorno e la luce tramonto.
Ci sono molti esempi per farlo, ma tutti che usano la funzione delay() per creare le pause e questo mi bloccherebbe il programma in attesa che passi tutta la fase di fading.
La soluzione sarebbe usare millis o meglio ancora la libreria tween.h, altre non ne ho trovate che facciano al mio caso.
Purtroppo per questa libreria non ho trovato applicazioni o degli esempi abbastanza semplici per capire la logica di base. Leggendo tutti i files della libreria sono riuscito a capire poco (beata ignoranza...)
Qualcuno mi sa indicare un codice minimo da cui estrapolare la giusta sintassi?
E' mia intenzione poi che il mio code ad una certa ora passi da un luminosità ad un'altra in un arco di tempo da me definito per poi rimanere costante per un più lungo periodo, usa sorta di sole virtuale.
grazie a tutti!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
Da quello che ho capito la funzione millis non è consigliata perché va in overflow dopo 50 giorni generando un Reset del contatore.
Alcuni utenti stanno sviluppando una nuova libreria che risolve in parte il problema spostabdo la data dell' overflow.

Qui trovi la discussione dedicata

http://arduino.cc/forum/index.php/topic,101938.0.html
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21277
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sí, dopo 49,4 Giorni i millis() ripartono da zero ma facendo il controllo if in modo giusto il overflow non comporta nessun errore nel tempo di ritardo.
L' unica limitazione é se il tempo di ritardo deve essere maggiore di 49 giorni.

http://arduino.cc/en/Tutorial/BlinkWithoutDelay

Ciao Uwe
 
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
Da quello che ho capito la funzione millis non è consigliata perché va in overflow dopo 50 giorni generando un Reset del contatore.
Alcuni utenti stanno sviluppando una nuova libreria che risolve in parte il problema spostabdo la data dell' overflow.

Qui trovi la discussione dedicata

http://arduino.cc/forum/index.php/topic,101938.0.html
La libreria secTimer è pronta e funzionante, usa lo stesso principio di millis (un contatore di 32 bit) ma contando i secondi invece che i millisecondi. Grazie a ciò la mia libreria è capace di gestire periodi temporali fino a più di 136 anni contro i 49,7 giorni della millis  smiley-wink

Alternativamente alla libreria esistono anche in quella discussione un paio di modifiche da apportare ai file del core di Arduino che però funzionano solo per l'Arduino, a differenza della libreria che funziona con molti microcontrollori Atmel.
Logged


Belluno
Offline Offline
Jr. Member
**
Karma: 1
Posts: 60
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie!
passo subito a leggere e provare tutti i suggerimenti che mi avete dato.
Mi rimane la curiosità di non conoscere la libreria tween che sembra proprio dedicata alle rampe pwm, ma sembra che nessuno la usi.
Faccio un po' di prove e poi vi saprò dire...

grazie ancora!
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non conosco la libreria Tween né sono riuscita a trovarla in rete.
Non so dirti come opera.
Logged


Pages: [1]   Go Up
Jump to: