Fablab ado > arduino, ruban Led et 1 bouton
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);
}
}
Partager cette page