Contrôle allumage ruban LED Neopixel avec bouton poussoir

Bonjour à tous,
Je suis nouveaux dans le monde des Arduinistes.

J'ai un projet qui consiste à allumer et éteindre 60 premières LED d'une bande de 120 avec 1 bouton poussoir, et allumer et éteindre les 60 dernières avec un autre bouton poussoir.

Je ne veux pas séparer la bande en 2 car j'aimerai un 3e Bouton poussoir qui lancerai une animation sur la bande complète.

J'ai passé beaucoup de temps sur le net, mais je n'ai rien trouvé de concret.
Si une âme charitable pouvait m'aider, je lui serai fort reconnaissant. :blush:

Merci encore à tous :smiley:

Bonjour,

Je ne vois pas le problème. Ca semble très simple.
Mets ton code.

la bibliothèque qui allume les LED est simple à utiliser

Pour simplifier votre gestion des boutons, éventuellement utilisez la librairie de @bricoleau ou alors la librairie OneButton de Matthias Hertel.

le code se résumera alors à

si (appui bouton1) {
  changer l'état des 60 premières LEDs
  afficher les LEDs
} 

si (appui bouton2) {
  changer l'état des 60 dernières  LEDs
  afficher les LEDs
}

Tu peux choisir entre deux bibliothèques principales : Adafruit Neopixel et FastLED.
Le principe est similaire pour les deux : tu déclares un tableau de données qui représentent tes leds. Ainsi pour toi ce sera par exemple leds[120]. La première led, la plus proche de l'Arduino, sera numéro 0, la dernière sera numéro 119.
Pour allumer une led, disons la 42, tu mets dans la case correspondante une valeur de couleur, selon le format propre à la bibliothèque choisie.
Chaque bibliothèque propose des exemples qui te permettent de voir la syntaxe à utiliser.
Si tu veux allumer juste la première moitié, tu mets des couleurs de 0 à 59 et du noir ensuite.
Enfin, lorsque ton tableau est prêt, une commande permet de charger ces valeurs dans les leds (les vraies), c'est souvent show().

Il faut savoir brancher et alimenter le ruban de leds. Je pense que cette page (et les suivantes) sont très bien faites. Un schéma pour la connexion :

Bonjour,

J'ai réussi quelque chose...Il ne me manque plus que l'animation que je cherche encore.

#include <Adafruit_NeoPixel.h>
//inclure la bibliothèque Adafruit Neopixel
#define RUBAN 6
//Déclaré nom de la borne 6 en "PIN"
#define NUM_LEDS 12
//Déclaré le nombre de LED sur le Strip

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, RUBAN, NEO_GRB + NEO_KHZ800);

const int BP1 = 2; //Déclaré la borne 2 pour le BP1(Bouton Poussoir n°1)
const int Inter1 = 8; //Déclaré la borne 8 pour l'Inter1 (Interupteur n°1)
const int Inter2 = 9; //Déclaré la borne 9 pour l'Inter2 (Interupteur n°2)

void setup()
{
pinMode(Inter1, INPUT); //Déclaré en tant qu'entrée
pinMode(Inter2, INPUT); //Déclaré en tant qu'entrée
pinMode(BP1, INPUT); //Déclaré en tant qu'entrée
}
int etat1; //Crée une interne "etat1"
int etat2; //Crée une interne "etat2"
int etat3; //Crée une interne "etat3"

void loop()
{
strip.begin(); //Initialisation des LED

etat1 = digitalRead(Inter1); // etat1 = Inter1 (HIGH ou LOW)
if(etat1 == HIGH)
strip.fill(strip.Color(254,255,255),0,6); //Allumé le strip en couleur blanc depuis la 1ere pendant 6 LED
else
strip.fill(strip.Color(0,0,0),0,6); //Allumé le strip en couleur noir depuis la 1ere pendant 6 LED

etat2 = digitalRead(Inter2); // etat2 = Inter2 (HIGH ou LOW)
if(etat2 == HIGH)
strip.fill(strip.Color(254,255,255),6,6); //Allumé le strip en couleur blanc depuis la 6eme pedant 6 LED
else
strip.fill(strip.Color(0,0,0),6,6); //Allumé le strip en couleur noir depuis la 6eme pedant 6 LED

etat3 = digitalRead(BP1);
if(etat3 == HIGH)
strip.fill(strip.Color(254,0,255),0,12); //Allumé le strip en couleur rose depuis la 1ere pedant 12 LED
else
; // Ne rien faire

strip.show(); // lancer le visuel
}

C’est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)

Merci encore :grin:

prenez une bibliothèque pour la gestion des boutons ça vous simplifiera la vie

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