led che si accende da solo quando avvicino la mano??!?!?

grazie mille nn lo sapevo che si poteva fare in questo modo...
ma posso eliminarea nche le R in serie ai led mettendo ai pin dei led OUTPUT_PULLUP ??

cosa buffa.. avrò sbagliato ma nn capisco dove..
ho sostituito i miei pinMode(xx, INPUT) con :

   pinMode(2,INPUT_PULLUP);//tasto 1
  pinMode(3,INPUT_PULLUP);//tasto 5
  pinMode(4,INPUT_PULLUP);//tasto 9
  pinMode(5,INPUT_PULLUP);//tasto 3
  pinMode(6,INPUT_PULLUP);//tasto *

ed ora peggio di prima! i 5 led lampeggiano simultaneamente ed ininterrottamente...
proverò in maniera classica con delle R da 10 K...

Piero

se metti le PullUp devi cambiare

if (StatoBottoneUNO == HIGH )

con

if (StatoBottoneUNO == LOW)

ok ora va!
ora come suggerisce Vittorio devo gestire il caso in cui quando ci si trova in un certo stato, si ritorna allo stato iniziale se premo un tasto diverso da quello atteso o se passa un certo timeout....

suggerimenti??

grazie infinite a tutti!!
Piero

credo di esserci riuscito!!

non è il massimo ma per ora mi accontento!! poi pian piano lo migliorerò ... :smiley:

const int PinBottoneUNO = 2;
const int PinBottoneCINQUE = 3;
const int PinBottoneNOVE = 4;
const int PinBottoneTRE = 5;
const int PinBottoneASTERISCO = 6;
const int PinBottoneINATTESO= 12;
const int PinBottoneRESET=13;
int StatoBottoneUNO = 0 ;
int StatoBottoneCINQUE = 0 ;
int StatoBottoneNOVE = 0 ;
int StatoBottoneTRE = 0 ;
int StatoBottoneASTERISCO = 0 ;
int StatoBottoneINATTESO=0;
int StatoBottoneRESET=0;
int var = 0;//inizializzo la variabile "var" a 1
int contatore = 0;



void setup() {
  
  pinMode(2,INPUT_PULLUP);// tasto 1
  pinMode(3,INPUT_PULLUP);//tasto 5
  pinMode(4,INPUT_PULLUP);//tasto 9
  pinMode(5,INPUT_PULLUP);//tasto 3
  pinMode(6,INPUT_PULLUP);//tasto *
  pinMode(12,INPUT_PULLUP);// bottone inatteso incrementa di 1 il contatore
  pinMode(13,INPUT_PULLUP);//RESET
  pinMode(7,OUTPUT);//led
  pinMode(8,OUTPUT);//led
  pinMode(9,OUTPUT);//led
  pinMode(10,OUTPUT);//led
  pinMode(11,OUTPUT);//rele

}


void loop() {
StatoBottoneRESET = digitalRead(PinBottoneRESET);
if (StatoBottoneRESET == LOW){
 StatoBottoneUNO = 0 ;
 StatoBottoneCINQUE = 0 ;
 StatoBottoneNOVE = 0 ;
 StatoBottoneTRE = 0 ;
 StatoBottoneASTERISCO = 0 ;
 StatoBottoneINATTESO=0;
 StatoBottoneRESET=0;
 var = 0;
 contatore = 0;
  
}

StatoBottoneINATTESO = digitalRead(PinBottoneINATTESO);
if (StatoBottoneINATTESO == LOW){
contatore=(contatore+1);  
}
  
  switch (var){
   
case 0:
    digitalWrite(7,LOW);
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
    var=1;
    contatore=0;
break;

case 1:
    StatoBottoneUNO = digitalRead(PinBottoneUNO);
     if (StatoBottoneUNO == LOW && contatore==0)
  {  
    digitalWrite(7,HIGH);
    var = 2 ; 
    contatore=(contatore+1);
}
  break;
  
case 2:  
     StatoBottoneCINQUE = digitalRead(PinBottoneCINQUE); 
 if (StatoBottoneCINQUE == LOW && StatoBottoneUNO == LOW && contatore ==1)
  {
    digitalWrite(8, HIGH);
    var = 3 ;
    contatore=(contatore+1);
}
break;

case 3:
   StatoBottoneNOVE = digitalRead(PinBottoneNOVE);
   if (StatoBottoneNOVE == LOW && StatoBottoneCINQUE == LOW && StatoBottoneUNO == LOW && contatore ==2 )
  {
    digitalWrite(9, HIGH);
    var = 4 ;
   contatore=(contatore+1);
}
break;

case 4:
       StatoBottoneTRE = digitalRead(PinBottoneTRE);
    if (StatoBottoneTRE == LOW && StatoBottoneNOVE == LOW && StatoBottoneCINQUE == LOW && StatoBottoneUNO == LOW && contatore ==3)
  {
    digitalWrite(10, HIGH);
    var = 5 ;
    contatore=(contatore+1);
} 
break;

case 5:
     StatoBottoneASTERISCO = digitalRead(PinBottoneASTERISCO);
  if (StatoBottoneASTERISCO == LOW && StatoBottoneTRE == LOW && StatoBottoneNOVE == LOW && StatoBottoneCINQUE == LOW && StatoBottoneUNO == LOW )
  {
    digitalWrite(11, HIGH);//eccita il relè
    delay(1000);
    digitalWrite(8,LOW);
    digitalWrite(9,LOW);
    digitalWrite(11,LOW);
    digitalWrite(10,LOW);
    digitalWrite(7,LOW);    
    delay(1000);
    var = 0;
break;
  
  }
  }
  }

ciao e grazie
Piero

signori ma come faccio a sostituire il led con un rele?? ho comprato un relè la cui bobina si eccita a 6 volt, ma con il tester ho visto che sul piedino dove ho il led e voglio metterci il relè ho solo 3 volt, come faccio a far eccitare il relè?? esistono relè con bobine a 3 volt?(mi hanno detto di no...) è possibile amplificare il segnale in qualche modo... bjt...??

grazie piero

devi mettere un transistore e un diodo in antiparallello alla bobbina per non danneggiare il transistore.

http://www.ecs.umass.edu/ece/m5/images/relay_circuit_schematic_L.jpg

Ciao Uwe

ok chiaro!

grazie

ho realizzato il circuito postato da UWEFED e non va!
la R da 1 K sembra essere troppo grande credo.... eliminando la R e collegando l'OUTPUT dell'arduino direttamente sulla Base del transistor tutto funziona!!
la mia preoccupazione è la segunete:
togliendo la R posso danneggiare arduino?? ho provato con una R molto più iccola (2 da 330 in parallelo) e non funziona!l'unico modo per far eccitare il relè è togliere la R.
faccio bene??

altra curiosità sul circuito:

il diodo collegato in quel modo a cosa serve??

grazie piero

ho realizzato il circuito postato da UWEFED e non va!

Non e' possibile.
Dato che la Resistenza e' obbligatoria, altrimenti ti puo' saltare la porta di Arduino ( o anche il transistor ) controlla i collegamenti
poi, lo hai messo il Pinmode (pin,OUTPUT) ?

Il diodo serve a proteggere il transistor, visto che il Relè e' un carico induttivo e quindi possono crearsi sovratensioni

la mia paura infatti è proprio quella!!

il pinMode(pin, OUTPUT) ; c'è!
come è possibile vedere dal codice che ho postato precedentemente...

ricontrollo tt i collegamenti e faccio altre prove , ma credo di aver fatto tt a modo...

ciao

Ma che alimentazione usi per il relè?

i 5 v presi da arduino stesso, perchè nn vanno bene??

con una R da 110 ohm(tre da 330 in //) funziona!
è sufficente a nn bruciare transistor e/o pin arduino??
spero proprio di si..

piccola curiosità:
se io volessi usare un relè a 12 o 24 v(avendo ovviamente una alimentazione, separata da arduino, apposita)posso usare sempre lo steso circuito con gli stessi componenti, giusto??
alla fine il transistor nn amplifica il segnale ma funge solo da "interruttore" ,esatto o sto sbagliando??

grazie

ma che modello di transistor usi ?

è come da schema un 2n3904 ma non so dirti altro...

Da quello che dici, hai un relè con una bobina da alimentare a 6V e tu la (sotto)alimenti con i 5V di arduino... Ti funziona ma ha bisogno di parecchia corrente (con un datasheet del relè si potrebbe essere più precisi) e questo ti porta a dover abbassare la resistenza di base a livelli pericolosi per la porta del micro (sei al limite). Usa un alimentatore esterno e vedrai che puoi aumentare il valore della resistenza.