#define MIDI_CHANNEL 1 #include #include #include #include #include #include #include #include #include #include #define PRINTLN(x,y) Serial.print(x); Serial.println(y); /////////// include FSM lib #include #include ////////////////////////////////////////////////////////////// // STATE MACHINE DEF //------------------------------------------------------------ // list of states enum States { BBBB, AAAA }; class LaMachine : public MachineStates { public: typedef LIST2(BBBB, AAAA) StateList; }; StateMachine* sm; LaMachine ms; ////////////////////////////////////////////////////////////// // TIMER DEF //------------------------------------------------------------ #define one_sec 1000000 // IntervalTimer is in microseconds #define timeout 10 * one_sec * 60 IntervalTimer timer; ////////////////////////////////////////////////////////////// // USUAL SUSPECTS //------------------------------------------------------------ void setup() { Serial.begin(115200); Serial.println("starts"); Music.init(); sm = new StateMachine(ms); timer.begin(transition, timeout); randomSeed(analogRead(A4)); } void loop() { // delay(2000); // Serial.print("... - "); Serial.println(sm->state); sm->tick(); } ////////////////////////////////////////////////////////////// // TRANSITIONS DEF //------------------------------------------------------------ void transition() { sm->work(); } void transition_random() { int r = random(0, 2); while(r == sm->state) r = random(0, 2); Event ev = {r}; sm->work(ev); // transition }