Conservation de variable

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous! Je suis débutant sur arduino et je souhaitais créer un programme dont le principe est le suivant : Je possède une LED tricolore et je souhaite changer sa couleur en appuyant sur un bouton poussoir. Au début la LED est éteinte, au premier appui la LED passe au bleu, au second le bleu s'éteint et le vert s'allume, au troisième le vert s'éteint et le rouge s'allume, ensuite au quatrième appui toutes les couleurs s'allument, et enfin, au cinquième, la LED s'éteint à nouveau. Voici ce que j'ai déjà écrit :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
void setup() {
Serial.begin(9600);
const int greenLEDPin = 9;
const int blueLEDPin = 11;
const int redLEDPin = 10;
pinMode(redLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
pinMode(2,INPUT);
}

void loop() {
int switchState = 0;
const int greenLEDPin = 9;
const int blueLEDPin = 11;
const int redLEDPin = 10;
int blueValue = 0;
int greenValue = 0;
int redValue = 0;
int compteur = 0;
switchState = digitalRead(2);
if (switchState==HIGH){
  compteur++;
  }
if (compteur>=5){
  compteur=0;
  }
if (compteur==0){
   blueValue = 0;
   greenValue = 0;
   redValue = 0;
      }else if (compteur==1){
       blueValue = 200;
       greenValue = 0;
       redValue = 0;
          }else if (compteur==2){
           blueValue = 0;
           greenValue = 200;
           redValue = 0;
               }else if (compteur==3){
               blueValue = 0;
               greenValue = 0;
               redValue = 200;
                 }else if (compteur==4){
                 blueValue = 200;
                 greenValue = 200;
                 redValue = 200;
                 }
analogWrite(blueLEDPin, blueValue);
analogWrite(greenLEDPin, greenValue);
analogWrite(redLEDPin, redValue);
Serial.print(switchState );
Serial.println(compteur);
}

Le problème est le suivant; lorsque j’appuie sur le bouton la LED devient bleue mais s'éteint dès que je relâche le bouton… Et si j'appuie de nouveau la LED passe au bleu etc… Je pense que le problème vient du fait que la boucle réinitialise la variable "compteur" à chaque boucle et donc la variable ne peut monter que jusqu'à 1. Je cherche donc un moyen de "sauvegarder" la variable le temps de la boucle ou de ne pas réinitialiser la variable… Merci beaucoup d'avance pour votre aide !!! :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte