Le bouton poussoir est relié au GND (le moins) via une résistance pour éviter que le fil ne capte un signal et pilote le programme malgré nous.
//la variable "pinPot" indique la broche (A0)reliée au potentiomètre
#define pinPot AO //ATTENTION, Après #define, on ne met pas de point-virgule
int valPot=0; //variable pour récupérer la valeur du potentiomètre initialisée à 0.
int LED[5] = {3, 4, 5, 6, 7}; //les diodes sont alimentées par les broche 3 à 7
// On écrit l'ordre d'allumage des diode dans un tableau (array) de valeurs booléennes
boolean sequence[16][5] ={1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
0,0,0,0,1,
0,0,0,1,0,
0,0,1,0,0,
0,1,0,0,0,
0,0,0,0,0,
1,1,1,1,1,
1,0,0,0,1,
0,1,0,1,0,
0,0,1,0,0,
0,1,0,1,0,
1,0,0,0,1};
int choixSequence; // choix de l'ordre d'allumage des diodes
int debutseq; // le début de la séquence correspond à un numéro
int finseq; // la fin de la séquence correspond à un numéro
int pinBouton=1; // Variable
boolean impulsion;
void setup () {
for (int ; i=0;i<5;i++)
{ pinMode (LED[i],OUTPUT );
digitalWrite (LED[i],LOW );
}
pinMode (2, INPUT_PULLUP );
debutseq=0;
finseq=4;
}
void loop () {
valPot=analogRead (pinPot); //lit la tension, la convertit en valeur numérique et la stocke dans valeurPot
for (int ; i=debutseq;i<=finseq;i++) // boucle de séquence d'affichage
{for (int p=0;p<5;p++) // boucle pour chaque pin
{boolean etat=sequence[i][p]; // on va chercher l'état pour le pin
impulsion = digitalRead(pinBouton); // on lit la valeur du poussoir
digitalWrite (LED[p],etat); // on met le pin concerné à l'état
}
if (!impulsion) //test si bouton appuyé
{choixSequence++;}
if (choixSequence == 6){choixSequence = 1;}
delay (valPot); //petite pause d'affichage
}
switch (choixSequence){
case 1:debutseq=0;finseq=7;
break ;
case 2:debutseq=8;finseq=9;
break ;
case 3:debutseq=10;finseq=12;
break ;
case 4:debutseq=12;finseq=14;
break ;
case 5:debutseq=0;finseq=4;
break ;
}
}