stati e neopixel ws2812

Ragazzi sto cercando di controllare tramite un singolo pulsante (pull up/down) 3 pezzi di strip neopixel collegate in pin differenti in modo tale da cambiarne le modalità e i giochi di colore, sfortunatamente non riesco a capire come mai non funzioni. grazie in anticipo per la risposta :o :frowning:

// Primo tocco: led lampeggia ogni mezzo secondo
// Secondo tocco: led lampeggia ogni secondo
// Terzo tocco: led lampeggia ogni secondo e mezzo
// Quarto tocco: led si spegne
//...................................................
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define LED_PIN   5
#define LED_COUNT 3
// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
//....................................................
const int  BUTTON = 52;    // pin di input a cui è collegato il pulsante
const int LED_PIN = 5;       // LED collegato al pin digitale 13

// Variabili globali (tutti interi)
int statoButton     = 0;      // stato del pulsante (inizialmente non premuto)
int lastStatoButton = 0;      // ultimo stato del pulsante (per ora non premuto)
int countButton     = 0;      // Conteggio del bottone

// Avvio dell'applicazione
void setup()
{
 pinMode(LED_PIN, OUTPUT);       // imposta il pin digitale come output
 pinMode(BUTTON, INPUT);     // imposta il pin digitale come input
//..........................................
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
 clock_prescale_set(clock_div_1);
#endif
 // END of Trinket-specific code.

 strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
 strip.show();            // Turn OFF all pixels ASAP
 strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

//......................................

}

// Avvio del loop
void loop()
{

 // Verifico se l'utente ha premuto il bottone
 if(digitalRead(BUTTON))
 {
   // Aspetto 15ms per far alzare il dito all'utente
   delay(15);
   // Cambio l'ultimo stato del bottone
   if(lastStatoButton==0) lastStatoButton=1;
   else lastStatoButton=0;
   // Aumento il count del bottone
   if(countButton<=3) countButton=countButton+1;
   else countButton=0;
 }

 // In base allo stato del bottone scelgo l'azione del led
 switch (countButton)
 {
   // Led lampeggia ogni mezzo secondo
 case 1:
 //....................................
 
  // Fill along the length of the strip in various colors...
 colorWipe(strip.Color(255,   0,   0), 50); // Red
 colorWipe(strip.Color(  0, 255,   0), 50); // Green
 colorWipe(strip.Color(  0,   0, 255), 50); // Blue

 // Do a theater marquee effect in various colors...
 theaterChase(strip.Color(127, 127, 127), 50); // White, half brightness
 theaterChase(strip.Color(127,   0,   0), 50); // Red, half brightness
 theaterChase(strip.Color(  0,   0, 127), 50); // Blue, half brightness

 rainbow(10);             // Flowing rainbow cycle along the whole strip
 theaterChaseRainbow(50); // Rainbow-enhanced theaterChase variant
 //....................................
   break;

   // Led lampeggia ogni secondo
 case 2:
   digitalWrite(LED_PIN, HIGH);  // accende il LED
   delay(1000);              // aspetta un secondo
   digitalWrite(LED_PIN, LOW);   // spegne il LED
   delay(1000);              // aspettaun secondo
   break;

   // led lampeggia ogni secondo e mezzo
 case 3:
 //.............................................
   void colorWipe(uint32_t color, int wait) {
 for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
   strip.setPixelColor(i, color);         //  Set pixel's color (in RAM)
   strip.show();                          //  Update strip to match
   delay(wait);                           //  Pause for a moment
 }
}//..........................................
   break;

   // Led si spegne
 case 0:
   delay(15);
   digitalWrite(LED_PIN, LOW);
   delay(5000);              // aspetta un secondo
   break;
 }
}

>marcoresind: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink: