Go Down

Topic: Informazioni su Attiny... (Read 3 times) previous topic - next topic

?R


Però c'è un problema... quando fa il case 1 va tutto bene, il led resta acceso e ok... quando gli faccio fare il case 2 quando ripete il ciclo mi fa "lampeggiare" il led.. cioè, riparte da valoreFade = 51 arriva a 103 e continua sempre così... come posso fare per bloccare la cosa?!

per "bloccare la cosa" intendi che una volta arrivato a 103 resta lì fermo aspettando delle variazioni sul capSense? o che da 103 torna gradualmente a 51 in modo da non lampeggiare quando va a ripetere il caso 2?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

maggio93


per "bloccare la cosa" intendi che una volta arrivato a 103 resta lì fermo aspettando delle variazioni sul capSense?

Esatto, in patica voglio che toccando il filo (capsense) la prima volta il led vada da 0 a 51, e se io non tocco deve restare acceso, non tornare a 0 e poi di nuovo a 51 facendo così un ciclo infinito... se tocco invece la seconda volta deve andare da 51 a 102 e uguale a prima, se non tocco il led una volta raggiunto il valore 102 deve restare acceso... non tornare a 51 e poi a 102... se mi riesci ad aiutare mi fai un gran favore, io non ci salto fuori e non so come fare.. :D Grazie a te e a tutti gli altri che rispondono a questo topic!! ;)

leo72

Devi mettere qualche variabile e gestire i vari eventi con quella.
Basta un flag: arrivato a 51, lo imposti a 1 ed al successivo controllo eseguire il fading fino a 100. Qui lo passi a 2. Al successivo passaggio al controllo, verifichi dov'è: se è a 2 continui da 101 ecc...

PS:
Sarebbe buona cosa scaricarsi una guida o prendere un libro che insegni il C. Ci sono sempre degli esempi allegati che spiegano man mano che avanzi nella lettura cosa stai facendo.

maggio93


Devi mettere qualche variabile e gestire i vari eventi con quella.
Basta un flag: arrivato a 51, lo imposti a 1 ed al successivo controllo eseguire il fading fino a 100. Qui lo passi a 2. Al successivo passaggio al controllo, verifichi dov'è: se è a 2 continui da 101 ecc...


Code: [Select]
{
case 1:
if (flag == 1) valoreFade = 52;
for (valoreFade = 0 ; valoreFade < 52; valoreFade++) {   
    analogWrite(LED, valoreFade);
if (valoreFade == 52) flag = 1;
    delay(100);   
  } 
                           
break;

case 2:
for (valoreFade = 51 ; valoreFade < 103; valoreFade++) {   
    analogWrite(LED, valoreFade);     
if (valoreFade == 103) flag = 2;
    delay(100);   
                 
  }   
   
break;

case 3:
for (valoreFade = 102 ; valoreFade < 154; valoreFade++) {   
    analogWrite(LED, valoreFade);   
if (valoreFade == 154) flag = 3;
    delay(10);   
               
  }   
   
break;

Circa così?? :S Per la guida ci sto pensando... e mi sa che seguirò il tuo consiglio dopo questo progettino!! :S ;)

leo72

Così però stai mettendo dei case, non ti servono poi i check sul flag interni al case.
Se hai diversi schemi di fading e ciò che vuoi fare deve stare solo dentro ad uno di questi, devi fare:
Code: [Select]
switch.....
  case 1:
    .....
  case 2:
    switch flag
      case 0:
        ..
      case 1:
        ..

ecc...

Go Up