lololololol

Dependencies:   mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

main.cpp

Committer:
Hendrikvg
Date:
2019-09-23
Revision:
15:80b3ac2b8448
Parent:
14:20f11bb58244
Child:
16:40183eeadb6d

File content as of revision 15:80b3ac2b8448:

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

// Motor 1 aan zetten en uit zetten dmv button 1 en 2 werkt.
// Snelheid aansturen nog niet.

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

InterruptIn BUT1(D1);
InterruptIn BUT2(D0);
FastPWM lichtje(D3);
AnalogIn   ain(A0);
DigitalOut direction(D6);
DigitalOut speed(D7);

// variables

volatile char command = 'r';
enum states {red, green, blue};

states CurrentState = red;
bool StateChanged = true;

double numerator;
double denominator;
double brightness;

int n=5;

float speedy;

// functions

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();
                direction = 0;
                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;
            }
            break;
        case green:
            if  (StateChanged) {
                pc.printf("Initiating turning LED green\n\r");
                StateChanged= false;
                ledr = 1;
                ledg = 0;
                ledb = 1;
                G.start();
                direction = 1;
                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;
            }
            break;
        case blue:
            if  (StateChanged) {
                pc.printf("Initiating turning LED blue\n\r");
                StateChanged= false;
                ledr = 1;
                ledg = 1;
                ledb = 0;
                B.start();
                //direction = 1;
                speed = 255;
                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;
            }
            break;
        default:
            pc.printf("Unknown or unimplemented state reached!\n\r");
    }
}

void plus()
{
    n++; // n=n+1
    if (n>10) {
        n=10;
    }
}

void min()
{
    n--;
    if (n<0) {
        n=0;
    }
}

// main

int main()
{
    pc.baud(115200);
    RE.attach(ES,3);
    BUT1.fall(plus);
    BUT2.fall(min);
    //lichtje.period_ms(20);    // Wat is hier het praktisch nu van?
    while(true) {
        CheckCommandFromTerminal();
        StateMachine();
        lichtje.write(ain.read());  // duty cycle
    }
}