Compteur avec bouton poussoir

bonjour, je fait se poste car je suis bloqué.
je cherche juste à ajouter 1 a une variable et une fois cette variable à 4 la remettre a 0
(se bout de code est pour pouvoir faire changer la couleur d'un ruban de led)

voici le bout de code en question :

//changement couleur avec bouton poussoir (ne marche pas )
if (digitalRead(6) == HIGH){ //pin du bouton poussoir 6
  couleur = couleur + 1;
  Serial.println("+1");
  delay(500);
}
if (couleur >= 4){
  couleur = 0;
  Serial.println("0");
  delay(500);
}

Bonjour,
Quel est le problème?

Si ça ne marche pas, ça peut venir de la façon de déclarer le bouton poussoir (instruction pinMode) ou de la connexion. Il faut en dire un peu plus...

alors voici mon code en entier

#include <Adafruit_NeoPixel.h>

//nom de chaque broche 
#define LED_PIN 3
#define N_LED 60
#define CAPTEUR A0 
#define BOUTON 6

//configuration des leds
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LED, LED_PIN, NEO_RGB + NEO_KHZ400);


//variables 
 int RC = 0;  //VERT
 int GC = 0;  //ROUGE
 int BC = 0;  //BLEU
 int valeur = 0; //boucle de variation des led 
 int val = 0;  //boucle de variation des led
 int valcouleur = 0;  //choix de la couleur 
 const int lumi = 9; //luminosité de la bande led 
 int couleur = 0; //pour définir la couluer (voir boucle des couleur)

  
void setup()
{
  strip.begin();
  Serial.begin(9600);
  pinMode(A0, INPUT);
  pinMode(3, OUTPUT);
  pinMode(6, INPUT);
}

void loop()
{
  valeur = analogRead(CAPTEUR);
  setcouleur();
  strip.setBrightness(lumi);
  //Serial.println(CAPTEUR);
  delay(10);
  
//changement couleur avec bouton poussoir (ne marche pas )
if (digitalRead(6) == HIGH){
  couleur = couleur + 1;
  Serial.println("+1");
  delay(500);
}
if (couleur >= 4){
  couleur = 0;
  Serial.println("0");
  delay(500);
}


 //variation des led en fonction du bruit ambiant
 if (valeur > 1001){
  strip.clear();
  strip.fill(strip.Color(0, 255, 0), 0, 60);
  strip.setBrightness(lumi);
  strip.show();
 }
  else if (valeur < 1000 && valeur >= 51){
  strip.clear();
  strip.setBrightness(lumi);
  val = valeur/51;
  strip.fill(strip.Color(RC, GC, BC), 0, val+1);
  for(int i = 20; i < 20+val; i++){
    strip.setPixelColor(i, strip.Color(RC, GC, BC));
  }
  for(int i = 40; i < 40+val; i++){
    strip.setPixelColor(i, strip.Color(RC, GC, BC));
  }
  strip.show();
     }
  else if (valeur == 0){
  strip.clear();
  strip.setPixelColor(0, strip.Color(RC, GC, BC));
  strip.setPixelColor(20, strip.Color(RC, GC, BC));
  strip.setPixelColor(40, strip.Color(RC, GC, BC));
  strip.show();
  } 
  
  else{
    strip.show();
  }
} 

void setcouleur(){ //boucle des couleurs
    /*RC = 0; //random(100, 150); //VERT //0;
    GC = 70; //random(0, 100);   //ROUGE //70;
    BC = 255; //random(150, 255);  //bLEU  //255; */
    if (couleur == 0){//bleu cyan
      valcouleur = analogRead(CAPTEUR);
      valcouleur = map(valcouleur, 0, 1023, 0, 255); 
      RC = valcouleur; 
      GC = 0; 
      BC = valcouleur;
    }
    else if (couleur == 1) { //rose/violet
      valcouleur = analogRead(CAPTEUR);
      valcouleur = map(valcouleur, 0, 1023, 0, 255); 
      RC = 0; 
      GC = 70; 
      BC = valcouleur;
      strip.show();
    }
    else if (couleur == 2) { //rouge
      valcouleur = analogRead(CAPTEUR);
      valcouleur = map(valcouleur, 0, 1023, 0, 255); 
      RC = 0; 
      GC = valcouleur; 
      BC = 0;
      strip.show();
    }
    else if (couleur == 3) { //orange
      valcouleur = analogRead(CAPTEUR);
      valcouleur = map(valcouleur, 0, 1023, 0, 150); 
      RC = valcouleur; 
      GC = 255; 
      BC = 0;
      strip.show();
    }
    else if (couleur == 4) { //blanc
      valcouleur = analogRead(CAPTEUR);
      valcouleur = map(valcouleur, 0, 1023, 0, 255); 
      RC = valcouleur; 
      GC = valcouleur; 
      BC = valcouleur;
      strip.show();
    }
  }

Et qu'est-ce qui ne marche pas ?

Je te conseille ce site pour bien mettre en œuvre un bouton poussoir :

Tu testes un appui sur le bouton avec une valeur HIGH, c'est donc qu'il est connecté en PULL-DOWN :

As-tu bien connecté comme ceci ?

alors nn je n'est qu'une résistance de 10 Kohm connecté

merci pour le site

l'Arduino a une pull-up interne qui simplifie le schéma. Lis le site que je t'ai conseillé. Si tu déclaré ton bouton en INPUT_PULLUP il renvoie LOW lorsqu'il est enfoncé

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.