Bonjour à tous,
J'ai créé un module pour pouvoir allumer une bande de LEDs lorsque je joue de la basse.
Pour faire simple : quand je joue une note, la bande s'allume, quand je ne joue rien, elle s'éteint.
Je souhaite que l'on voie les notes une par une, et donc que lorsqu'une note est courte, que la bande ait le temps de s'éteindre pour se rallumer à la note suivante.
Pour faire tout cela, je me suis débrouillé, tout fonctionne sauf une seule chose :
Lorsque je joue une note longue, la bande s'allume un peu plus longtemps, mais clignote aléatoirement...
Pour prendre le son, j'ai modifié un "sound detector", normalement fourni avec un micro, que j'ai remplacé par une prise jack pour brancher la basse. Ce sound detector est branché à l'arduino Uno, et la bande de LEDs ws2812 aussi.
Voici le code que j'ai fait :
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
int soundSensor = 2;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(300, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
pinMode(soundSensor, INPUT);
Serial.begin(9600);
for (int i=0; i<=299; i++)
strip.setPixelColor(i, 223, 223, 223);
}
void loop() {
int statusSensor = digitalRead (soundSensor);
if (statusSensor == 1)
{
strip.setBrightness(230);
delay(100);
strip.setBrightness(200);
delay(10);
strip.setBrightness(170);
delay(10);
strip.show();
delay(100);
}
else
{
strip.setBrightness(10);
strip.show();
}
Serial.println(digitalRead (soundSensor));
}
La vue console me permet de voir que le "Sound Sensor" a 2 positions : 1 ou 0. Soit il entend du son, soit pas du tout.
Mais parfois, ça ne marche pas à 100% :
Pour les petites notes (qui ne posent pas de problème), la console affiche par exemple :
0
0
0
0
1 ---> La note est jouée, la lumière s'allume
1
0 ---> La note s'arrête, la lumière s'éteint
0
En revanche, et c'est là où ça se gâte, pour une note longue, cela m'affiche :
0
0
0
1 ----> début de la note longue
1
1
1
1
1
1
1
0 ----> Petit bug dans la matrice de mon sound sensor, la lumière s'éteint subrepticement
1 ----> La lumière se rallume car la note n'est toujours pas finie
1
1
0 ----> Re-petit bug comme avant
1 ----> La lumière se rallume car la note n'est toujours pas finie
1
1
1
0 ----> La lumière s'éteint car la note est VRAIMENT finie (pfiou !)
0
0
0
Déjà, désolé pour ce gros post, mais je souhaite être le plus clair possible
Enfin, quelqu'un aurait-il une idée pour "lisser" les captations du sound sensor ? Sachant que j'ai déjà joué sur la sensibilité du bouzin, je suis au max, rien à faire de ce côté là.
Toute idée, ou début d'idée, me seront d'une très grande aide !
Merci par avance pour votre temps et votre aide précieuse, et belle journée / soirée !
b