Lampeggiamento Led

Inviato:
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

Inviato:
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

Inviato:
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

Inviato:
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

Inviato:
13 lug 2017, 11:53
da xyz
Disattivi il PWM, spegni il LED e aspetti il tempo necessario.
Re: Lampeggiamento Led

Inviato:
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

Inviato:
13 lug 2017, 13:27
da claudiocedrone
RickFindus, 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

Inviato:
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

Inviato:
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-machineQuel 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;