Salut à tous,
Voila mon projet est un petit séquenceur de 6 leds et 7 boutons
Six des boutons correspondent respectivement au Led (CàD que si j'appuie sur le bouton la Led s'allume et s’éteindra que si je reappuie sur le bouton).
Lorsque je lance le programme le "sequenceur" demarre (les leds font un chenillard de gauche a droite)
Mon souci est que quand j'augmente les delay de ma fin de loop ( ce qui correspond au tempo) mes boutons ne reponde plsu aussi bien que quand les delay est plus petit du fait que les infos soit traites entre chaque allumage de led du chenillard
Est il possible de faire tourner deux boucles simultanément mais pas a la même vitesse pour que je puisse augmenter le delay de fin de loop sans perdre en precision sur les botons??
Voici le programme
// Mini Midi Drum sequencer //
int LedPin [6] = {3, 4, 5, 6, 7, 8}; //Pin ou sont connecter les leds
int BoutonPin [7] = {9, 10, 11, 12, 13, 14, 15}; //Pin ou sont connecter les boutons
int BoutonState[7] = {0}; //etat de chaques boutons 0=FAUX 1=VRAI
int BoutonPressed[7] = {0};
int BoutonBounce[7] = {0};
int Step = -1; // compteur de la sequence
boolean LedState[6] = {0}; // etat des 6 leds 0=eteint 1=allumer
int count = {0}; // variable qui compte le nombre de fois qu'on a appuyer sur le bouton
int i =0; //compteur de synchro
void setup(){
for (int i =0; i <6; i++){
pinMode(LedPin[i], OUTPUT); //initialise les sortis
digitalWrite(LedPin[i], LOW);
}
for (int i =0; i <7; i++){
pinMode(BoutonPin[i], INPUT); // intialise les entrees
}
}
void loop(){
Step++;
if (Step > 5){
Step = 0;
}
for ( i =0; i <6; i++){
BoutonPressed[i] = digitalRead(BoutonPin[i]);
delay(1);
BoutonBounce[i] = digitalRead(BoutonPin[i]);
if (BoutonBounce[i] = BoutonPressed[i]){
if (BoutonPressed[i] != BoutonState[i]){
if (BoutonPressed[i]){
count++;
if (count==1){
LedState[i] =1;
}
if (count >1){
count = 0;
LedState[i]=0;
}
}
}
}
BoutonState[i] = BoutonPressed[i];
}
SetLeds((Step+3), (i+3));
delay (30);
}
void SetLeds (int StepLed, int LedBouton)
{
for (int j =0; j <6; j++){
digitalWrite(LedPin[j], LOW);
}
for (int x =0; x <6; x++){
LedBouton = LedPin[x];
if (LedState[x] == true){
digitalWrite(LedBouton, HIGH);
}
if (LedState[x] == false){
digitalWrite(LedBouton, LOW);
}
}
digitalWrite(StepLed, HIGH);
}