Utilisation des boutons poussoirs et leds apa102

Bonsoir,
Je suis en train de faire une lampe en 3D.
Ayant des restes de ruban de Leds APA102 d'un vieux projet d'ambilight sur rpi et un arduino Uno qui trainait dans un tiroir depuis quelques années, je me suis mis en tête de faire tout moi même plutôt que de mettre une ampoule.

Actuellement, j'ai réussi un 1er code qui fonctionne avec un bouton poussoir pour allumer et éteindre les 4 leds.
Je me suis mis en tête d'ajouter un 2ème bouton poussoir pour diminuer la luminosité de 50% et c'est là que je bloque.
Lorsque j'allume avec le 1er bouton, c'est bon mais le second ne fonctionne pas du tout et quand je rappuie sur le 1er bouton, à ce moment la luminosité baisse comme souhaité et la led s'éteint (ce dernier point étant normal)

Voici mon code : (les couleurs dans le code ne correspondent pas mais j'allais finir aveugle à force :sweat_smile: )


```cpp
#include <FastLED.h>
#define NUM_LEDS 2
#define DATA_PIN 11
#define CLOCK_PIN 13

int LEDon = 1;
int switchPin = 8;
int switchPin_50 = 2;
CRGB leds[NUM_LEDS];

void setup() {
  LEDS.addLeds<APA102, DATA_PIN, CLOCK_PIN, BGR>(leds, NUM_LEDS);
  pinMode(switchPin, INPUT_PULLUP);
  pinMode(switchPin_50, INPUT_PULLUP);
  leds[0] = CRGB::Black;  // noir = éteint
  leds[1] = CRGB::Black;
  FastLED.show();
}

void loop() {
  if (digitalRead(switchPin) == HIGH) {
    if (LEDon == 0) {
      LEDon = 1;
      leds[0] = CRGB(0, 0, 255);  // blanc
      leds[1] = CRGB(70, 70, 70);
      FastLED.show();
    } else {
      LEDon = 0;
      leds[0] = CRGB::Black;
      leds[1] = CRGB::Black;
      FastLED.show();
    }
    while (digitalRead(switchPin) == HIGH)
      ;  // position attente pour nouvel appui
  }
  // Diminue la luminosité de 50%
  if (digitalRead(switchPin_50) == HIGH && (LEDon) == 1) {
    leds[0] = CRGB(70, 70, 70);  // blanc
    leds[1] = CRGB(0, 0, 255);
    FastLED.show();
    delay(50);
  }

  FastLED.show();
}

et voici un schéma du montage : (j'ai été obligé de rajouter à la main un trait jaune pour le pin CLOCK, Thinkercad n'a pas d'APA102)

Si je ne suis pas clair, je peux envoyer une vidéo du résultat.

Merci pour votre aide

Bonjour,

Quand ton bouton est enfoncé l'entrée est à LOW.

Le test devrait donc être:
if (digitalRead(switchPin) == LOW) {

Effectivement, ça fonctionne!
Merci beaucoup

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