Base program for project 2 NMHU
Dependencies: SLCD mbed-rtos mbed
Fork of rtos_basic by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "SLCD.h" 00004 00005 #define RANDLIMIT 2000 00006 #define RANDOFFSET 200 00007 #define T1INTERVAL 750 // ms 00008 #define T2INTERVAL 500 // ms 00009 #define BUTTON_INT 100 //ms 00010 #define NUMSTATES 2 00011 #define GDISPLAY 0 00012 #define RDISPLAY 1 00013 #define LCDLEN 10 00014 #define LEDON 0 00015 #define LEDOFF 1 00016 00017 SLCD slcd; //define LCD display 00018 00019 DigitalOut gLed(LED_GREEN); 00020 DigitalOut rLed(LED_RED); 00021 int LButtonState; 00022 DigitalIn LftButton(PTC3); 00023 int displayState; 00024 char LCDActual[LCDLEN]; 00025 00026 00027 void LCDMess(char *lMess){ 00028 slcd.Home(); 00029 slcd.clear(); 00030 slcd.printf(lMess); 00031 } 00032 void LCDdis_thread(void const *args){ 00033 while(true) { 00034 LCDMess(LCDActual); 00035 Thread::wait(BUTTON_INT); 00036 } 00037 } 00038 void button_thread(void const *args) { 00039 int LButtonState; 00040 while (true) { 00041 LButtonState = !LftButton; 00042 if (LButtonState) { //Change data that is displayed cycle through states 00043 displayState++; 00044 displayState = displayState % NUMSTATES; 00045 } 00046 Thread::wait(BUTTON_INT); 00047 } 00048 } 00049 00050 00051 void gLed_thread(void const *args) { 00052 int interval; 00053 while (true) { 00054 gLed = !gLed; 00055 interval = rand()% RANDLIMIT + RANDOFFSET; 00056 if(displayState == GDISPLAY) { 00057 sprintf (LCDActual, "Y.%3d", interval/10); 00058 } 00059 Thread::wait(interval); 00060 } 00061 } 00062 00063 int main() { 00064 srand(time(NULL)); 00065 int interval; 00066 Thread gthread(gLed_thread); 00067 Thread bthread(button_thread); 00068 Thread lthread(LCDdis_thread); 00069 00070 rLed = LEDON; 00071 gLed = LEDOFF; 00072 00073 while (true) { // Red LED thread 00074 rLed = !rLed; 00075 interval = rand()% RANDLIMIT + RANDOFFSET; 00076 if(displayState == RDISPLAY) { 00077 sprintf (LCDActual, "R.%d",interval/10); 00078 } 00079 Thread::wait(interval); 00080 } 00081 }
Generated on Thu Sep 15 2022 09:04:20 by 1.7.2