Bonjour à tous,
Je suis novice dans l'arduino de façon général. J'arrive à me débrouiller avec tous ce que je trouve ici et là, sur la toile etc... mais là je ne trouve pas un bon exemple sur lequel partir.
Je souhaiterai une aide pour un code qui me donnerai comme résultat, l'explication suivante
, l'explication est valable pour les 2 boutons mais j'explique pour 1 :.
(1 bouton - 1 strip led de 3 led uniquement en bleu)
pour 1 appui : allumé la 1ere led RGB en BLEU
pour 2 appui : allumé la seconde led RGB en BLEU
pour 3 appui : allumé la troisième led RGB en BLEU
pour 1 appui long : éteindre toutes les leds
(2nd bouton - 1 strip led de 3 leds uniquement en ROUGE)
merci d'avance pour l'aide que vous pourrez m'apporter.
oui c'est typiquement une définition de programme qui se prête bien à la programmation par machine à états et une bibliothèque de boutons va simplifier le développement
merci ça semble s'y préter en effet. cependant comme j'utilise des strip led et que je ne maitrise pas totalement le code et l'utilisation de librairies je vais pas m'en sortir.
merci quand même
bonsoir J-M-L,
J'ai essayé de faire progresser votre code ! j'y ai passé une bonne partie de l'après midi mais je craque... je voudrais rajouter une fonction avec un autre bouton et une autre bande led rgb de 80 leds.
par defaut sur bouton momentané On-On , le strip leds est allumé led full blanche,
lors de l'action et le maintien du switch , le strip leds passe en rouge, on relache ça repasse au blanc.
si vous pouvez m'aider je vous en serait reconnaissant merci
#include <FastLED.h>
#include <OneButton.h>
const int nbLeds = 3;
const int nbLeds1 = 80;
const byte bandeBleuePin = 7;
const byte bandeRougePin = 8;
const byte bandeLEDPin = 9;
const byte boutonBleuPin = 2;
const byte boutonRougePin = 3;
const byte boutonLEDPin = 4;
CRGB ledsBleues[nbLeds];
CRGB ledsRouges[nbLeds];
CRGB ledsBlanches[nbLeds1];
OneButton boutonBleu(boutonBleuPin, true);
OneButton boutonRouge(boutonRougePin, true);
OneButton boutonLED(boutonLEDPin, true);
int nbBleu = 0; // Nombre de leds bleues allumées
int nbRouge = 0; // Nombre de leds rouges allumées
int nbblanche = 80; // Nombre de leds blanches allumées
void appuiBleu() {
if (nbBleu < nbLeds) nbBleu++;
for (int i = nbBleu; i < nbLeds; i++) ledsBleues[i] = CRGB::Black;
if (nbBleu != 0)
for (int i = 0; i < nbBleu; i++) ledsBleues[i] = CRGB::Blue;
FastLED.show();
}
void appuiBleuLong() {
nbBleu = 0;
fill_solid(ledsBleues, nbLeds, CRGB::Black);
FastLED.show();
}
void appuiblancLong() {
nbblanches = 0;
fill_solid(ledsblanc, nbLeds, CRGB::255,0,0);
FastLED.show();
}
void appuiRouge() {
if (nbRouge < nbLeds) nbRouge++;
for (int i = nbRouge; i < nbLeds; i++) ledsRouges[i] = CRGB::Black;
if (nbRouge != 0)
for (int i = 0; i < nbRouge; i++) ledsRouges[i] = CRGB::Red;
FastLED.show();
}
void appuiRougeLong() {
nbRouge = 0;
fill_solid(ledsRouges, nbLeds, CRGB::Black);
FastLED.show();
}
void setup() {
FastLED.addLeds<WS2812B, bandeBleuePin, GRB>(ledsBleues, nbLeds);
FastLED.addLeds<WS2812B, bandeRougePin, GRB>(ledsRouges, nbLeds);
FastLED.addLeds<WS2812B, bandeLEDPin, GRB>(ledsblanches, nbLeds1);
boutonBleu.attachClick(appuiBleu);
boutonRouge.attachClick(appuiRouge);
boutonBleu.attachLongPressStart(appuiBleuLong);
boutonRouge.attachLongPressStart(appuiRougeLong);
boutonBlanc.attachLongPressStart(appuiblancLong);
Serial.begin(115200);
}
void loop() {
boutonBleu.tick();
boutonRouge.tick();
boutonBlanc.tick();
// ici vous pouvez faire autre chose de non bloquant
}
Bonjour,
as tu essayé d'utiliser attachLongPressStop ?
tu as fais surement une faute de frappe dans l'instruction suivante, tu n'as pas d'erreur de compilation?
fill_solid(ledsblanc, nbLeds, CRGB::255,0,0);
au lieu de fill_solid(ledsBlanches, nbLeds, CRGB::255,0,0);
Tes noms de variables et de fonctions sont du coup pas des plus approprié.
peut être qu'un truc du genre ledsStrip et appuiStripLong relacheStrip serait plus parlant ou si cela correspond à une fonction particuliére pour toi?
bonsoir, alos je suis reparti de zéro avec un bon tuto de abrège (youtube) mais quand j'appui sur le bouton j'ai pas de rouge mais un semblant de qqchose enfin il se passe un truc
voici le code`, si vous pouviez m'aider ?
#include <FastLED.h>
// How many leds in your strip?
#define NUM_LEDS 3
#define DATA_PIN 7
#define BUTTON_PIN 3
// Define the array of leds
CRGB leds[NUM_LEDS];
void setup() {
Serial.begin(9600);
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // GRB ordering is assumed
pinMode(3, INPUT_PULLUP);
FastLED.setBrightness(40);
}
void loop() {
fill_solid(leds, NUM_LEDS, CRGB::White);
FastLED.show();
int valeurBouton = digitalRead(BUTTON_PIN);
if (valeurBouton == LOW){
fill_solid(leds, NUM_LEDS, CRGB::Red); {
FastLED.show();
}
}
}
qu'est-ce qui n'allait pas avec le code du post 5 ???
pourquoi repartir de 0 avec des boutons qui vont rebondir, on ne sait pas comment vous les avez câblés, etc...
oui j'ai tenté mais comme je débute je me suis dis "essaie de comprendre" et part de zéro sur au moins la prochaine partie pensant qu'ensuite je pourrai l'ajouter à votre programme.
C’est bien d’explorer mais le code co dessus utilise la bibliothèque OneButton par exemple pour les boutons. Vous ne faites pas les digitalRead vous même