Bouton poussoir dans mon programme

Bonjour, je viens de commencer la programmation sur arduino, j'ai réussi à installer un programme pour mon ruban led qui fonctionne.
J'aimerai maintenant y intégrer 1 bouton poussoir qui me démarre le programme à la première impulsion et qui me l'arrête à la deuxième, je n'y arrive pas .
si quelqu'un aurait un peu de temps pour m'aider .....

voici mon programme :

#include <FastLED.h>

#define NUM_LEDS  60
#define LED_PIN   5
#define BUTTON_PIN 2

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  FastLED.setBrightness(255);
  pinMode(LED_PIN, OUTPUT);  
  pinMode(BUTTON_PIN, INPUT);  
  Serial.begin(57600);
}

void loop() {
  if (digitalRead(BUTTON_PIN) == LOW)  {
    digitalWrite(LED_PIN, LOW);
   }                  
  else {
      digitalWrite(LED_PIN, HIGH);
   }     
  uint16_t sinBeat = beatsin16(30, 0, NUM_LEDS - 1, 0, 0);

  leds[sinBeat] = CRGB::DarkOrange;
  
  fadeToBlackBy(leds, NUM_LEDS, 10);

  EVERY_N_MILLISECONDS(50){
  Serial.println(sinBeat);
  }

   FastLED.show();
  
}

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Que as tu essayé de faire pour gérer ton bouton poussoir?

Hello
voici un code qui le fait, téléverse le et regarde ton moniteur. joues avec ton BP qui est sur D2 que j'ai passé en pullup
donc ton BP doit simplement ramener le GND sur D2.

#define BUTTON_PIN 2
byte compteur = 0;
unsigned antirebonds=300;
unsigned long chrono = millis;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  Serial.begin(57600);
}

void loop() {
  if ((digitalRead(BUTTON_PIN) == LOW) && ((millis() - chrono) > antirebonds))  {
    compteur++; if (compteur >= 3) {
      compteur = 1;
    }
    chrono = millis();
  }
  if ( compteur%2) {
    Serial.print(compteur%2);Serial.println("   leds allumées");
  }
  else {
    Serial.print(compteur%2);Serial.println("                       leds éteintes");
  }
}

OK super merci, le code fonctionne, maintenant je vais essayer de démarrer et d'éteindre mon ruban led en y intégrant mon programme.

#include <FastLED.h>
#define LED_PIN   5
#define NUM_LEDS  60
byte i;
int bouton = 2;
CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
  FastLED.setBrightness(255);  
  Serial.begin(57600);
  
  pinMode(bouton, INPUT_PULLUP);

  i=0;
}

void loop() {
  if(digitalRead(bouton) == LOW)
  {
    i=i+1;
    Serial.println(i);
    delay(1000);
  }
  if (i >= 5) {
      i = 0;
    }

}

Bonjour, j'ai réalisé 1 compteur qui incrémente jusqu'a 5 et revient à 0.
J'aimerai utiliser le resultat du compteur (de 1 à 5) pour changer la couleur de mon ruban led .

tu as codé pour 0 à 4

switch (i) {
    case 0:
      Serial.printl("la lumiere vaut zéro");
      break;
    case 1:
      Serial.println("la lumiere vaut un");
      break;
    case 2:
      Serial.println("la lumiere vaut deux");
      break;
    case 3:
      Serial.println("la lumiere vaut trois");
      break;
    case 4:
      Serial.println("la lumiere vaut quatre");
      break;
    default:
      Serial.println("valeur de i inconnue");
      break;
  }

après quelques modif pour y intégrer mes codes ca fonctionne nickel, j'arrive à changer de couleur à chaque fois que j'appuie sur mon bouton poussoir.
merci

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