interruttore capacitivo sequenziale

Buona sera a tutti (spero sia il posto giusto per postare)

sperando che sia di aiuto a qualcuno posto questo sketch.

ho preso spunto nella rete per la fase di accendere un solo led, per la sequenza non ho trovato niente in rete e quindi me la sono “inventata” io per modo di dire. Se avete altre idee fate pure :smiley:

per poter usare lo sketch dovete scaricare la libreria CapacitiveSensor Qui e seguite le istruzioni di installazione in fondo alla pagina.

lo sketch

/* Nome Sketch: Touch Capacitivo con led in sequenza
   Autore:      Calò
   Descrizione: Far accendere dei led in sequenza tramite un "pulsante" touch che premuto una sola volta
                accende il primo led che rimane acceso finchè non si tocca ancora il pulsante facendo accendere
                il secondo led, entrambi rimangono accesi, toccando una terza volta il pulsante, si accende
                anche il terzo led, così ci sono 3 led accesi. Toccando ancora il pulsante si spengono i 3 led e la
                procedura può iniziare da capo.
*/
 
#include <CapacitiveSensor.h>

int statoLed1 = LOW; // stato iniziale led //
int statoLed2 = LOW; // stato iniziale led //
int statoLed3 = LOW; // stato iniziale led //

int led1 = 7;  // posizione led = pin Arduino //
int led2 = 8; // posizione led = pin Arduino //
int led3 = 10;  // posizione led = pin Arduino //

CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2); // pin con in mezzo la resistenza collegati ad Arduino in questo caso cs_pin4_pin2 //
 
void setup() 
{
pinMode(led1, OUTPUT); // modalità di impiego dei pin //
pinMode(led2, OUTPUT); // modalità di impiego dei pin //
pinMode(led3, OUTPUT); // modalità di impiego dei pin //
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); // auto calibrazione disattivata //
}
 
void loop() 
{
long total1 = cs_4_2.capacitiveSensor(10); // numero di campionamento... più è basso e meno sensibile è il sensore //

 
if (total1 > 100){
if (statoLed1 == LOW)  // se il led 1 è uguale a spento //
{                      
statoLed1 = HIGH; // stato led 1 acceso //
digitalWrite(led1, statoLed1); // imposta il led 1 come lo stato led 1 //
delay(150);} 
else{ 
statoLed1 = HIGH;
digitalWrite(led1, statoLed1);
delay(150);

if (total1 > 100){
if (statoLed2 == LOW)
{ 
statoLed2 = HIGH;
digitalWrite(led2, statoLed2);
delay(150);} 
else{ 
statoLed2 = HIGH;
digitalWrite(led2, statoLed2);
delay(150);

if (total1 > 100){
if (statoLed3 == LOW)
{ 
statoLed3 = HIGH;
digitalWrite(led3, statoLed3);
delay(150);} 
else{ 
statoLed3 = HIGH;
digitalWrite(led3, statoLed3);
delay(150);

if(total1 > 100){
if(statoLed1 == HIGH)
if(statoLed2 == HIGH)
if(statoLed3 == HIGH)
{
  statoLed1 = LOW;
  statoLed2 = LOW;
  statoLed3 = LOW;
  digitalWrite(led1, statoLed1);
  digitalWrite(led2, statoLed2);
  digitalWrite(led3, statoLed3);
  delay(150);}
  


}
 }
  }
   }
    }
     }
      }
       }

un breve video del funzionamento Qui

qui il Fritzing :grinning:

Cosa c'è in QUESTO post, [u]ben in evidenza ad inizio di questa sezione[/u], che non è chiaro ? ? ?` :smiling_imp: :smiling_imp: :smiling_imp:

Guglielmo

gpb01: Cosa c'è in QUESTO post, [u]ben in evidenza ad inizio di questa sezione[/u], che non è chiaro ? ? ?` :smiling_imp: :smiling_imp: :smiling_imp:

Guglielmo

Cavolo Guglielmo scusami non ho letto interamente :(

come posso rimediare?

tony112lx: come posso rimediare?

... prima o poi passerà un moderatore e sposterà questo thread nell'area più opportuna ... :roll_eyes:

Guglielmo