Orologio con Alba/Tramonto da calcoli astronomici

hai ragione!! grazie mille! ecco cosa non tornava con quell'array ;D...devo aver fatto casino perchè all'inizio lo usavo di 6 elementi, perchè, oltre ai minuti e alle ore, facevo calcolare anche i secondi...poi cambiando gli indici ho combinato il guaio!

Ti ringrazio anche per la dritta sulle macro, appena mi ci rimetto sopra applico tutti i tuoi consigli :wink:

L'unica cosa che non ho capito bene è perchè mi consigli di usare variabili statiche all'interno delle funzioni, che vantaggio apportano?

in c, variabili "static" si mantengono costanti tra una chiamata e l'altra della funzione, vengono inizializzate una sola volta all'inizio e poi mantengono sempre un valore, es:

unsigned int counter(){
   static unsigned int count = 0;
   return ++count;
}

se lo chiami 10 volte count varrà 10 e la funzione ti restituisce il numero di volte che la hai chiamata... provala :smiley: (se non ho fatto errori nella scrittura)

ma come ti ripeto, non ho letto tutto il topic, quindi non so bene quale sia il tuo problema e se è meglio affrontarlo con puntatori, variabili static, struct o che so io ;D

cmq visto il discorso delle macro/indici? ;D cambiando solo il valore della macro risolvi tutto, sennò devi stare a cercare tutti i numeri magici, e capita di fare confusione e scordarsene uno... cosa che non succede con le macro ;D

ciao ragazzi,
oggi avendo un attimo di tempo mi sono messo ad estrarre una libreria dal codice scritto, e qui in anteprima vi do un'anticipazione del risultato:
http://cinquetau.altervista.org/blog/wp-content/uploads/2011/01/SunLight.zip

presto scriverò una paginetta sul playground, farò qualche esempio ecc...

per il momento chiedo a tutti coloro che avranno voglia di provarla di dirmi se è comprensibile (si possono fare ancora parecchie migliorie, e le farò) e di darmi qualche parere anche per le modifiche.

grazie a tutti

[timestamp=1295770380]
La paginetta sul playground: Arduino Playground - SunLight

Anche se calcolare la data di alba e tramonto mi sembra poco utile per accendere una luce (basterebbe una fotoresistenza collegata alla arduino), mi sembra una libreria interessante per realizzare un orologio, o una sveglia, o un calendario elettronico con fasi lunari, o un cronotermostato per il termosifone, ecc...
Sarebbe per esempio simpatico collegare ad arduino una "luna artificiale" meccanica, che cambia fase in tempo reale! :slight_smile:

E mi hai appena fatto venire la bizzarra idea di un calendario interattivo!
Ho scritto un programma che scarica tutta la programmazione TV di SKY e permette di scegliere i propri programmi preferiti: se si potessero poi "caricare" su questo calendario, che mostrerebbe volta per volta quale e quando è il prossimo programma in onda, sarebbe interessante!
Per inciso, il programma è questo:
http://win98.altervista.org/SatGrabLC/

Adesso apro un thread apposta! :wink:

ecco ti conviene perchè sei un po' OT! :stuck_out_tongue:

Ammetto che non ho spiegato bene cosa fa adesso la libreria, rimedio subito:

la libreria non è nè un calendario nè calcola le fasi lunari (anche se potrebbero comunque essere implementate), si limita solo a calcolare il moto del sole per una certa località (latitudine e longitudine) e può farlo giornalmente impostando una data.
Gli elementi a cui si è dato risalto sono il sorgere ed il tramontare del sole, che indubbiamente, caratterizzano le fasi di luce e di buio di una giornata.

Il progettino inizialmente era nato per permettermi di accendere le luci sul balcone durante il periodo natalizio, non ho usato una fotoresistenza perchè mi andava di provare questa cosa e poi perchè il valore letto dalla fotoresistenza va calibrato a seconda di come la disponi.
Quindi in un certo senso questa libreria ti da il vantaggio di non aver bisogno di calibrazioni e di non usare pin di Arduino.
Lo svantaggio è che computazionalmente è sicuramente più impegnativa.

Nella libreria ci sono solo le funzioni necessarie al calcolo dei due eventi, più anche il calcolo del mezzo dì, ovvero quando il sole è allo Zenit. Poi sta all'utilizzatore della libreria decidere cosa farci...anche una sveglia che ti avvisi 10 minuti prima dell'alba ad esempio!

Ciao Federico

ti vorrei anche io proporre di implementare nella libreria il calcola delle fasi lunari comprendendo anche il perigeo e apogeo, se hai bisogno di indicazioni ti posso inviare un piccolo prg scitto il basic che esegui questi calcoli.

Ciaoooo