Bonjour,
je suis un novice dans la programmation de l’Arduino. Je suis en train de travailler sur un projet pour commander des LED WS2801. L’idée de base c’est d’avoir plusieurs mémoires et les rappeler à l’aide d’un joypad. Chaque mémoire fait varier les leds selon des interactions.
J’ai choisi de travailler sur un principe de mémoires afin de pouvoir par la suite nourrir et/ou modifier mon code.
A ce jour j’ai intégré un capteur de volume, le KY038. Dans une des mémoires j’aimerais bien pouvoir arrêter un loop grâce à claquement de mains. Mais je m’aperçois que j’ai du mal pendant mon loop à avoir l’état du microphone toujours en « priorité ». C’est-à-dire que j’ai l’impression que mon loop pendant qu’il gère les leds oublie de vérifier l’état du microphone, et pourtant je rappelle la fonction de la lecture du micro partout (surement ce n’est pas la bonne méthode). Dans cette mémoire je voudrais arrêter l’intensité des leds qui passent de 0% à 100% de façon cyclique avec un battement de mains.
Dans le loop je demande à l’arduino aussi de vérifier l’état du joypad si une nouvelle mémoire est rappelée et pour choisir les couleurs.
J’ai aussi changé la vitesse du baud rate, mais le problème est toujours là.
Bref, je ne sais pas si mon post est clair, mais vu que je tourne en boucle depuis un moment, je confie dans vos précieux conseils pour avancer.
Voici la partie du code (ils manquent les void du joypad, des mémoires et des couleurs. J'espère que ce n'est pas dérangeant, car pour une lecture plus pratique je les déporte sur des "TAB"):
Merci d’avance.
Claudio
void Memory_2(){
// déclaration
int i;
int j;
int wait = 1;
MicLecture();
for (i = 0; i<= 255; i = i + pausa) { // Leds blancs Fade IN
MicLecture();
if (statoMic == false) {
pausa = 1;
MicLecture();
}
if (statoMic == true)
{
pausa = 0;
MicLecture();
}
MicLecture();
for (j = 0; j < strip.numPixels(); j++) {
MicLecture();
switch (JoyMemory) { // Etat Joypad pour choisir couleurs
case (1):
strip.setPixelColor(j, Claudio1 (i) );
MicLecture();
break;
case (2):
strip.setPixelColor(j, Claudio2 (i) );
MicLecture();
break;
case (3):
strip.setPixelColor(j, Claudio3 (i) );
MicLecture();
break;
case (4):
strip.setPixelColor(j, Claudio4 (i) );
MicLecture();
break;
case (5):
strip.setPixelColor(j, Claudio5 (i) );
MicLecture();
break;
case (6):
strip.setPixelColor(j, Claudio6 (i) );
MicLecture();
break;
case (7):
if (digitalRead(MicDig)) // S'il le dépasse
MicLecture();
strip.setPixelColor(j, Claudio7 (i) );
MicLecture();
break;
Serial.println (i);
}
strip.show(); // write all the pixels out
MicLecture();
delay(wait);
MicLecture();
ChoixMemory(); // vérifie l'état des mémoires
if (Memory != 2) return;
}
}
for (i = 255; i >= 0; i = i - pausa) { // Leds blancs Fade IN
MicLecture();
if (statoMic == false) {
pausa = 1;
MicLecture();
}
if (statoMic == true)
{
pausa = 0;
MicLecture();
}
for (j = 0; j < strip.numPixels(); j++) {
MicLecture();
switch (JoyMemory) {
case (1):
strip.setPixelColor(j, Claudio1 (i) );
break;
case (2):
strip.setPixelColor(j, Claudio2 (i) );
break;
case (3):
strip.setPixelColor(j, Claudio3 (i) );
break;
case (4):
strip.setPixelColor(j, Claudio4 (i) );
break;
case (5):
strip.setPixelColor(j, Claudio5 (i) );
break;
case (6):
strip.setPixelColor(j, Claudio6 (i) );
break;
case (7):
if (digitalRead(MicDig)) // S'il le dépasse
strip.setPixelColor(j, Claudio7 (i) );
break;
}
strip.show(); // write all the pixels out
MicLecture();
delay(wait);
MicLecture();
ChoixMemory(); // vérifie l'état des mémoires
if (Memory != 2) return;
}
}
}
void MicLecture() {
if (digitalRead(MicDig)) // S'il le dépasse // S'il le dépasse
{
statoMic =!statoMic;
Serial.print (" Lettura battito ");
Serial.println (statoMic);
delay (300);
}
}