Bon j'ai pu avancer un peu dans le projet, seulement je rencontre quelques soucis.
Je m’explique:
J'ai 3 boutons et un ring de 8 NeoPixels, actuellement j'utilise les 3 bouton pour différent mode,
bouton 1 mode 1: ont a un jeu de 8 couleurs différente qui défile, et ont reste allumé couleur Magenta.
bouton 2 mode 2: ont allume les NeoPixels en rouge.
bouton 3 mode 3: on eteint.
1er soucis que je rencontre, si j'appui sur le bouton 1 mes 8 couleurs défilent mais tant quelle ont pas toute défiler je peux pas passer au mode 2 ou même les éteindre, donc tant qu'on arrive pas à la fin c'est a dire qu'ont ces arrêter sur Magenta bin je peux rien faire,
Je sais pas si c'est très claire voici le code:
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define nbLED 8
#ifdef __AVR__
#include<avr/power.h>
#endif
Adafruit_NeoPixel strip = Adafruit_NeoPixel(nbLED, PIN, NEO_GRB + NEO_KHZ800);
//Déclaration des Variables
int bouton1 = 2;
int bouton2 = 3;
int bouton3 = 4;
const int APPUI=0;
const int PAS_APPUI = 1;
//Initialisation du port série et des entrées sorties
void setup()
{
pinMode(bouton1, INPUT);
digitalWrite(bouton1, HIGH);
pinMode(bouton2, INPUT);
digitalWrite(bouton2, HIGH);
pinMode(bouton3, INPUT);
digitalWrite(bouton3, HIGH);
strip.setBrightness(100);
strip.begin();
strip.show(); // Initialize all pixels to 'off'
Serial.begin(9600);
}
//programme principal
void loop()
{
//lecture de l'état du bouton et stockage dans etatBouton
boolean etatBouton1 = digitalRead(bouton1);
boolean etatBouton2 = digitalRead(bouton2);
boolean etatBouton3 = digitalRead(bouton3);
//test des conditions
if(etatBouton1==APPUI){
colorWipe(strip.Color(250, 0, 0), 100); //rouge
colorWipe(strip.Color(0, 250, 0), 100); //vert
colorWipe(strip.Color(0, 0, 250), 100); //bleu
colorWipe(strip.Color(0, 250, 250), 100); ///cyan
colorWipe(strip.Color(250, 250, 0), 100); // jaune
colorWipe(strip.Color(250, 0, 250), 100); //magenta
strip.show();
delay(10);
}
if(etatBouton2==APPUI){
colorWipe;
colorWipe(strip.Color(250, 0, 0), 100); //rouge
}
if(etatBouton3==APPUI){
colorWipe(strip.Color(0, 0, 0), 0); //Eteint
strip.show();
delay(10);
}
etatBouton1 = PAS_APPUI;
etatBouton2 = PAS_APPUI;
return;
}
//FONCTION BOUTON 1
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}