lololololol

Dependencies:   mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

main.cpp

Committer:
Hendrikvg
Date:
2019-09-13
Revision:
6:61618bf71a08
Parent:
5:dc3a076bbb10
Child:
7:d307e31f7391

File content as of revision 6:61618bf71a08:

#include "mbed.h"
#include "MODSERIAL.h"

MODSERIAL pc(USBTX, USBRX);
DigitalOut ledr(LED_RED);
DigitalOut ledg(LED_GREEN);
DigitalOut ledb(LED_BLUE);
Ticker RE;
Timer R;
Timer G;
Timer B;

volatile char Command;
enum states {red, green, blue};

states CurrentState = red;
bool StateChanged = true;

void ES() 
{
    Command = 'r';
}    

void CheckCommandFromTerminal(void)
{
    Command = pc.getcNb();
}

void StateMachine(void)
{
    switch(CurrentState) {
        case red:
            if  (StateChanged) { 
                pc.printf("Initiating turning LED red\n\r");
                StateChanged= false;
                ledr = 0;
                ledg = 1;
                ledb = 1;
                R.start();
                pc.printf("LED is now red!\n\r");
            }
            if (Command == 'g') {
                R.stop();
                pc.printf("The LED has been red for %f seconds!\n\r", R.read());
                CurrentState= green;
                StateChanged= true;
            }
            if (Command == 'b') {
                R.stop();
                pc.printf("The LED has been red for %f seconds!\n\r", R.read());
                CurrentState= blue;
                StateChanged= true;
            }
            else {}
            break;
        case green:
            if  (StateChanged) { 
                pc.printf("Initiating turning LED green\n\r");
                StateChanged= false;
                ledr = 1;
                ledg = 0;
                ledb = 1;
                G.start();
                pc.printf("LED is now green!\n\r");
            }
            if (Command == 'r') {
                G.stop();
                pc.printf("The LED has been green for %f seconds!\n\r", G.read());
                CurrentState= red;
                StateChanged= true;
            }
            if (Command == 'b') {
                G.stop();
                pc.printf("The LED has been green for %f seconds!\n\r", G.read());
                CurrentState= blue;
                StateChanged= true;
            }
            else {}
            break;
        case blue:
            if  (StateChanged) { 
                pc.printf("Initiating turning LED blue\n\r");
                StateChanged= false;
                ledr = 1;
                ledg = 1;
                ledb = 0;
                B.start();
                pc.printf("LED is now blue!\n\r");
            }
            if (Command == 'r') {
                B.stop();
                pc.printf("The LED has been blue for %f seconds!\n\r", B.read());
                CurrentState= red;
                StateChanged= true;
            }
            if (Command == 'g') {
                B.stop();
                pc.printf("The LED has been blue for %f seconds!\n\r", B.read());
                CurrentState= green;
                StateChanged= true;
            }
            else {}
            break;
        default:
            pc.printf("Unknown or unimplemented state reached!\n");
    }  
}
int main()
{
    pc.baud(115200);
    RE.attach(ES,3);
    while(true) {
        CheckCommandFromTerminal();
        StateMachine();
    }
}