Go Down

Topic: Problema con array dei led e pulsante (Read 136 times) previous topic - next topic

Finellux

Salve a tutti sono fresco fresco di iscrizione, mi servirebbe un aiuto con il mio codice per un esame.
Premesso che sono alle primissime armi, scopiazzando qua e la con qualche modifica ho cercato di unire vari esempi che ho trovato sul forum.
Il mio obiettivo era creare un codice che mi permettesse tramite un bottone di effettuare al primo push: una serie di led che "blinkano", al secondo push: gli stessi led si accendono a scia con l'array, e lo fanno per due volte dopodichè si spengono tutti e si accende un altro led che non fa parte dell'array. Al terzo push infine lo faccio tornare allo stadio iniziale di tutto spento.

So che la descrizione appena fatta risulta essere molto confusa, cercherò di essere più esauriente elencando il materiale fisico collegato al mio arduino UNO:

- 5 led collegate ai digitalpin PWM
- un pulsante

Spero mi possiate aiutare nella scrittura e correggere gli errori presenti nel codice in primis un comando che mi faccia fermare il loop della scia alla seconda ripetizione.
Grazie

Allego anche il codice che spero possa aiutare nella comprensione e mi scuso anticipatamente per eventuali errori nel post o altro.

Code: [Select]
int ledVerde = 6;
int pinArray[] = {2,3,5,9, 10, 11};
int timer=40;
int count=0;
int buttonPin = 2;
int buttonState = 0;
int counter=0;
int laststate=0;
int n=0;


void setup()  {
  // declare pin 9 to be an output:
  for (n=0;n<2;n++){
  for (count=0;count<6;count++) {
  pinMode(pinArray[count], OUTPUT);
  pinMode(ledVerde, OUTPUT);
   digitalWrite (ledVerde,LOW);
   Serial.begin(9600);
  }}}

// the loop routine runs over and over again forever:
void loop()  {

  buttonState = digitalRead(buttonPin);
  // set the brightness of pin 9:
  if (buttonState != laststate) {
   if (buttonState == HIGH){
    counter=counter+1;}}
   
   laststate=buttonState;


  if(counter==1){
     digitalWrite(pinArray[count],HIGH);
       
   
                             
}
if (counter==2){
   
   for (count=0;count<5;count++){
      digitalWrite(pinArray[count],HIGH);
      delay(timer);
      digitalWrite(pinArray[count+1],HIGH);
      delay(timer);
      digitalWrite(pinArray[count],LOW);
      delay(timer*2);
  }

    for (count=6;count>0;count--){
      digitalWrite(pinArray[count],HIGH);
      delay(timer);
      digitalWrite(pinArray[count-1],HIGH);
      delay(timer);
      digitalWrite(pinArray[count],LOW);
      delay(timer*2);
   }}
   
 
   

   digitalWrite (ledVerde,HIGH); }

   if(counter>2) {
     
        counter=0;}}

Go Up