Fablab ado > arduino, ruban Led et 1 bouton

par Antoine

Voici l’exercice du jour,
on ajoute un bouton par rapport à la dernière fois.

Lorsque le bouton poussoir est relaché : une bande blanche blanche se déplace sur un fond bleu

lorsque le bouton est appuyé : une bande blanche se déplace sur un fond rouge

voici le code :

#include <FastLED.h>
#define LED_PIN     10
#define NUM_LEDS    144
#define BRIGHTNESS  20
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];

int ii;
int delai=10;
int sens=1;

//entrée bouton poussoir 1
int bouton1=A0;



void setup()
{
Serial.begin(9600);
delay( 3000 ); // power-up safety delay
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness(  BRIGHTNESS );
FastLED.addLeds<WS2812B,LED_PIN,RGB>(leds,NUM_LEDS);

// put your setup code here, to run once:
pinMode(bouton1,INPUT);

}

void DeplacementPoint_AR1(int taille)
{
   if (ii>=0) leds[ii] = CRGB::White;
   if((sens==1)&&(ii>=taille))
      {
      leds[ii-taille] = CRGB::Blue;
      }
   else if ((sens==-1)&&(ii<NUM_LEDS-taille))
      {
      leds[ii+taille] = CRGB::Blue;
      }    
   FastLED.show();
   delay(delai);
   ii=ii+sens;
   if (((sens==1)&&(ii==NUM_LEDS+taille))||((sens==-1)&&(ii==-taille-1))) // On inverse le sens si on arrive à NUM_LEDS dans le sens positif ou à 0 dans le sens négatif
      sens=-sens;
}

void DeplacementPoint_AR2(int taille)
{
   if (ii>=0) leds[ii] = CRGB::White;
   if((sens==1)&&(ii>=taille))
      {
      leds[ii-taille] = CRGB::Red;
      }
   else if ((sens==-1)&&(ii<NUM_LEDS-taille))
      {
      leds[ii+taille] = CRGB::Red;
      }    
   FastLED.show();
   delay(delai);
   ii=ii+sens;
   if (((sens==1)&&(ii==NUM_LEDS+taille))||((sens==-1)&&(ii==-taille-1))) // On inverse le sens si on arrive à NUM_LEDS dans le sens positif ou à 0 dans le sens négatif
      sens=-sens;
}

void loop()
{
// put your main code here, to run repeatedly:

boolean etatBouton1=digitalRead(bouton1);

 if (etatBouton1==LOW)//test si bouton levé
 {
DeplacementPoint_AR1(12);
 }
 
if (etatBouton1==HIGH)//test si bouton actionné    
{
DeplacementPoint_AR2(12);
}


}