Aiuto Arduino Uno :(!!

Matteo_Ciccio: Accendere 10 led in sequenza con due pulsanti star e stop :D

Cioè? Parto con tutti accesi. Se premo una volta il pulsante saranno accesi 9 su 10, premo ancora allora accesi 8 su 10 etc. fino a spegnerli tutti?

Matteo_Ciccio: Ok grazie però il mio problema rimane non riesco a usare il pulsante di stop

Stesso discorso della variabile stato. Il tasto di stop è associato al valore di fermo e di stato_fermo. Ma a seconda del valore di stato_fermo NON fai nulla. Le uniche volte che spegni dei led, lo fai guardando il valore di stato e non di stato_fermo.

E' la logica che non và. Stai facendo ragionare male il programma.

P.S. anche tutte quelle delay(500) secondo me non servono se quello che vuoi fare è quello che ti chiedo di confermare sopra.

No partono da spenti poi premendo start dal Led 1 al Led10 si accendono in sequenza finchè non premo stop e si dovrebbero spegnere tutti dico dovrebbero perche lo stop non funziona

Ragazzi vi prego aiutatemi sto impazzendo questo e lo sketc funzionante con lo start ma lo stop non ne vuole sapere HELP ME!!!!

#define LED1   2            // LED collegato al pin digitale  2  
#define LED2   3             // LED collegato al pin digitale  3 
#define LED3   4              // LED collegato al pin digitale  4 
#define LED4   5              // LED collegato al pin digitale  5 
#define LED5   6              // LED collegato al pin digitale  6 
#define LED6   7              // LED collegato al pin digitale  7 
#define LED7   8              // LED collegato al pin digitale  8 
#define LED8   9              // LED collegato al pin digitale  9 
#define LED9  10              // LED collegato al pin digitale 10 
#define LED10 11              // LED collegato al pin digitale 11 
#define BUTTONSta 13          // A1 è il pin di input dove è collegato il pulsante di start 
#define BUTTONSto 12          // A2 è il pin di input dove è collegato il pulsante di stop
int val = 0;                  // si userà val per conservare lo stato del pin di input  
int vecchio_val = 0;          // si userà vecchio_val per conservare lo stato del pin di input al passo precedente  
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso  
int fermo = 0;
int vecchio_fermo = 0;
int stato_fermo = 0;
void setup() {  
  pinMode(LED1, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED2, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED3, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED4, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED5, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED6, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED7, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED8, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED9, OUTPUT);        // imposta il pin digitale come output  
  pinMode(LED10, OUTPUT);       // imposta il pin digitale come output  
  pinMode(BUTTONSta, INPUT);    // imposta il pin digitale come input  
  pinMode(BUTTONSto, INPUT);    // imposta il pin digitale come input
}  
  
void loop() {
  
val = digitalRead(BUTTONSta);  // legge il valore dell'input e lo conserva  
  
   // controlla se è accaduto qualcosa  
  if ((val == HIGH) && (vecchio_val == LOW)){  
    stato = 1 - stato;  
    delay(15);                // attesa di 15 millisecondi  
  }   
  
  vecchio_val = val;          // ricordiamo il valore precedente di val  
  
    if (stato == 1) {  
    delay(500);              // aspetta zero secondi
    digitalWrite(LED1, HIGH);  // accende il LED  
    delay(500);              // aspetta dieci secondi

  }  
  if (stato == 1)  {  
    delay(500);              // aspetta un secondo
    digitalWrite(LED2, HIGH);  // accende il LED  
    delay(500);              // aspetta nove secondi
  
  }
  if (stato == 1)  {  
    delay(500);              // aspetta due secondi
    digitalWrite(LED3, HIGH);  // accende il LED  
    delay(500);              // aspetta otto secondi

  }
  if (stato == 1)  {  
    delay(500);              // aspetta tre secondi
    digitalWrite(LED4, HIGH);  // accende il LED  
    delay(500);              // aspetta sette secondi


  }
  if (stato == 1)  {  
    delay(500);              // aspetta quattro secondi
    digitalWrite(LED5, HIGH);  // accende il LED  
    delay(500);              // aspetta sei secondi
  
  }
  if (stato == 1)  {  
    delay(500);              // aspetta cinque secondo
    digitalWrite(LED6, HIGH);  // accende il LED  
    delay(500);              // aspetta cinque secondi

  }
  if (stato == 1)   {  
    delay(500);              // aspetta sei secondi
    digitalWrite(LED7, HIGH);  // accende il LED  
    delay(500);              // aspetta quanttro secondi

  }
  if (stato == 1)  {  
    delay(500);              // aspetta sette secondi
    digitalWrite(LED8, HIGH);  // accende il LED  
    delay(500);              // aspetta tre secondi

  }
  if (stato == 1)  {  
    delay(500);              // aspetta otto secondi
    digitalWrite(LED9, HIGH);  // accende il LED  
    delay(500);              // aspetta due secondi

  }
  if (stato == 1)  {  
    delay(500);              // aspetta nove secondi
    digitalWrite(LED10, HIGH);  // accende il LED  
    delay(500);              // aspetta un secondo

  }





 if (stato == 1) 
   digitalWrite(LED1, LOW);
   
  if (stato == 1) 
   digitalWrite(LED2, LOW);
   
 if (stato == 1) 
   digitalWrite(LED3, LOW);
  
  if (stato == 1) 
   digitalWrite(LED4, LOW);
   
  if (stato == 1) 
   digitalWrite(LED5, LOW);
   
  if (stato == 1) 
   digitalWrite(LED6, LOW);
   
  if (stato == 1) 
   digitalWrite(LED7, LOW);
   
  if (stato == 1) 
   digitalWrite(LED8, LOW);
   
  if (stato == 1) 
   digitalWrite(LED9, LOW);
   
  if (stato == 1) 
   digitalWrite(LED10, LOW);
}

Primo. Hai tolto la lettura del pulsante Stop, come può Arduino fare qualcosa quando lo premi? Secondo. Vedo che dei suggerimenti che ti ho dato, tipo Serial.begin(9600); nel setup te ne sei fregato. Vuoi un aiuto o dobbiamo fartelo e basta?

In generale, la logica di quel che vuoi fare non l'ho capita: stato = 1 - stato; che senso ha? Tu vorresti che a ogni pressione del pulsante start, lo stato vada da 1 a 10 ? Arrivato a 10 si ferma o riparte da 1? Se è cosi, li devi scrivere

stato=stato+1;
if(stato>10) stato=10;

Poi se premi il tasto stop allora stato=0;

In questo modo stato riflette il senso dei tasti premuti. 0=stop 1-10=i del accesi secondo sequenza

void setup()
{ delay(1000);
  Serial.begin(9600);
  ... qui il resto rimane uguale
}

void loop() {
  val = digitalRead(BUTTONSta);  // legge il valore dell'input e lo conserva  
  // controlla se è accaduto qualcosa  
  if ((val == HIGH) && (vecchio_val == LOW)){  
    stato = stato +1;  
    if(stato>10) stato=10;
    delay(15);                // attesa di 15 millisecondi  
  }   
  vecchio_val = val; 
  fermo = digitalRead(BUTTONSto);  // legge il valore dell'input e lo conserva  
  // controlla se è accaduto qualcosa  
  if ((fermo == HIGH) && (vecchio_fermo == LOW)){  
    stato=0;
    delay(15);                // attesa di 15 millisecondi  
  }   
  vecchio_fermo = fermo;          
  Serial.print("stato=");    // a video il valore di stato
  Serial.println(stato);
  if (stato == 1)  digitalWrite(LED1, HIGH);  // accende il LED  
  if (stato == 2)  digitalWrite(LED2, HIGH);  // accende il LED  
  ... eccetera.. 
  if(stato==0) 
  { digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    ... li spegni tutti
    digitalWrite(LED10,LOW);
  }
}

Vedi se cosi funziona, vedi nel monitor seriale dell'IDE di Arduino se la variabile stato fa quello che vuoi tu. Quella è la prima cosa.

Altro piccolo consiglio, invece di :

#define BUTTONSta 13          // A1 è il pin di input dove è collegato il pulsante di start 
#define BUTTONSto 12          // A2 è il pin di input dove è collegato il pulsante di stop

fai

#define BUTTONSta A1          // A1 è il pin di input dove è collegato il pulsante di start 
#define BUTTONSto A2          // A2 è il pin di input dove è collegato il pulsante di stop

E' più "portabile" su altre Arduino tipo la Mega e risulta più chiaro anche da leggere (ricordati che il 13=A1 !!!).