Ciao a tutti
per imparare un po' la programmazione, ho fatto un orologio con motori passo passo per muovere le lancette, utilizzo un arduino nano, un modulo DS3231, 2 encoder e 2 sensori ottici per posizione zero.
Ho fatto parte del programma per far funzionare il motorino delle ore (funziona), è questo:
if (ora1fatta == false) // verifico se ho già posizionato la lancetta
{
if (ora == 1 || ora == 13) // controllo la variabile ora, che ore sono
{
digitalWrite (DIR_ORE, HIGH); // direzione motore
digitalWrite (MOT_ORE, LOW); // accende motore ore
while (true)
{
digitalWrite(STEP_ORE, HIGH); // step per far avanzare motore passo passo
delayMicroseconds(14000);
digitalWrite(STEP_ORE, LOW);
delayMicroseconds(15000);
pos_enc_ore = enc_ore.read(); // leggo encoder
if (pos_enc_ore >= 200) // se posizone a ore 1
{
break; // esco dal ciclo while
}
}
digitalWrite (MOT_ORE, HIGH); // spengo motore ore
ora1fatta = true; // avviso che ho impostato l'ora
}
}
Questo pezzo di programma è ripetuto per ogni ora (quindi 12 volte), per posizionare la lancetta delle ore; ora dovrei fare il posizionamento della lancetta dei minuti, ma dovrei replicare questo blocco per 60 volte....
Penso che ci sia un'altro modo, più veloce, ma non mi viene in mente, qualcuno sa darmi un consiglio? Uno spunto?
Grazie