Dependencies:   C12832_lcd mbed

main.cpp

Committer:
philipp19961
Date:
2014-10-29
Revision:
0:721134a8164c

File content as of revision 0:721134a8164c:

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

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

DebouncedIn button(p12);

volatile unsigned int event=0;
float initTime = 0;
bool startreaction = false;
float reactionTime = 0;

void reactionTick();
void startTime();

void RandomTime()
{
    float min = 0.8 / 6.3;
    float max = 6.2 / 6.3;
 
    initTime = min + ((float)rand()/RAND_MAX) * (max - min) * 6.3;
}

void startTimerStart()
{
    RandomTime();
    tick.attach(&startTime, 0.1);
}

void reactionTimerStart()
{
    reactionTime = 0;
    tick.attach(&reactionTick, 0.001);
}

void stopTimer()        
{ 
    tick.detach();
}

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

void ledsAus()   
{ 
    led1 = 0;
    led2 = 0;
    led3 = 0;
    led4 = 0;
}

void startTime()
{
    initTime -= 0.1;
    
    if(initTime <= 0)
    {
        startreaction = true;
        ledsAus();
        stopTimer();
        reactionTimerStart();
    }
}

void reactionTick()
{
    reactionTime += 0.001;
}

void doEvent()
{
    switch(event)
    {
     case 0: 
        ledsAus();    
        lcd.cls();
        lcd.locate(0, 0);
        lcd.printf("Reaktionstester: ");
        break; 
     case 1:
        ledsEin();
        lcd.printf("Running: ");
        startTimerStart();
        break;
     case 2: 
        if(startreaction)
        {
            stopTimer();
            lcd.locate(0, 10);
            lcd.printf("Zeit: %.3f s", reactionTime);
        }
        else
        {
            stopTimer();
            lcd.locate(0, 10);
            lcd.printf("Zu frueh!!!!");
        }
        break;  
     case 3: 
        event = 0;
        ledsAus();    
        lcd.cls();
        lcd.locate(0, 0);
        lcd.printf("Reaktionstester: ");
        break;
     default: 
        break;  
    }
}

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