Go Down

Topic: Uso della funzione for abinata al timer (Read 652 times) previous topic - next topic

willy72

Salve a tutti, è il mio primo post ,quindi abbiate pazienza !
Vengo subito al dunque :
Se io volessi far lampeggiare un led per 10 volte,quando si verifica una condizione legata allo scoccare di un determinato secondo , come dovrei fare ???

una parte del programma che ho usato è la seguente :

if ((12==rtc.getHours()) && (0<=rtc.getMinutes()) && (5==rtc.getSeconds())) {

  for(int i=0; i<10; i++)
 
  digitalWrite(led, HIGH);
  delay(100);
  digitalWrite(led, LOW);
  delay(300);

}

Però non funziona correttamente , penso perchè la condizione è vera solo in quel determinato secondo ! , e il ciclo " for " si blocca perchè il secondo è passato.
Ma dove sbaglio !
Premetto che non sono pratico di programmazione, quindi probabilmente per voi la cosa è ovvia !
Ringrazio anticipatamente chi mi aiuterà.



leo72

Cos'è che vuoi fare, una specie di allarme?
Perché confronti con l'uguaglianza (==) le ore ed i secondi mentre con minore o uguale (<=) i minuti?

willy72

Ciao Leo72

ho impostato il simbolo > o < al posto del == solo perchè volevo che la condizione si ripetesse a tutti i minuti al secondo 5

Si volevo creare un allarme ! che ad un determinato secondo di ogni minuto mi facesse lampeggiare un led per tot volte. In realtà non mi serve a niente , è solo una curiosità mia che non riesco a soddisfare.

Se tu hai una soluzione più pratica , gradirei la postassi !
grazie ciao

leo72

Basta levare il controllo sui minuti:

Code: [Select]
if ((rtc.getHours() == 12) && (rtc.getSeconds() == 5)) {
  for(int i=0; i<10; i++) {
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(300);
  }
}

A tutti i "5" secondi della 12a ora, ti partirà l'allarme.

ale92

#4
Oct 12, 2012, 03:33 pm Last Edit: Oct 12, 2012, 03:36 pm by ale92 Reason: 1
veramente nel primo programma non ci sono le graffe nel for...per questo ti si bloccava, e poi come ha detto leo visto che lo devi fare tutti i minuti non serve il controllo per quest'ultimi

willy72

Grazie ragazzi , il problema era proprio la mancanza della graffa ! son tre giorni che cercavo la soluzione !

grazie ancora

problema risolto !

Go Up