Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: CheckRTC LPS25H hts221
Fork of ELEC350-extended-referral2 by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "hts221.h" 00004 #include "LPS25H.h" 00005 #include <sstream> 00006 #define READALL_OFF 1 00007 #define SETTIME_OFF 2 00008 #define SETT_OFF 4 00009 #define READ_OFF 7 00010 #define ALL_OFF 9 00011 00012 00013 00014 DigitalOut myled(LED1); 00015 I2C i2c2(I2C_SDA, I2C_SCL); 00016 Serial pc(USBTX, USBRX); 00017 float tempCelsius = 25.50; 00018 float humi = 55; 00019 int humiMax = 100; 00020 char buffer_str=0; 00021 uint32_t seconds = 0, minutes=0, hours=0; 00022 Ticker t; 00023 volatile static unsigned short sample16 = 0; 00024 void doSample1Hz(); 00025 int count = 0; 00026 char *buf; 00027 size_t sz; 00028 typedef struct { 00029 float temp; 00030 float press; 00031 float humid; 00032 } measurement; 00033 measurement buffer [120]; 00034 00035 LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR); 00036 HTS221 humidity(I2C_SDA, I2C_SCL); 00037 00038 void function1(); 00039 00040 00041 Thread t1; 00042 Thread tSample; 00043 00044 osThreadId idMain; 00045 osThreadId id1; 00046 osThreadId id2; 00047 osThreadId id3; 00048 osThreadId id4; 00049 00050 Ticker ticker; 00051 00052 void function1() 00053 {//begin function 00054 while (true) {//begin while true 00055 char buffer [128]; 00056 scanf("%127s", buffer); 00057 string buffer_str(buffer); 00058 char date [32]; 00059 strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds)); 00060 char time [32]; 00061 strftime(time, 32, "%H:%M:%S %p", localtime(&seconds)); 00062 00063 if(buffer_str=="READALL") {//begin if buffer readall 00064 humidity.ReadTempHumi(&tempCelsius, &humi); // reads temperature and humity levels 00065 barometer.get(); // gets barometer readings 00066 // displays all the variables of time, date, temperature, humidity and all the barometric readings to the serial 00067 printf("%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature()); 00068 myled = 1; // LED is ON 00069 Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds! 00070 myled = 0; // LED is OFF 00071 t1.signal_set(READALL_OFF); 00072 }//end if buffer readall 00073 Thread::wait(200); 00074 00075 //Thread::signal_wait(READALL_OFF); 00076 00077 if(buffer_str=="SETTIME") {// begin if buffer settime 00078 set_time(1508268288); 00079 printf("time and date updated to %s %s\n\r", time, date); 00080 myled = 1; 00081 Thread::wait(200); 00082 myled = 0; 00083 t1.signal_set(SETTIME_OFF); 00084 }//end if buffer settime 00085 Thread::wait(200); 00086 00087 00088 //Thread::signal_wait(SETTIME_OFF); 00089 00090 if(buffer_str=="SETT") // begin if buffer sett 00091 { 00092 for (count = 0; count < 5; count++) { 00093 float temp = barometer.temperature(); 00094 float pressure = barometer.pressure(); 00095 00096 sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, pressure, temp); 00097 buf = (char *)malloc(sz + 1); 00098 snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, pressure, temp); 00099 printf("%s\n\r",buf); 00100 free(buf); 00101 printf("written to memory\n\r"); 00102 myled = 1; 00103 Thread::wait(200); 00104 myled = 0; 00105 t1.signal_set(SETT_OFF); 00106 } //end if buffer sett 00107 Thread::wait(200); 00108 } 00109 00110 00111 //Thread::signal_wait(SETT_OFF); 00112 00113 if(buffer_str=="READ") { //begin if buffer read 00114 printf("%s\n\r", buf); 00115 myled = 1; 00116 Thread::wait(200); 00117 myled = 0; 00118 osSignalSet(idMain, ALL_OFF); 00119 }//end if buffer read 00120 Thread::wait(200); 00121 }//end while true 00122 }//end function 00123 00124 void getSampleThread() { 00125 while (true) { 00126 Thread::signal_wait(99); 00127 //Get samples 00128 00129 //Put in buffer 00130 } 00131 } 00132 00133 void getSample() { 00134 tSample.signal_set(99); 00135 } 00136 00137 int main() 00138 { 00139 pc.baud(9600); //sets baud rate to 9600 00140 ticker.attach(getSample, 15); 00141 tSample.start(getSampleThread); 00142 00143 time_t seconds = time(NULL); 00144 idMain = osThreadGetId(); 00145 t1.start(function1); 00146 id1 = t1.gettid(); 00147 humidity.init(); 00148 humidity.calib(); 00149 printf("Type SETTIME to set time and date [enter] \n\r"); 00150 printf("Type SETT to start sampling [ENTER]\n\r"); 00151 printf("Type DELETEALL to delete sensor data [enter]\n\r"); 00152 printf("Type READALL [enter]\n\r"); 00153 printf("Type READ to read sensor data in memory [ENTER]\n\r"); 00154 00155 00156 while(1) { 00157 char buffer [128]; 00158 scanf("%127s", buffer); 00159 string buffer_str(buffer); 00160 osSignalWait(ALL_OFF,osWaitForever); 00161 00162 } 00163 } 00164
Generated on Tue Jul 12 2022 15:46:57 by
1.7.2
