#include <Plaquette.h>
DigitalIn button(2, INTERNAL_PULLUP);
AnalogOut musicalR(11, INVERTED); // common anode RGB led
AnalogOut musicalG(10, INVERTED);
AnalogOut musicalB(9, INVERTED);
DigitalOut beat1(8);
DigitalOut beat2(7);
DigitalOut beat3(6);
DigitalOut beat4(5);
Wave redWave(SQUARE, 2.0);
Wave greenWave(SQUARE, 2.25);
Wave blueWave (SQUARE, 2.7);
Metronome beatMetro(1.0);
Monitor monitor(9600);
int state = 0; // état actuel
const int LAST_STATE = 2; // define the last state so the program ends
int beatsLeft = 0; // nombre de battements restants dans le count-in
const int BEATS_IN_BAR = 8;
bool countingIn = false;
void begin() {
button.debounce();
beatMetro.bpm(180); // tempo du count-in (change à ton goût)
println ("State 0");
}
void step() {
/////CHECK THE BUTTON FOR NEXT COUNTDOWN/////////////////
if (state < LAST_STATE && !countingIn && button.rose()) { // on passe à l'état suivant
beatMetro.start(); // on démarre le métronome
beatsLeft = BEATS_IN_BAR; // nombre de battements (change à 8 si tu veux)
countingIn = true; // on active le mode count-in
}
/////////BEAT COUNTDOWN///////////////////
// Pendant le count-in : à chaque battement, on clignote et on compte
if (countingIn && beatMetro) {
print ("**********BEATS LEFT: ");
print (beatsLeft);
println ("**********");
beat1.toggle(); // un flash à chaque beat
beat2.toggle();
beat3.toggle();
beat4.toggle();
beatsLeft--; // il reste un beat de moins
if (beatsLeft <= 0) {
countingIn = false;
beatMetro.stop(); // arrête le métronome du count-in
state++; // add 1 to the value of state
print ("State ");
println (state);
0 >> beat1 >> beat2 >> beat3 >> beat4;// éteint les LEDs
}
}
//////////////////////////////////////
if (state == 0) {
redWave >> musicalR;
greenWave >> musicalG;
blueWave >> musicalB;
}
if (state == 1) {
0 >> musicalR;
greenWave >> musicalG;
blueWave >> musicalB;
}
if (state == 2) {
0 >> musicalR >> musicalG >> musicalB; // turn everything off
}
}