So che di Venerdì non andrebbe mai proposto un argomento complesso come una centralina alba tramonto arduino ma siamo in periodo natalizio, siamo tutti più buoni e mi perdonerai 🙂
Bando alle cavolate ho trascorso gli ultimi giorni a scriver progetti natalizi in previsione della prossima settimana in cui cade, appunto, Natale.
Concetti base su cui costruire la centralina alba tramonto arduino
Il primo interrogativo che mi sono posto è stato:
“quanto dura l’alba, il giorno, il tramonto e la notte per riprodurre un effetto reale?”
Si, è al limite della malattia mentale … ma ancora non hai letto tutto, continuando a farmi domande mi sono chiesto:
“la durata di ogni fase come varia a differente latitudine ?”
ed ancora:
“come variano le fasi alba,giorno,tramonto e notte da un giorno all’altro ?”
Anticipo che mi sono fermato alle prime due, ma non escludo di poter realizzare anche una centralina in cui inserire parametrizzazioni più dettagliate 🙂 in futuro.
In pratica ho trovato un sito fantastico che mi ha agevolato: meteo.sm in cui selezionando:
- località
- data
puoi ottenere le fasce orarie per alba,giorno,tramonto e notte di una determinata località in un dato giorno.
Ho quindi deciso di prendere come riferimento due città:
- Roma: capitale dell’italia e con latitudine centrale dell’Italia
- Betlemme: puoi immaginare il perché parlando di natività ( vedi su wiki )
come data ho scelto il 25 dicembre 2014, prossimo natale, ma puoi ripetere la programmazione ogni anno per avere la tua centralina alba tramonto arduino sempre aggiornata.
Ecco i risultati per Roma:
e per Betlemme:
quindi la tua centralina riprodurrà i tempi di alba,giorno,tramonto e notte del giorno 25 dicembre 2014 a Roma o Betlemme.
Calcolo della durata di ciascuna fase
il passo successivo ad aver ottenuto i dati è convertirli per utilizzarli sulla centralina alba tramonto arduino.
Ho utilizzato un foglio di calcolo nel quale ho riportato gli orari di inizio e fine di ciascuna fase:
fai riferimento alla prima tabella e per ogni fase hai le ore,minuti e secondi di durata da cui con la formula:
Durata in sec. = (Ore x 3600) + ( Minuti x 60 ) + Secondi
ottieni la durata in secondi di ciascuna fase nell’arco della giornata e sapendo che un giorno è composto da 86400 secondi ( 24 ore ) puoi ricavarti la percentuale di tempo occupata da ciascuna fase nell’arco della giornata.
Se non vuoi fare calcoli puoi usare i valori che ho inserito nel foglio di calcolo riportato sopra.
Nella seconda tabella ho sommato la fase di notte fonda in quanto il calcolo parte dalla mezzanotte, spezzando così la notte i due, ma nella realtà è tutto un ciclo unico.
Calcolo dei cicli alba,giorno,tramonto e notte
Per completare il quadro dei dati che ti servono per realizzare la tua centralina alba tramonto arduino c’è la durata che ciascun ciclo deve avere.
Non penserai di lasciarlo sulla base delle 24 ore?
Nessun amico rimarrà così tanto a guardare il tuo presepe anche se stupendo e ricco di particolari 🙂
Ecco perché ho realizzato questa tabella:
con cui puoi calcolare quanto deve durare ogni fase ( in millisecondi perché arduino lavora in questa scala ) in base alla durata del ciclo completo.
Ad esempio se vuoi che il tuo ciclo di alba-giorno-tramonto-notte duri 1 min sul ciclo di Roma al 25 dicembre 2014 avrai che le singole fasi durano:
- alba: 4194 millisecondi
- giorno: 22958 millisecondi
- tramonto: 4195 millisecondi
- notte: 28651 millisecondi
Ecco le versioni delle tabelle precedenti per Betlemme:
e per ciascun ciclo:
Buon calcolo !!!
54 commenti
2 ping
Vai al modulo dei commenti
Vorrei sapere se tale progetto può avere il via da un telecomando e quindi anche la fine. Mi spiego meglio ,il loop della centralina può iniziare con un pulsante del telecomando e quindi anche la fine . E come potrei inserire tali input nello sketch.
Grazie per tutto quello che dirai.
Giuseppe
Autore
Ciao Giuseppe,
a mio avviso si, puoi mettere nel loop() un if() che verifichi la pressione di un tasto del telecomando, leggi i miei articoli sull’IR, e attendere che venga premuto per eseguire lo start/stop del ciclo.
Grazie, proverò a inserire if().
Ciao Mauro scusami del ritardo,sono stato a letto e non ho potuto verificare il telecomando.
Comunque durante questo tempo ho ricevuto dei moduli relè e li ho sostituiti al posto dei led per testarli.
Non funziona , restano sempre accesi l’alba tramonto e notte.
Ho provato a cambiare i tempi delle fasi. Ma niente…
Sto sbagliando qualcosa ? Ho usato gli stessi collegamenti con la differenza invece dei led ho usato i rele.
Ho anche invertito in analogWrite da LOW in HIGH. niente..
Mi puoi dire dove sbaglio ? LO so che è presto per parlare del Natale , ma visto gli inconvenienti e gli inprevisti e tutto il lavoro di assemblaggio della struttura scenografica,elettrica ed elettronica che andrò a preparare avrò bisogno di tempo e pazienza. Grazie per la tua disponibiltà
Autore
Ciao Giuseppe,
inizio a pensare che ti occorre qualche oretta di buona lettura di elettronica, la differenza tra led e relay è abissale in un progetto come la centralina di alba e tramonto in quanto i led giocano con le dissolvenze in PWM e i relay non possono fare questo.
Prima di arrivare al telecomando, parte ancora più complessa, ti suggerirei di leggere e comprendere i tutorial del mio corso base on-line gratuito.
La differenza tra led e relè la conosco, non riuscivo a capire quando dicevi che si possono utilizzare faretti a 220 volt di vari colori ora è chiaro che bisogna modificare lo sketch inserendo i relè. Sono le tue lezioni che ho incominciato a seguire da quando ho acquistato Arduino. Sono a digiuno di programmazione ma di elettrotecnica ho esperienza da quarantanni. Grazie ancora per la tua pazienza.
Giuseppe
Autore
Ciao Giuseppe,
il led sai che deve essere dimmerabile mentre ed il relay non lo è:
Per collegare dei faretti dovrai usare un mosfet o driver per led.
In questo modo non dovrai modificare nulla nello sketch per la parte di Alba-Giorno-Tramonto-Notte e potrai concentrarti solo sul telecomanado.
Grazie per i suggerimenti.
Ti voglio confidare una cosa : ho 68 anni e sono da poco in pensione per non restare in ozio ho voluto entrare in un mondo che mi ha sempre affascinato “l’informatica” , ma avendo poca esperienza cerco di copiazzare e recepire le funzioni principali. Ho tanto tempo disponibile ( spero) per imparare e con le tue lezioni e sperimenti spero di riuscire.Se ti trovavi nei paraggi ti avrei offerto le nostre famose zeppole. Virtualmente ti offro.Ciao
Giuseppe
Autore
Ciao Giuseppe,
i miei appunti sul web hanno lo scopo di aiutare chi, come te, ha competenza e buona volontà di imparare.
Io non so tutto … anzi mi mancano ancora milioni di cose da imparare e non so neppure quantificarle, ma ogni giorno ne imparo una e la descrivo nel blog per condividerla con tutti gli appassionati di questi argomenti.
Sono qui se ti serve qualche chiarimento sui miei articoli.
Dove devo venire per le zeppole ?
Bari città quando vuoi casa mia è aperta.
Autore
Se vengo a Bari ti avviso 🙂
Ciao Mauro per prima cosa Buona Pasqua.
dopo tanto tempo ho ripreso il solito progetto della centralina alba ecc.ho letto l’articolo su IR e va tutto bene,ma quando inserisco il comando di un rele nel loop della centralina il rele non viene eccitato.
Mi spiego meglio : la centralina alba e tramonto funziona correttamente ho solo inserito nel loop un if che quando premo un pulsante del telecomando si dovrebbe accendere il led o il rele e lo stesso si dovrebbe spegnere quando riceve l’altro pulsante. Ma tutto questo non avviene è come se il ricevitore non ha nessun segnale. Cosa sbaglio.
Grazie per il tuo suggerimento
Giuseppe
Autore
Ciao Giuseppe,
hai provato con un semplice pulsante prima del telecomando IR ?
no,ora provo Grazie
ho provato col pulsante e avviene la stessa cosa cioè pigiando il pulsante non accende il led mentre lo sketch della centralina continua a funzionare.Forse l’if di (leggi il pulsante ) l’ho inserito alla fine del loop della centralina.Non so che fare.
Autore
Ciao Giuseppe,
questo evidenzia che l’errore è nello sketch, l’if è nel posto sbagliato.
Ti ho consigliato di lavorare prima con un pulsante proprio per concentrarti prima su dove e come inserire un controllo e solo dopo dedicarti al telecomando.. è la base del ragionamento logico che applico nella realizzazione di tutti i miei sketch.
ho provato ad inserire all’inizio del loop e le fasi della centralina avvengono quando accendo e spengo il led con il pulsante. Cosa devo cambiare nel loop?
Autore
Ciao Giuseppe,
non ho compreso la domanda.
Vorrei essere più preciso , io vorrei che le due cose ( centralina e comando led o rele) siano indipendenti tra loro,
Grazie
Autore
Ciao Giuseppe,
per fare questo dovrai sostanzialmente cambiare il modo in cui funziona la centralina.
Il delay è un blocco al funzionamento secondo la tua idea, ti consiglio di leggere gli articoli sul millis() e ribaltare il funzionamento della centralina utilizzando millis() il loop() come ciclo di controllo ed eliminando i for.
Ciao Mauro,
in conclusione per inserire un comando qualsiasi nello sketch della centralina devo eliminare il fade (la dissolvenza) del led e inserire millis() che è un intervallo di tempo.Cosi si perde la bellezza della dissolvenza.Ho capito bene o continuo a sbagliare.Se non posso inserire un comando qualsiasi che esuli dal funzionamento della centralina dovrei usare un’altra scheda Arduino? Spero di aver espresso il mio dilemma o continuo a confondere le idee.
Grazie Giuseppe
Autore
Ciao Giuseppe,
purtroppo non mi sono espresso in modo che tu potessi capirmi, forse, il fade non va elimnitao ma riscritto completamente in modo che non faccia uso del delay ma del millis.
Grazie infinite Mauro sono io che ho interpretato male .Comunque ho risolto completamente il problema senza utilizzare il telecomando.
Studiando la funzione millis() e il fade ho navigando ho trovato un link di Leonardo Milani in cui elenca una nuova libreria Looper uno schedulatore software per arduino.
Nelle tue lezioni è spiegato più dettagliatamente questa libreria cosa serve e quando si può utilizzare.
Forse dirai che per me è ancora presto ,ma mai dire mai.
Ciao e ancora grazie.
Autore
Ciao Giuseppe,
sembra molto interessante. Leonardo è in gamba ed ha scritto molti esempi da usare di questa libreria.
ciao, scusa io dovrei attivare questo circuito con un pulsante e appena finito il ciclo (dopo la notte) avrei bisogno che il presepe si spenga da solo e si riattivi appunto quando premo il pulsante. ho provato a inserire if(buttonState == HIGH), ma non funziona… o meglio funziona, ma ad ogni cambiamento (alba-giorno-tramonto-sera), devo premerlo se no non cambia. potresti aiutarmi grazie 😉
Autore
Ciao Soft,
se stai seguendo questo sketch: https://www.mauroalfieri.it/elettronica/centralina-alba-tramonto-arduino-sketch.html la cosa migliore che posso consigliarti è di inserire all’inizio del loop() un controllo della pressione del pulsante che imposti una variabile a false poi controlli il valore di questa variabile per eseguire il loop(). Una sorta di pausa dal loop;
l’ho fatto, ma a ogni passaggio da alba a giorno, piuttosto che da giorno a tramonto, mi controlla sei il pulsante è premuto
Autore
Ciao Soft,
devi far in modo che il cambio valore della variabile da true e false, o viceversa, avvenga solo alla fine di un ciclo completo alba,giorno,tramonto,notte ..
come??
Autore
Ciao Soft,
potresti sfruttare il reset del count, quando lo riporti a 0, imposti anche la variabile.
ciao mauro, c’è scritto che se voglio che tutto il ciclo mi duri un minuto devo fare riferimento alla tabella e impostare quei millisecondi… però provando invece che un minuto, tutto il cilo mi dura 30min come mai?
Autore
Ciao Soft,
come ti ho scritto devi verificare bene in quale array vai ad inserire i valori della tabella:
4194+22958+4195+28651 = 59998 / 1000 = 59,998 secondi che corrisponde circa ad 1 min ( 60 secondi )
io ho inserito i valori che hai messo tu….. riscritto il programma che hai fatto te e ho cancella onminbtlm, lasciando solo oneminrome
Autore
Ciao Soft,
nel video presente in questo articolo: https://www.mauroalfieri.it/elettronica/centralina-alba-tramonto-arduino-sketch.html vedi la centralina in funzione con tutto il ciclo che dura circa un minuto.
Prova a mettere dei serail println dopo ogni fase e verifica i tempi di eseguzione per capire dove avviene l’errore che prolunga sensibilmente il tempo.
Buongiorno, solo oggi per caso (o meglio poi capirai che proprio un caso non era) mi sono imbattuto nel tuo sito. Complimenti. Mi chiamo Emanuele e da ex studente di informatica, appassionato di elettronica e anche “voglioso” di sperimentare Arduino. Nel tempo, diplomato da vent’anni, ho lasciato l’elettronica, non l’informatica, e mi sono appassionato anche ai presepi. Vengo al dunque. Sto facendo un plastico, e, forse sbagliando, ho improntato l’impianto elettrico con delle lampadine (per ora solo 10) micromignon a 12V da 2 Watt. Non ho ancora l’alimentatore (pensavo anche di riadattarne uno del PC ma credo faccia troppo rumore) e mi è venuto solo ora il dubbio di come fare una intermittenza e/o dissolvenza. Cercando sono “caduto” in questo tuo progetto. Mi piacerebbe, potrei adattare i “tempi”, ma credo che le lampadine che ho siano il problema giusto? Non ho modo di adattare o cosa?
ciao, ancora complimenti,
Emanuele
Autore
Ciao Emanuele,
se ho ben capito devi realizzare delle dissolvenze su lampadine da 12v 2W ( circa 0,17 A ) ciascuna.
Per la parte elettronica dovrai predisporre un circuito a mosfet o simile.
Come esempio di programmazione puoi seguire uno qualsiasi degli articoli in cui descrivo le dissolvenze ed il PWM con arduino.
Salve, sono molto interessato al progetto Centralina alba tramonto Arduino. Ho realizzato il tutto su bredboard e funziona benissimo. Avrei pensato però nel mio caso di lasciare un solo led per le stelle e modificare l’altro led delle stelle per attivare un led per il fuoco. Mi diletto di programmazione con arduino, ma ora non saprei come procedere. Potresti aiutarmi? Grazie. Complimenti per il tuo sito. Saluti Domenico.
Autore
Ciao Domenico,
bella la tua idea di utilizzare un pin per un effetto fuoco.
Per aiutarti posso dirti che puoi leggere tutto il mio sketch e comprendere le parti in cui i pin della seconda serie di led, dedicati alle stelle, debbano essere separati dal primo ciclo.
Infine non hai che da scrivere una funzione che simuli il fuoco, io non conosco come funzioni, e tradurla in codice per la centralina.
Ciao Mauro, io avrei bisogno di collegare delle strisce led che hanno bisogno di parecchia corrente (il giorno 72W) come posso fare ?
Grazie
Gianluca
Autore
Ciao Gianluca,
io userei un circuito a mosfet sufficientemente dimensionato.
Se non trovi nulla nel panorama delle shield vendute per il controllo di led dovrai progettarne una tua.
Grazie per la risposta, mi sapresti dare una dritta su qualche shield devo cercare ?
Grazie ancora !
Autore
Ciao Gianluca,
prova con qualche shield tipo RGB o LedStrip shield
Salve sig. Alfieri,
ho visionato il suo progetto e volevo chiederLe una cosa: se lo volessi adattare ad un acquario, mi basterebbe solo ricalcolare i tempi, inserendo nello sketch i relativi valori? Ed inoltre , come potrei utilizzare un switch per bypassare i tempi ed avere un test così come nel filmato, indipendentemente dalla programmazione effettuata? Grazie e complimenti per la sua professionalità, e per il suo metodo nel come rende facili e intuitive le sue spiegazioni.
Autore
Ciao Paolo,
io non conosco gli acquari e l’argomento tuttavia penso che se ciò che vuoi ottenere sia una tempistica differente ti basta cambiare i tempi.
Lo switch è più complesso, non impossibile ma di certo richiede un tempo ed una competenza di programmazione importante, puoi leggere i miei tutorial sugli switch e capire come integrarli in questo progetto.
grazie perl’attenzione. Leggendo il quarto articolo, potrei usare il potenziometro al minimo per avere il tempo al minimo e quindi come test, senza utilizzare il switch. Volevo inoltre dirle che ho usato l’RGB shield di FuturA e funziona egregiamente ma….. c’è un ma: il passaggio da 0 al massimo, molte volte avviene a scatti e ho l’impressione che si perda la dissolvenza incrociata. Si può risolvere il problema senza infierire sul suo sketch?
Grazie e buona serata
Paolo
Autore
Ciao Paolo,
l’effetto visivo a scatti devi capire se dipende dalla RGB Shield o dal tipo di lampade/led che hai utilizzato.
Alcuni led se alimentati da 0 a 255 in modo costante, ossia di uno in uno, hanno come effetto visivo un incremento a scatti, altri non lo fanno.
Lo stesso effetto potrebbe essere causato dalla shield in quanto i driver potrebbero avere un comportamento non lineare.
Ciao e buongiorno Mario,
allora ho utilizzato la RGB shield per Arduino di Futura (in realtà è della velleman …..http://www.velleman.co.uk/contents/en-uk/p578_ka01.html )mentre per i led ho usato una striscia anonima che avevo. Comunque, ora sto provando il tutto e mi sembra che funzioni egregiamente;
ATTENZIONE, ho scoperto il perchè:
avevo lo sketch che la Vellman ha dato in dotazione allo shield (vedi ka01_sample_code) caricato, dove ci sono effetti tra cui la dissolvenza incrociata tra canali, e con lo stesso shield e le stesse strisce, non si avverte alcun baluginio, nè esecuzione a scatti. Dov’è l’arcano?
Saluti
Paolo
Autore
Ciao Paolo,
non sono certo di aver compreso il tuo commento, hai risolto?
Salve,
mi chiamo Nicola sono un appassionato di presepi.
Le faccio i complimenti per lo splendido lavoro realizzato e per aver messo a disposizione di persone appassionate come me il materiale del progetto.
Le premetto che le mie conoscenze di elettronica sono minime, non ho mai utilizzato schede Arduino nè programmato, tuttavia mi piace imparare e cercare di realizzare le cose con il fai da te.
Al momento utilizzo la centralina della Frisa “Natalino parlante”, tuttavia, per vari limiti tecnici della stessa, mi piacerebbe realizzare una centralina fai da te con fasi alba/giorno/tramonto/notte a dissolvenza, suoni ed effetti audio.
Le chiedo per favore un consiglio su come partire per realizzare il progetto.
La centralina guidata da Arduino dovrebber pilotare 4 metri circa di strisce LED (RGB e monocolore) + circa 50 diodi led (da 10, 5, 3 e 1,8mm) + l’audio. Alimentazione a 12V.
Quali dovrebbero essere i componenti principali per realizzare il progetto?
Autore
Ciao Nicola,
il progetto è ambizioso ma di sicuro interesse.
Io ti consiglio di partire da piccoli progetti singoli, sia per la parte elettronica sia la programmazione e iniziare, magare da questa centralina, per controllare le strisce led ed i led singoli.
Ricorda che per controllare strisce di led da 12v con Arduino hai di certo bisogno di una shield che disponga di mosfet o altro componente elettronico adatto a sopperire sia come tensione che come corrente alla richiesta delle strisce led.
Non ho la tendenza a suggerire delle shield per non far pubblicità ma penso che provi a cercare “RGB shield” troveai molte schede che possono fare al caso tuo.
Per la musica ho recensito alcune schedine tipiche proprio in occasione degli scorsi progetti natalizi, prova a cercare nel blog ce ne sono di davvero interessanti.
Ciao Mauro, ti ringrazio per avermi contattato. Ho riportato su IDE lo sketch da te elaborato per l’effeto alba tramonto. La sintassi è giusta perche alla verifica ho eliminato tutti gli errori che mi segnalava ma riportato lo sketch su Arduino UNO non mi fa il ciclo dawn-sun-sunset-moon come prevede lo sketch e l’effetto del potenziometro è nullo. Cosa ho sbagliato?
Grazie per l’attenzione
Rodolfo Filippini
Autore
Ciao Rodolfo,
qualche sketch stai utilizzando? in questo articolo non c’è uno sketch da utilizzare, ho il sospetto che tu stia utilizzando uno sketch parziale.
Buona sera.
Sono un vecchio ingegnere elettronico ( ramo comunicazioni ) ed ho iniziato a divertimi con arduino, la mia prima esperienza di S/W.
Ho relizzato la centralina , inserendo le tempistiche per il ciclo di un minuto.
Le stringhe di led sono interfacciate ad arduino tramite i dual h bridge L298 N-
Tutto funziona correttamente, ma se vario i tempi, per es. per un ciclo di 5 minuti, il programma si blocca. Dove sbaglio ????
Autore
Ciao Innocenzo,
in qualche commento questo tipo di problematica è stata già riportata.
In pratica le variabili che contengono i valori dei tempi per il ciclo da 5 min sono troppo piccole: le variabili di tipo int in Arduino Uno, e simili a 8 bit, vanno da -32768 a +32767 quindi valori come 114788 superano il range possibile.
Prova a avariarle gli array relativi ai tempi con delle variabili di tipo ungigned long ( https://www.arduino.cc/reference/en/language/variables/data-types/unsignedlong/ ) che come descritto nel manuale possono contenere valori, positivi, fino a 4,294,967,295 (2^32 – 1).
[…] primo articolo hai letto come puoi ricavare i tempi delle fasi alba-giono-tramonto-notte e come tradurre in tempi […]
[…] Nel primo articolo dedicato alla centralina natalizia hai letto come sono calcolati i tempi di durata di ciascuna fase del ciclo giornaliero. […]