come semplificare ed abbreviare

per l'orario ho modificato ma avendo 3 canali da gestire che cambiano in modo differente ho comunque scritto così e non so come poter abbreviare, per ogni icremento ho bisogno di un 'if'

...dim=255/18;
ora=43200;//ora accensione ore3600 minuti60 secondi1
ora2=83400;//ora spegnimento ore
3600 minuti60 secondi1
int x=150;//intervallo in secondi tra un fade e un altro...

if (time >= ora && time<=ora+x)
{
analogWrite (ledw1,dim18);
analogWrite (ledw2,dim
18);
analogWrite (leduv, dim16);
LCD.setCursor(0,1);
LCD.print ("Alba 0%");
}
else
if (time >= ora+x && time<=ora+x
2)
{
analogWrite (ledw1,dim*17);...

niki77 scusami, come funziona lo step che vedo nel tuo codice?
Inoltre con il codice che c'è tra parentesi il software da per vero ogni intervallo tra 'secondi>allarme+incremento' e 'secondi<allarme+(incremento*9)' come scandisco il tempo tra un aumento e l'altro? Forse non ho capito io ma tra le due opzioni c'è un'infinito numero di volte per cui if è vero quindi ad ogni passaggio, senza l'indicazione di un tempo preciso, aumenterebbe sempre no?!

if ((secondi>allarme+incremento) && (secondi<allarme+(incremento9)) { // è scattata l'ora e non ho dimmerato 9 volte
analogWrite(pin, step
incremento);
incremento++

Guarda che io non ho postato alcun codice , ho quotato un frammento di leo72.

Io ti avevo consigliato di gestire tutto con un array di valori in millisecondi.

vabbè, quello che avevi riportato intendevo e che ho ricopiato io nel quote.
Si mi dicevi dell'array, ma non ho capito come lo devo impostare che non l'ho mai usato, infatti ti chiedevo più su se potevi farmi un esempio di come poterlo impostare

if (hour()==23 && minute()==15 && second()==40)//immissione dell'orario di accensione del led

Non si mette mai == quando si confrontano dei tempi specie se sono variazioni piuttosto rapide, molto probabile che in alcuni cicli il secondo venga perduto saltando la funzione. Usare > o = a 40 ti garantisce che se al programma sfugge il 40 ma vede il 41 o 42 la funzione viene eseguita ugualmente

grazie, non la sapevo questa, quindi cosa cambia tra i due simboli, = e ==?

= vuol dire assegnazione (ovvero: la variabile X deve valere Y)
== vuol dire uguaglianza (ovvero: la varibaile X è uguale ad Y?)

A = B copio il valore di B in A
If A == B ... significa che A deve essere assolutamente identico a B
If A >= B ... significa che A deve essere uguale a B oppure mi va bene anche se è maggiore di B ... l'importante che non sia inferiore a B

niki77:
Già ma cosi gestisci solo intervalli regolari !

Con un array gestisci un orario esatto,

Non dico di non usare gli array, dico di usare gli array con solo i secondi.
Se devi usare orari sei costretto ad usare array tridimensionali: array allarmi[x][y][z]
Mentre usando i secondi usi array monodimensionali: allarmi[x]
Così puoi fare poi ciò che vuoi.

leo intendeva

Se devi usare orari sei costretto ad usare array tridimensionali: array allarmi[x][y][z]
Mentre usando i secondi usi array monodimensionali: allarmi[x]

lesto:
= vuol dire assegnazione (ovvero: la variabile X deve valere Y)
== vuol dire uguaglianza COMPARAZIONE (ovvero: la varibaile X è uguale ad Y?)

:zipper_mouth_face:

leo72:
Non dico di non usare gli array, dico di usare gli array con solo i secondi.
Se devi usare orari sei costretto ad usare array tridimensionali: array allarmi[x][y][z]
Mentre usando i secondi usi array monodimensionali: allarmi[x]
Così puoi fare poi ciò che vuoi.

niki77:
Con un array gestisci un orario esatto, fermo restando che trasformare l'orario in un unico dato long è sempre vivamente consigliato.

O ma leggete e capite quello che scrivo od osservate soltanto l'armoniosa sequenza di simboli che rappresento nei miei post?? :grin:

niki77:

lesto:
= vuol dire assegnazione (ovvero: la variabile X deve valere Y)
== vuol dire uguaglianza COMPARAZIONE (ovvero: la varibaile X è uguale ad Y?)

:zipper_mouth_face:

uh, e ci sono almeno altri 5 o 6 significati dell'= in matematica.. il mio prof diceva sempre che dovrebbero essere simboli differenti tra loro, ma per mettere d'accordo tutti...

Io leggo quello che scrivi e se potessi capire lo preferirei anche io, è per questo che ti chiedevo come usare un array, se lo sapevo non l'avrei chiesto, è come se ti dicessi che per fare il pane serve l'impasto, ma se non sai come fare l'impasto non farai ugualmente il pane.

niki77:
O ma leggete e capite quello che scrivo od osservate soltanto l'armoniosa sequenza di simboli che rappresento nei miei post?? :grin:

L'ho letto, ma io mi riferivo al periodo quotato, dove tu dicevi che non potevo usare orari strani.

Già ma cosi gestisci solo intervalli regolari !

A questo ti riferisci?

Io devo per forza iscrivermi al primo corso utile, niki- leo / leo-niki ....
Mi sembra che parliamo 2 lingue diverse!!
Parlammo e nun ce capimmo mai!
:stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:

Niki, mi pare che alle volte tu diamolte cose troppo per scontato, sembri mia moglie quando mi spiega qualcosa omettendo informazioni essenziali per capire il discorso e poi si arrabbia con me se non la capisco XD

L'opposto sono io, che spesso divento prolisso da quanto scrivo per spiegare le cose. :stuck_out_tongue:

scusate, qualcuno sa spiegarmi come utilizzare l'array e come poter impostare il codice? Grazie mille

Dandovino:
scusate, qualcuno sa spiegarmi come utilizzare l'array e come poter impostare il codice? Grazie mille

L'array altro non è che una forma per semplificare l'uso ripetitivo di tante variabili identiche.
Invece di usare
a1, a2, a3 ecc...
usi a[x]
con x che indica l'indice della cella (il "contenitore") da cui vuoi prelevare o mettere i tuoi dati.
per dichiarare un array di 10 celle fai così:
tipo_data nome_array[dimensione]

l'indice va da 0 a dimensione-1

http://arduino.cc/en/Reference/Array

ti ringrazio