Pagina 1 di 2

Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 0:10
da RickFindus
Ciao a tutti! Volevo sapere come, facendo lampeggiare un led con effetto "fade" , si potesse aumentare il tempo in cui sta spento, mi spiego meglio. Ho intenzione di creare un progetto con Arduino UNO per simulare alba, giorno, tramonto e notte. Ovviamente quando il led inizia ad accendersi sarà l'alba, al pieno della sua potenza sarà giorno, quando inizierà a svanire sarà il tramonto e spento simulerà la notte. Il mio problema è che non riesco a fermare il led per un certo lasso di tempo dopo il tramonto, ovvero la notte. Sapete aiutarmi? Grazie!

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 4:49
da solideo
Io userei i millis(). Quando il led è spento , quindi notte , leggi il valore dei millis() poi con un if decidi per quanto tempo deve aspettare prima di ricominciare con l'alba.
Codice: Seleziona tutto
... led spento
unsigned long tempo = millis() ; legge il valore dei millis
...prima dell'alba
unsigned long alba = millis();
if ( alba > tempo + 5000 ); Se sono trascorsi 5 secondi fai l'effetto alba

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 8:22
da lelerelele
le tue parole mi suonano molto strano,
vuoi dire che hai implementato il controllo PWM per accendere il led da zero al massimo con tanti step e poi non sai come fare per attender un po di tempo tra il tramonto e l'alba?

saluti.

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 11:03
da RickFindus
Ciao! No, quello che non riesco a fare io è creare uno spazio di tempo in cui il led rimanga spento completamente una volta "tramontato"

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 11:53
da xyz
Disattivi il PWM, spegni il LED e aspetti il tempo necessario.

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 12:57
da lelerelele
RickFindus ha scritto:Ciao! No, quello che non riesco a fare io è creare uno spazio di tempo in cui il led rimanga spento completamente una volta "tramontato"

continuo a non capire.

in quale modo vorresti attendere questo tempo? modificando il software?

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 13:27
da claudiocedrone
Foto UtenteRickFindus, per poter ottenere risposte sensate lo evono essere anche le domande;
sei quindi pregato di postare lo schema elettrico che hai implementato per ottenere il fade-in/out del LED e il codice (ipotizzo uno sketch... ) che hai caricato; grazie.

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 14:20
da RickFindus
Capisco, forse mi sono spiegato male...
Il seguente sketch fa lampeggiare un led in dissolvenza. Con il comando "delay" posso aumentare o diminuire la durata della dissolvenza a mio piacimento. Il codice inoltre fa aumentare la lucentezza da 0 a 255 e da 255 a 0. Ciò che non riesco a fare è aumentare il tempo tra un ciclo e l'altro ovvero quando la lucentezza ritorna a 0 facendo rimanere il led spento.

lo sketch che uso io è questo:

Codice: Seleziona tutto
int lucentezza = 0;
int incremento = 5;

void setup ()
{
pinMode (9, OUTPUT);
}
void loop()
{
analogWrite (9, lucentezza);
lucentezza = lucentezza + incremento;
if (lucentezza == 0 || lucentezza == 255)

{
incremento = incremento *-1;


}
delay (200);
}

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 14:23
da RickFindus
lelerelele ha scritto:le tue parole mi suonano molto strano,
vuoi dire che hai implementato il controllo PWM per accendere il led da zero al massimo con tanti step e poi non sai come fare per attender un po di tempo tra il tramonto e l'alba?

saluti.


esattamente

Re: Lampeggiamento Led

MessaggioInviato: 13 lug 2017, 14:34
da xyz
Il tuo è un problema sulle basi della programmazione dei microcontrollori, devi implementare nel codice una FSM (Finite State Machine). Esistono molte guide a riguado, basta cercare, ad esempio:

http://teachmetomake.com/wordpress/ardu ... te-machine

Quel moltiplicare per -1 per cambiare di segno non si può vedere, è una operazione costosa, è molto più veloce questo semplice codice:

Codice: Seleziona tutto
incremento = -incremento;