test

Dependencies:   CheckRTC LPS25H hts221

Fork of ELEC350-extended-referral2 by satbir panesar

Committer:
noutram
Date:
Wed Nov 22 13:34:16 2017 +0000
Revision:
45:fac0d195fc65
Parent:
44:ca34a376a17c
some suggested fixes

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