Syggestions

Dependencies:   CheckRTC LPS25H hts221

Fork of ELEC350-extended-referral2 by satbir panesar

Committer:
spanesar
Date:
Thu Nov 23 11:40:53 2017 +0000
Revision:
46:794973f66ef6
Parent:
45:fac0d195fc65
Child:
47:12f18a4527d8
Tried

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jonathan Austin 0:2757d7abb7d9 1 #include "mbed.h"
martinsimpson 32:260a288be58f 2 #include "rtos.h"
noutram 35:af125862c33e 3 #include "hts221.h"
martinsimpson 32:260a288be58f 4 #include "LPS25H.h"
spanesar 40:426cd176ce80 5 #include <sstream>
spanesar 41:ce3d6fb38d3b 6 #define READALL_OFF 1
spanesar 41:ce3d6fb38d3b 7 #define SETTIME_OFF 2
spanesar 41:ce3d6fb38d3b 8 #define SETT_OFF 4
spanesar 43:a9682b81632b 9 #define READ_OFF 7
spanesar 43:a9682b81632b 10 #define ALL_OFF 9
spanesar 41:ce3d6fb38d3b 11
spanesar 39:504f5dc30a33 12
martinsimpson 32:260a288be58f 13
martinsimpson 32:260a288be58f 14 DigitalOut myled(LED1);
martinsimpson 32:260a288be58f 15 I2C i2c2(I2C_SDA, I2C_SCL);
spanesar 39:504f5dc30a33 16 Serial pc(USBTX, USBRX);
noutram 35:af125862c33e 17 float tempCelsius = 25.50;
noutram 35:af125862c33e 18 float humi = 55;
spanesar 39:504f5dc30a33 19 int humiMax = 100;
spanesar 40:426cd176ce80 20 char buffer_str=0;
spanesar 39:504f5dc30a33 21 uint32_t seconds = 0, minutes=0, hours=0;
spanesar 39:504f5dc30a33 22 Ticker t;
spanesar 39:504f5dc30a33 23 volatile static unsigned short sample16 = 0;
spanesar 39:504f5dc30a33 24 void doSample1Hz();
spanesar 39:504f5dc30a33 25 int count = 0;
spanesar 39:504f5dc30a33 26 char *buf;
spanesar 39:504f5dc30a33 27 size_t sz;
spanesar 46:794973f66ef6 28
spanesar 46:794973f66ef6 29
martinsimpson 32:260a288be58f 30
noutram 35:af125862c33e 31 LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR);
noutram 35:af125862c33e 32 HTS221 humidity(I2C_SDA, I2C_SCL);
noutram 35:af125862c33e 33
spanesar 40:426cd176ce80 34 void function1();
spanesar 43:a9682b81632b 35
spanesar 39:504f5dc30a33 36
spanesar 40:426cd176ce80 37 Thread t1;
noutram 45:fac0d195fc65 38 Thread tSample;
spanesar 39:504f5dc30a33 39
spanesar 40:426cd176ce80 40 osThreadId idMain;
spanesar 40:426cd176ce80 41 osThreadId id1;
spanesar 41:ce3d6fb38d3b 42 osThreadId id2;
spanesar 41:ce3d6fb38d3b 43 osThreadId id3;
spanesar 41:ce3d6fb38d3b 44 osThreadId id4;
spanesar 41:ce3d6fb38d3b 45
noutram 45:fac0d195fc65 46 Ticker ticker;
noutram 35:af125862c33e 47
spanesar 40:426cd176ce80 48 void function1()
spanesar 46:794973f66ef6 49 {
spanesar 46:794973f66ef6 50 //begin function
spanesar 43:a9682b81632b 51 while (true) {//begin while true
spanesar 43:a9682b81632b 52 char buffer [128];
spanesar 43:a9682b81632b 53 scanf("%127s", buffer);
spanesar 43:a9682b81632b 54 string buffer_str(buffer);
spanesar 43:a9682b81632b 55 char date [32];
spanesar 43:a9682b81632b 56 strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
spanesar 43:a9682b81632b 57 char time [32];
spanesar 43:a9682b81632b 58 strftime(time, 32, "%H:%M:%S %p", localtime(&seconds));
spanesar 43:a9682b81632b 59
spanesar 43:a9682b81632b 60 if(buffer_str=="READALL") {//begin if buffer readall
spanesar 46:794973f66ef6 61
spanesar 43:a9682b81632b 62 // displays all the variables of time, date, temperature, humidity and all the barometric readings to the serial
spanesar 43:a9682b81632b 63 printf("%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
spanesar 43:a9682b81632b 64 myled = 1; // LED is ON
spanesar 43:a9682b81632b 65 Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds!
spanesar 43:a9682b81632b 66 myled = 0; // LED is OFF
spanesar 43:a9682b81632b 67
spanesar 46:794973f66ef6 68 }//end if buffer readall
spanesar 46:794973f66ef6 69
spanesar 46:794973f66ef6 70
spanesar 43:a9682b81632b 71
spanesar 43:a9682b81632b 72
spanesar 46:794973f66ef6 73 if(buffer_str=="SETTIME") {// begin if buffer settime
spanesar 46:794973f66ef6 74 set_time(1508268288); //sets time in UTC
spanesar 46:794973f66ef6 75 printf("time and date updated to %s %s\n\r", time, date); //prints date and time
spanesar 46:794973f66ef6 76 myled = 1; //led on
spanesar 46:794973f66ef6 77 Thread::wait(200); // wait 200ms
spanesar 46:794973f66ef6 78 myled = 0; //led off
spanesar 46:794973f66ef6 79
spanesar 46:794973f66ef6 80 }//end if buffer settime
spanesar 46:794973f66ef6 81
spanesar 46:794973f66ef6 82
spanesar 46:794973f66ef6 83
spanesar 46:794973f66ef6 84 if(buffer_str=="SETT") { // begin if buffer sett
spanesar 43:a9682b81632b 85 for (count = 0; count < 5; count++) {
noutram 45:fac0d195fc65 86 float temp = barometer.temperature();
noutram 45:fac0d195fc65 87 float pressure = barometer.pressure();
spanesar 46:794973f66ef6 88
noutram 45:fac0d195fc65 89 sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, pressure, temp);
spanesar 43:a9682b81632b 90 buf = (char *)malloc(sz + 1);
noutram 45:fac0d195fc65 91 snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, pressure, temp);
spanesar 43:a9682b81632b 92 printf("%s\n\r",buf);
noutram 45:fac0d195fc65 93 free(buf);
spanesar 43:a9682b81632b 94 printf("written to memory\n\r");
spanesar 43:a9682b81632b 95 myled = 1;
spanesar 43:a9682b81632b 96 Thread::wait(200);
spanesar 43:a9682b81632b 97 myled = 0;
spanesar 46:794973f66ef6 98
spanesar 43:a9682b81632b 99 } //end if buffer sett
spanesar 46:794973f66ef6 100
spanesar 46:794973f66ef6 101 }
spanesar 43:a9682b81632b 102
spanesar 46:794973f66ef6 103
spanesar 46:794973f66ef6 104
spanesar 44:ca34a376a17c 105
spanesar 43:a9682b81632b 106 if(buffer_str=="READ") { //begin if buffer read
spanesar 43:a9682b81632b 107 printf("%s\n\r", buf);
spanesar 43:a9682b81632b 108 myled = 1;
spanesar 43:a9682b81632b 109 Thread::wait(200);
spanesar 43:a9682b81632b 110 myled = 0;
spanesar 46:794973f66ef6 111
spanesar 43:a9682b81632b 112 }//end if buffer read
spanesar 46:794973f66ef6 113
noutram 45:fac0d195fc65 114 }//end while true
noutram 45:fac0d195fc65 115 }//end function
spanesar 43:a9682b81632b 116
spanesar 46:794973f66ef6 117 void getSampleThread()
spanesar 46:794973f66ef6 118 {
spanesar 46:794973f66ef6 119 while (true) {
spanesar 46:794973f66ef6 120 Thread::signal_wait(99);
spanesar 46:794973f66ef6 121 //Get samples
spanesar 46:794973f66ef6 122 humidity.ReadTempHumi(&tempCelsius, &humi); // reads temperature and humity levels
spanesar 46:794973f66ef6 123 barometer.get(); // gets barometer readings
spanesar 46:794973f66ef6 124 //Put in buffer
spanesar 46:794973f66ef6 125 typedef struct {
spanesar 46:794973f66ef6 126 float temp;
spanesar 46:794973f66ef6 127 float press;
spanesar 46:794973f66ef6 128 float humid;
spanesar 46:794973f66ef6 129 } measurement;
spanesar 46:794973f66ef6 130 measurement buffer [120];
spanesar 46:794973f66ef6 131
spanesar 43:a9682b81632b 132
spanesar 43:a9682b81632b 133
spanesar 43:a9682b81632b 134
spanesar 46:794973f66ef6 135 }
spanesar 46:794973f66ef6 136 }
spanesar 43:a9682b81632b 137
spanesar 46:794973f66ef6 138 void getSample()
spanesar 46:794973f66ef6 139 {
spanesar 46:794973f66ef6 140 tSample.signal_set(99);
spanesar 41:ce3d6fb38d3b 141 }
spanesar 41:ce3d6fb38d3b 142
spanesar 46:794973f66ef6 143 int main()
spanesar 46:794973f66ef6 144 {
spanesar 46:794973f66ef6 145 time_t seconds = time(NULL);
spanesar 46:794973f66ef6 146 pc.baud(9600); //sets baud rate to 9600
spanesar 46:794973f66ef6 147 ticker.attach(getSample, 15);
spanesar 46:794973f66ef6 148 tSample.start(getSampleThread);
spanesar 46:794973f66ef6 149 idMain = osThreadGetId();
spanesar 46:794973f66ef6 150 t1.start(function1);
spanesar 46:794973f66ef6 151 id1 = t1.gettid();
spanesar 46:794973f66ef6 152 humidity.init();
spanesar 46:794973f66ef6 153 humidity.calib();
spanesar 46:794973f66ef6 154 printf("Type SETTIME to set time and date [enter] \n\r");
spanesar 46:794973f66ef6 155 printf("Type SETT to start sampling [ENTER]\n\r");
spanesar 46:794973f66ef6 156 printf("Type DELETEALL to delete sensor data [enter]\n\r");
spanesar 46:794973f66ef6 157 printf("Type READALL [enter]\n\r");
spanesar 46:794973f66ef6 158 printf("Type READ to read sensor data in memory [ENTER]\n\r");
spanesar 46:794973f66ef6 159
spanesar 46:794973f66ef6 160
spanesar 46:794973f66ef6 161 while(1) {
spanesar 46:794973f66ef6 162 char buffer [128];
spanesar 46:794973f66ef6 163 scanf("%127s", buffer);
spanesar 46:794973f66ef6 164 string buffer_str(buffer);
spanesar 46:794973f66ef6 165 osSignalWait(ALL_OFF,osWaitForever);
spanesar 46:794973f66ef6 166
spanesar 46:794973f66ef6 167 }
spanesar 46:794973f66ef6 168 }
spanesar 46:794973f66ef6 169