MrHeisenberg AUG|Wings / Mbed 2 deprecated StateMachine

Dependencies:   mbed

main.cpp

Committer:
philipp19961
Date:
2014-10-22
Revision:
2:d4fab8f3f21f
Parent:
1:c5769cd78933
Child:
3:c048b13bc1d0

File content as of revision 2:d4fab8f3f21f:

#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 unsigned int event=0;
volatile int led=0;

void switchled();
void blinkled();

void ledsSwitchTimer()
{
    tick.attach(&switchled, 0.2);
}

void ledsBlinkTimer()
{
    tick.attach(&blinkled, 0.2);
}

void stopTimer()        
{ 
    led1 = 0;
    led2 = 0;
    led3 = 0;
    led4 = 0;
    tick.detach();
}

void ledsEin()   
{ 
    led1 = 1;
    led2 = 1;
    led3 = 1;
    led4 = 1;
}

void ledsTogglen()   
{ 
    led1 = !led1;
    led2 = !led2;
    led3 = !led3;
    led4 = !led4;
}

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++;
}

void blinkled()
{
    ledsTogglen();
}

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

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