bonjour, j'ai un soucis avec mon code. Déja mon projet est de faire un ruban de led (coupé en 3 partie) qui réagie a de la musique (ou autre son ambiant) mais mon problème est que vue que je dois allumer et éteindre des led rapidement ça provoque un clignotement qui est pas du tous agréable.
Si quelqu'un à la solution.
voici mon code:
#include <FastLED.h>
#include <Adafruit_NeoPixel.h>
//nom de chaque broche
#define LED_PIN 3
#define N_LED 60
#define CAPTEUR A0
#define BOUTON 2
//configuration des leds
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LED, LED_PIN, NEO_RGB + NEO_KHZ400);
//variables
int RC = 0; //VERT
int GC = 0; //ROUGE
int BC = 0; //BLEU
int valeur = 0; //boucle de variation des led
int val = 0; //boucle de variation des led
int valcouleur = 0; //choix de la couleur
const int lumi = 9; //luminosité de la bande led
int couleur = 5; //pour définir la couluer (voir boucle des couleur)
int v = 0;
void setup()
{
strip.begin();
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(3, OUTPUT);
pinMode(6, INPUT);
}
void loop()
{
//valeur = analogRead(A1);
int MICRO = analogRead(A1);
setcouleur();
strip.setBrightness(lumi);
Serial.println(valeur);
valeur = map(MICRO, 210, 450, -90, 1001);
delay(5);
//changement couleur avec bouton poussoir (ne marche pas )
if (digitalRead(6) == HIGH) {
couleur = (couleur + 1) % 4;
Serial.println("+1");
delay(500);
}
//variation des led en fonction du bruit ambiant
if (valeur > 1001){
strip.clear();
strip.fill(strip.Color(0, 255, 0), 0, 60);
strip.setBrightness(lumi);
strip.show();
}
else if (valeur < 1000 && valeur >= 51){
strip.clear();
strip.setBrightness(lumi);
val = valeur/51;
strip.fill(strip.Color(RC, GC, BC), 0, val+1);
for(int i = 20; i < 20+val; i++){
strip.setPixelColor(i, strip.Color(RC, GC, BC));
}
for(int i = 40; i < 40+val; i++){
strip.setPixelColor(i, strip.Color(RC, GC, BC));
for (v = 0; v == lumi; v++){
}
}
strip.show();
}
else if (valeur == 0){
strip.clear();
/*strip.setPixelColor(0, strip.Color(RC, GC, BC));
strip.setPixelColor(20, strip.Color(RC, GC, BC));
strip.setPixelColor(40, strip.Color(RC, GC, BC));*/
strip.show();
}
else{
//strip.clear();
strip.show();
}
}
void setcouleur(){ //boucle des couleurs
/*RC = 0; //random(100, 150); //VERT //0;
GC = 70; //random(0, 100); //ROUGE //70;
BC = 255; //random(150, 255); //bLEU //255; */
if (couleur == 0){//bleu cyan
valcouleur = analogRead(CAPTEUR);
valcouleur = map(valcouleur, 0, 1023, 0, 255);
RC = valcouleur;
GC = 0;
BC = valcouleur;
}
else if (couleur == 1) { //rose/violet
valcouleur = analogRead(CAPTEUR);
valcouleur = map(valcouleur, 0, 1023, 0, 255);
RC = 0;
GC = 70;
BC = valcouleur;
strip.show();
}
else if (couleur == 2) { //rouge
valcouleur = analogRead(CAPTEUR);
valcouleur = map(valcouleur, 0, 1023, 0, 255);
RC = 0;
GC = valcouleur;
BC = 0;
strip.show();
}
else if (couleur == 3) { //orange/rouge
valcouleur = analogRead(CAPTEUR);
valcouleur = map(valcouleur, 0, 1023, 150, 0);
RC = valcouleur;
GC = 255;
BC = 0;
strip.show();
}
else if (couleur == 4) { //blanc
valcouleur = analogRead(CAPTEUR);
valcouleur = map(valcouleur, 0, 1023, 0, 255);
RC = valcouleur;
GC = valcouleur;
BC = valcouleur;
strip.show();
}
else if (couleur == 5) { //vert
valcouleur = analogRead(CAPTEUR);
valcouleur = map(valcouleur, 0, 1023, 170, 255);
RC = valcouleur;
GC = 0;
BC = 0;
strip.show();
}
}