MrHeisenberg AUG|Wings / Mbed 2 deprecated StateMachine

Dependencies:   mbed

main.cpp

Committer:
philipp19961
Date:
2014-10-22
Revision:
1:c5769cd78933
Parent:
0:05d73097e319
Child:
2:d4fab8f3f21f

File content as of revision 1:c5769cd78933:

#include "mbed.h"
#include "DebouncedIn.h"

Ticker tick;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

DebouncedIn button(p12);

// Zum Schalten: 1 Taster PINA PA0
// 1. Funktion
// Start-Taste 1x betätigen: 
// Dauerlicht aller 4 LEDs
// 2. Funktion
// Start-Taste ein 2.mal betätigen:
// LEDs blinken im ca. 400 Millisekunden-Takt; 200 msec Ein, 200 msec Aus
// Ausschalten des Rücklichts
// Die Start-Taste ein 3.mal betätigen:
// Alle LEDs aus.


//volatile uint8_t count;
volatile unsigned int count;
volatile unsigned int event=0;
volatile int led=0;

int ledsEin();
int msec300TimerOn();
int ledsTogglen();
int startTimer();


int msec300TimerOn()       
{
    startTimer();
    return(1);
}

int stopTimer()        
{ 
    led1 = 0;
    led2 = 0;
    led3 = 0;
    led4 = 0;
    tick.detach();
    return(2);
}

int ledsTogglen()   
{ 
    led1 = !led1;
    led2 = !led2;
    led3 = !led3;
    led4 = !led4;
    return(3);
}

int ledsEin()   
{ 
    led1 = 1;
    led2 = 1;
    led3 = 1;
    led4 = 1;
    return(4);
}

void switchled()
{
    switch(led)
    {
     case 0: 
        led1 = 1;
        break;
     case 1: 
        led1 = 0;
        led2 = 1;
        break;
     case 2: 
        led2 = 0;
        led3 = 1;
        break;
     case 3: 
        led3 = 0;
        led4 = 1;
        break;
     case 4: 
        led4 = 0;
        led = -1;
        break;
    }
    
    led++;
}

int ledsSwitch()
{
    tick.attach(&switchled, 0.2);
    return(0);
}

// interrupt SR
void blink()
{
    ledsTogglen();
}

// functions
int startTimer()
{
    tick.attach(&blink, 0.2);
    return(0);
}

void debounce(PinName name, unsigned char samples)
{
    DigitalIn joystick(name);
    
    for(unsigned char j = 0; j < samples; j++)
    {
        if(joystick == 1)
            j++;
        else
            j = 0;   
            
            if(j == samples)
                break;
    }    
}

void doEvent()
{
    switch(event)
    {
     case 0: 
        led1 = 0;
        led2 = 0;
        led3 = 0;
        led4 = 0;
        break; 
     case 1:
        led = 0;
        ledsSwitch();
        break;
     case 2: 
        stopTimer();
        ledsTogglen();
        break;  
     case 3: 
        msec300TimerOn();
        break; 
     case 4: 
        stopTimer();
        event = 0;
        break;
     default: 
        break;  
    }
}

int main()
{    
    while(1) {  
        if (button.rising()) {
            event++;
            doEvent();
        }
    }
}