Base program for project 2 NMHU
Dependencies: SLCD mbed-rtos mbed
Fork of rtos_basic by
main.cpp
- Committer:
- scohennm
- Date:
- 2015-02-22
- Revision:
- 7:93ca18251991
- Parent:
- 3:c92e21f305d8
File content as of revision 7:93ca18251991:
#include "mbed.h" #include "rtos.h" #include "SLCD.h" #define RANDLIMIT 2000 #define RANDOFFSET 200 #define T1INTERVAL 750 // ms #define T2INTERVAL 500 // ms #define BUTTON_INT 100 //ms #define NUMSTATES 2 #define GDISPLAY 0 #define RDISPLAY 1 #define LCDLEN 10 #define LEDON 0 #define LEDOFF 1 SLCD slcd; //define LCD display DigitalOut gLed(LED_GREEN); DigitalOut rLed(LED_RED); int LButtonState; DigitalIn LftButton(PTC3); int displayState; char LCDActual[LCDLEN]; void LCDMess(char *lMess){ slcd.Home(); slcd.clear(); slcd.printf(lMess); } void LCDdis_thread(void const *args){ while(true) { LCDMess(LCDActual); Thread::wait(BUTTON_INT); } } void button_thread(void const *args) { int LButtonState; while (true) { LButtonState = !LftButton; if (LButtonState) { //Change data that is displayed cycle through states displayState++; displayState = displayState % NUMSTATES; } Thread::wait(BUTTON_INT); } } void gLed_thread(void const *args) { int interval; while (true) { gLed = !gLed; interval = rand()% RANDLIMIT + RANDOFFSET; if(displayState == GDISPLAY) { sprintf (LCDActual, "Y.%3d", interval/10); } Thread::wait(interval); } } int main() { srand(time(NULL)); int interval; Thread gthread(gLed_thread); Thread bthread(button_thread); Thread lthread(LCDdis_thread); rLed = LEDON; gLed = LEDOFF; while (true) { // Red LED thread rLed = !rLed; interval = rand()% RANDLIMIT + RANDOFFSET; if(displayState == RDISPLAY) { sprintf (LCDActual, "R.%d",interval/10); } Thread::wait(interval); } }