Go Down

Topic: Interrompere una funzione e richiamarne un'altra (Read 368 times) previous topic - next topic

Spaceuniversal

Aug 21, 2013, 03:42 pm Last Edit: Aug 21, 2013, 03:58 pm by Spaceuniversal Reason: 1
ciao!,
stavo cercando di capire come interrompere un'istruzione (nel mio caso sto realizzando una semplice dissolvenza con dei led rgb) per richiamarne un'altra quando premo un pulsante da telecomando ir (usando la libreria IRremote)
quindi sono a questo punto:

Ho  la mia istruzione di fade:
Code: [Select]

void loop (){


if (results.value == 52125) //primo if ciclo
{
  digitalWrite (verde,HIGH);
  digitalWrite (rosso,LOW);
  digitalWrite (blu,HIGH);
}

if (results.value == 51994){   //secondo if ciclo
   
    digitalWrite (verde,HIGH); //rosso
    digitalWrite (rosso,LOW);
    digitalWrite (blu,HIGH);
 
  delay (100) ;
   
    digitalWrite (verde,LOW); //giallo
    digitalWrite (rosso,LOW);
    digitalWrite (blu,HIGH);
 
   delay (100) ;
   
  digitalWrite (verde,HIGH); //blu
  digitalWrite (rosso,HIGH);
  digitalWrite (blu,LOW);
 
  delay (100) ;
   
  digitalWrite (verde,LOW);// verde
  digitalWrite (rosso,HIGH);
  digitalWrite (blu,HIGH);
 
  delay (100) ;
   
irrecv.resume(); // ricevo il prossimo valore
}


Durante la funzione del secondo ciclo if (quella di lampeggio) vorrei in qualsiasi momento passare ad un'altra funzione (nel mio caso è un semplice if che richiama l'accensione di un altro led, E' il primo if ad inizio codice).
Ora come ora riesco solo a farlo se aspetto la fine del ciclo di fade.

Non capisco come dovrei impostare il codice

leo72

"Istruzione" non è il termine giusto. Diciamo "funzione".
Le istruzioni sono i singoli comandi che dicono al micro cosa far, la funzione è un insieme di istruzioni raccolte in un blocco di codice.

Inoltre devi usare millis() al posto dei delay in modo che anche durante il fading il codice possa "fare altre cose". Ti linko un articolo:
http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/

Spaceuniversal

grazie Leo.. ho modificato il titolo intanto.

Speriamo di capire bene questa millis() ..leggo oggi in serata.

leo72

Nell'articolo che ti ho citato c'è un esempio che fa 2 blink di 2 led differenti. A te serve leggere tutto e capire poi quell'ultimo esempio, dove il primo blink sarebbe il tuo fading, al posto del secondo blink l'altra azione o controllo da compiere.

Go Up