Lampeggiamento Led
11 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
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!
-

RickFindus
0 2 - Messaggi: 8
- Iscritto il: 12 lug 2017, 23:56
0
voti
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
0
voti
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.
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.
-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5505
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
0
voti
Ciao! No, quello che non riesco a fare io è creare uno spazio di tempo in cui il led rimanga spento completamente una volta "tramontato"
-

RickFindus
0 2 - Messaggi: 8
- Iscritto il: 12 lug 2017, 23:56
0
voti
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?
-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5505
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
0
voti
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.
"Non farei mai parte di un club che accettasse la mia iscrizione" (G. Marx)
-

claudiocedrone
21,3k 4 7 9 - Master EY

- Messaggi: 15300
- Iscritto il: 18 gen 2012, 13:36
0
voti
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:
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);
}
Ultima modifica di
xyz il 13 lug 2017, 14:23, modificato 1 volta in totale.
Motivazione: Quando includi del codice usa i tag [code] e [/code]
Motivazione: Quando includi del codice usa i tag [code] e [/code]
-

RickFindus
0 2 - Messaggi: 8
- Iscritto il: 12 lug 2017, 23:56
0
voti
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
-

RickFindus
0 2 - Messaggi: 8
- Iscritto il: 12 lug 2017, 23:56
0
voti
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:
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;
11 messaggi
• Pagina 1 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


