sorry to be late, here is my code:
// midi data
byte midi_start = 0xfa;
byte midi_stop = 0xfc;
byte midi_clock = 0xf8;
byte midi_continue = 0xfb;
int play_flag = 0;
byte data;
//compteur de clicks midi (24 click = 1 tps)
int counter = 0;
int stbout = 12; //bouton headrush
int stbout2 = 10; //bouton headrush2
int vitbout = 6; //bouton choix vitesse
int vitbout2 = 7; //bouton choix vitesse
int rstbout = 8; //bouton reset debut de mesure
int engagebout = 9; //deconnecte ou connecte a la HR
int maxi; //variable pour temps maxi d'une mesure
int maxi2; //variable pour temps maxi d'une mesure
// variables pour le switch de choix de durée de la mesure (marche avec maxi)
long temps;
long debounce = 200;
long temps2;
long debounce2 = 200;
int previous = HIGH;
int previous2 = HIGH;
int midi_time = 0;
int midi_fois = 0;
// bouton de reset du debut de mesure
long rsttemps;
long rstdebounce = 200;
int rstprevious = HIGH;
void setup() {
Serial.begin(31250);
pinMode (6, INPUT);
digitalWrite (6,HIGH);
pinMode (7, INPUT);
digitalWrite (7,HIGH);
pinMode (8, INPUT);
digitalWrite (8,HIGH);
pinMode (9, INPUT);
digitalWrite (9,HIGH);
}
void loop() {
stbout = digitalRead (12); //donne l'état du switch de la HR
stbout2 = digitalRead (10); //donne l'état du switch de la HR
vitesse_bouton(); //reglage du decoupage des temps
vitesse_bouton2(); //reglage du decoupage des temps
reset_bout(); //reset du premier blip
engage(); //syncro on ou off
if(Serial.available() > 0) {
data = Serial.read();
if(play_flag == 0){
digitalWrite (13,stbout); // pour enclencher le transistor avant toute utilisation que la head rush marche meme dans les autres modes
digitalWrite (11,stbout2);
}
if(data == midi_start) {
play_flag = 1;
digitalWrite (13,stbout);
digitalWrite (11,stbout2);
}
else if(data == midi_continue) {
play_flag = 1;
}
else if(data == midi_stop) {
play_flag = 0;
counter = 0;
digitalWrite (13,stbout);
digitalWrite (11,stbout2);
}
else if((data == midi_clock) && (play_flag == 1)) {
Sync();
}
}
}
void Sync() {
if(counter < maxi) {
counter++;
digitalWrite(13, stbout);
digitalWrite (11,stbout2);
digitalWrite(A3, LOW);
} else {
counter = 0;
digitalWrite(13, !stbout);
digitalWrite (11,!stbout2);
digitalWrite(A3, HIGH);
}
}
// a modifier selon convenance
void vitesse_bouton(){
vitbout = digitalRead(6);
if (vitbout == HIGH && previous == LOW && millis() - temps > debounce) {
midi_time += 1;
temps = millis();
}
if(midi_time == 0){
maxi = 23;
}
if(midi_time == 1){
maxi = 47;
digitalWrite (2, HIGH);
}
if(midi_time == 2){
maxi = 71;
digitalWrite (3,HIGH);
}
if(midi_time == 3){
maxi = 95;
digitalWrite (4,HIGH);
}
if(midi_time == 4){
midi_time = 0;
digitalWrite (2,LOW);
digitalWrite (3,LOW);
digitalWrite (4,LOW);
}
previous = vitbout;
}
void vitesse_bouton2(){
vitbout2 = digitalRead(7);
if (vitbout2 == HIGH && previous2 == LOW && millis() - temps2 > debounce2) {
midi_fois += 1;
temps2 = millis();
}
if(midi_fois == 0){
maxi = maxi*1;
}
if(midi_fois == 1){
maxi = maxi*2;
digitalWrite (A0, HIGH);
}
if(midi_fois == 2){
maxi = maxi*3;
digitalWrite (A1,HIGH);
}
if(midi_fois == 3){
maxi = maxi*4;
digitalWrite (A2,HIGH);
}
if(midi_fois == 4){
midi_fois = 0;
digitalWrite (A0,LOW);
digitalWrite (A1,LOW);
digitalWrite (A2,LOW);
}
previous2 = vitbout2;
}
void reset_bout(){
rstbout = digitalRead(8);
if (rstbout == HIGH && rstprevious == LOW && millis() - rsttemps > rstdebounce) {
counter = 0;
rsttemps = millis();
}
rstprevious = rstbout;
}
void engage(){
engagebout = digitalRead(9);
if (engagebout == HIGH){
digitalWrite (13, stbout);
}
}
I would like to be able to control the time of the blinking led when counter = 0
thanks a lot