Informazioni su Attiny...

il problema del capSense è che non è proprio come un pulsante, ovvero tu pensi di premere una volta ma non sai quante volte il programma va a leggere quel tocco, dovresti controllare che sia rilasciato il "contatto" sul capSense prima di andare a leggere se è premuto di nuovo, ma può funzionare anche come hai fatto tu, questa è solo un'avertenza...

comunque puoi fare che la variabile non viene impostata ogni volta, ma mantiene il valore, tipo così:

#include <CapSense.h>
#define LED 11
 CapSense cs_4_2 = CapSense(4,2);
 int i = 0;
 int valoreFade = 0;
 void setup()
 {
pinMode(LED,OUTPUT);
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
 }
 void loop()
 {
long total = cs_4_2.capSense(30);
delay(15);
if (total >60)
{
i++;
} 

switch (i)
{
case 1:
for (valoreFade = 0 ; valoreFade < 52; valoreFade++) {   
    analogWrite(LED, valoreFade);

    delay(100);    
  }  
                           
break;

case 2:
for (valoreFade = valoreFade ; valoreFade < 103; valoreFade++) {   
    analogWrite(LED, valoreFade);     

    delay(100);    
                  
  }   
   
break;

case 3:
for (valoreFade = valoreFade ; valoreFade < 154; valoreFade++) {   
    analogWrite(LED, valoreFade);    

    delay(10);    
               
  }   
   
break;

case 4:
for (valoreFade = valoreFade ; valoreFade < 205; valoreFade++) {   
    analogWrite(LED, valoreFade);     
 
    delay(10);    

  }   
   
break;

case 5:

    for (valoreFade = valoreFade ; valoreFade < 256; valoreFade++) {   
    analogWrite(LED, valoreFade); 

    delay(10);    
                        
  }   
   
break;

case 6:
for(valoreFade = valoreFade ; valoreFade > -1; valoreFade--) {  
    analogWrite(LED, valoreFade);    
 
   delay(15);    
                           
  }   
    
  i=0;
 break;
 }
}

così si ricorda il valore precedente che aveva assunto e riparte da lì :wink:

?R:
il problema del capSense è che non è proprio come un pulsante, ovvero tu pensi di premere una volta ma non sai quante volte il programma va a leggere quel tocco, dovresti controllare che sia rilasciato il "contatto" sul capSense prima di andare a leggere se è premuto di nuovo, ma può funzionare anche come hai fatto tu, questa è solo un'avertenza...

comunque puoi fare che la variabile non viene impostata ogni volta, ma mantiene il valore, tipo così:

#include <CapSense.h>

#define LED 11
CapSense cs_4_2 = CapSense(4,2);
int i = 0;
int valoreFade = 0;
void setup()
{
pinMode(LED,OUTPUT);
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
}
void loop()
{
long total = cs_4_2.capSense(30);
delay(15);
if (total >60)
{
i++;
}

switch (i)
{
case 1:
for (valoreFade = 0 ; valoreFade < 52; valoreFade++) { 
    analogWrite(LED, valoreFade);

delay(100);   
  } 
                         
break;

case 2:
for (valoreFade = valoreFade ; valoreFade < 103; valoreFade++) { 
    analogWrite(LED, valoreFade);

delay(100);   
                 
  } 
 
break;

case 3:
for (valoreFade = valoreFade ; valoreFade < 154; valoreFade++) { 
    analogWrite(LED, valoreFade);

delay(10);   
             
  } 
 
break;

case 4:
for (valoreFade = valoreFade ; valoreFade < 205; valoreFade++) { 
    analogWrite(LED, valoreFade);

delay(10);


 
break;

case 5:

for (valoreFade = valoreFade ; valoreFade < 256; valoreFade++) { 
    analogWrite(LED, valoreFade);

delay(10);   
                       
  } 
 
break;

case 6:
for(valoreFade = valoreFade ; valoreFade > -1; valoreFade--) { 
    analogWrite(LED, valoreFade);

delay(15);   
                         
  } 
   
  i=0;
break;
}
}



così si ricorda il valore precedente che aveva assunto e riparte da lì ;)

Col codice che mi hai dato il problema persiste... come posso fare? :S

lampeggia ancora? :roll_eyes:
apparte che guardando meglio il caso 0 lo fa solo all'inizio... prova con questo:

#include <CapSense.h>
#define LED 11
 CapSense cs_4_2 = CapSense(4,2);
 int i = 0;
 int valoreFade = 0;
 void setup()
 {
pinMode(LED,OUTPUT);
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
 }
 void loop()
 {
long total = cs_4_2.capSense(30);
delay(15);
if (total >60)
{
if(i<=6) i++;
else i=0;
} 

switch (i)
{
case 1:
for (valoreFade = valoreFade ; valoreFade < 52; valoreFade++) {   
    analogWrite(LED, valoreFade);

    delay(100);    
  }  
                           
break;

case 2:
for (valoreFade = valoreFade ; valoreFade < 103; valoreFade++) {   
    analogWrite(LED, valoreFade);     

    delay(100);    
                  
  }   
   
break;

case 3:
for (valoreFade = valoreFade ; valoreFade < 154; valoreFade++) {   
    analogWrite(LED, valoreFade);    

    delay(10);    
               
  }   
   
break;

case 4:
for (valoreFade = valoreFade ; valoreFade < 205; valoreFade++) {   
    analogWrite(LED, valoreFade);     
 
    delay(10);    

  }   
   
break;

case 5:

    for (valoreFade = valoreFade ; valoreFade < 256; valoreFade++) {   
    analogWrite(LED, valoreFade); 

    delay(10);    
                        
  }   
   
break;

case 6:
for(valoreFade = valoreFade ; valoreFade > -1; valoreFade--) {  
    analogWrite(LED, valoreFade);    
 
   delay(15);    
                           
  }   
 break;
 }
}

Ciao ?R ho risolto... però purtroppo non ho avuto modo di provare il tuo codice... ho perso un po' di tempo da solo e non ho guardato sul forum... mi è stato utile però il tuo consiglio del valoreFade=valoreFade :smiley: poi è venuto fuori un altro problema che ho risolto!! :smiley: Grazie mille! :wink:
Da questa volta mi tocca studiare senno @leo72 mi ammazza!! xD
Per la parte del codice ho risolto!! SIIIIIII

bene :slight_smile: per curiosità, quale era il problema?

?R:
bene :slight_smile: per curiosità, quale era il problema?

Guarda, io non so programmare, ho messo su questo codice per intuizione... ho solo letto un po' qua e la e rubacchiato parti di codice e messe insieme... quindi sinceramente non te lo so dire... so solo che mi hai aiutato con il valoreFade=valoreFade... in modo che così non "lampeggiasse"... poi è venuto fuori un altro problema... dopo il primo ciclo di cambiamento di luminosità, arrivato allo spegnimento, alla successiva accensione andava prima su e poi giu... e lì ho risolto con il reset della variabile del fade... :smiley:

maggio93:
Da questa volta mi tocca studiare senno @leo72 mi ammazza!! xD

Saper scrivere 2 righe di codice è importante. Se tu oggi hai un problema e chiedi di risolvertelo a qualcuno scrivendo il codice al posto tuo, tu: 1) non hai imparato nulla; 2) domani, quando avrai un altro problema, dipenderai nuovamente da qualcuno che faccia le cose al posto tuo.

leo72:

maggio93:
Da questa volta mi tocca studiare senno @leo72 mi ammazza!! xD

Saper scrivere 2 righe di codice è importante. Se tu oggi hai un problema e chiedi di risolvertelo a qualcuno scrivendo il codice al posto tuo, tu: 1) non hai imparato nulla; 2) domani, quando avrai un altro problema, dipenderai nuovamente da qualcuno che faccia le cose al posto tuo.

Ma hai ragione!! però oggi non mi sgridare che è il mio compleanno!! haha ...no, comunque mi tocca davvero studiare... è una cosa bruttissima non saper fare... è vero che questo codice l'ho copiato un po' in qua e in la... però almeno sono riuscito a vedere un po' come fare... mi consigli qualche guida online??

Ti basta cercare un corso di C gratuito. Ce ne sono tantissimi gratuiti. Ti scarichi il PDF e lo leggi. Sono fatti per l'uso su PC quindi salterai tutte le parti di comunicazione con l'utente perché non hai né terminali né tastiera :wink:

leo72:
Ti basta cercare un corso di C gratuito. Ce ne sono tantissimi gratuiti. Ti scarichi il PDF e lo leggi. Sono fatti per l'uso su PC quindi salterai tutte le parti di comunicazione con l'utente perché non hai né terminali né tastiera :wink:

Ok, cerco e poi magari posto il link!! Grazie!! E scusa se chiedo troppo e rompo!!

Altra domanda, per un altro progetto, avrei bisogno di 4 uscite pwm (per il controllo di led rgb e led bianchi) e un'input per i capsense, ce la fa l'ATTINY85V-10PU? non riesco a capire quante input/output ha... :S

ATtiny25/45/85

Non so se siano tutte PWM.
Controlla nel datasheet sul sito Atmel.

Forse è meglio con l'ATtiny 84

eh, non ci capisco una mazza... è pieno zeppo quel datasheet... '-.- altra cosa, ma posso usare la capsense sull' ATTINY85V-10PU : O spero proprio di si!!!

l'85 ha si' 4 PWM, ma poi resta un solo pin per la capsense, che invece ne richiede due (ho dato uno sguardo veloce, ricontrolla)

nooooo :open_mouth: altrimenti dovrei gestire i bianchi insieme ad uno dei colori degli rgb... ma non è quello che voglio fare... ATTINY2313V-10PU questo invece va bene?? questo attiny ha bisogno di componenti di contorno per funzionare? Grazie a tutte le persone che mi aiutano... questo forum è una vera salvezza!!! :smiley:

L'Attiny25/45/85 ha 4 uscite Pwm ma quello sul PB3 dà solamente il segnale inverso di quello su PB4.
Tra l'Attiny84 e l'Attiny2313 prendi il primo: ha molta più memoria del secondo.

Attento però perché vedo che la CapSense (mi par di capire che tu la voglia usare) non è compatibile con i Tiny. Non so se si possa modificare semplicemente oppure no, non l'ho guardata.

Se non si puo usare il capsense sull'attiny é un casino!!! Comunque ho aperto un topic... cosi chi sa qualcosa lo dice :slight_smile: e se non c'é proprio un modo cosa uso atmega? O cosa? Grazie!!

Ho risposto di là.

Anch'io :wink: