Pages: [1]   Go Down
Author Topic: Interrompere una funzione e richiamarne un'altra  (Read 333 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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
« Last Edit: August 21, 2013, 08:58:06 am by Spaceuniversal » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23142
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

"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/
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie Leo.. ho modificato il titolo intanto.

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23142
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Pages: [1]   Go Up
Jump to: