Syggestions

Dependencies:   CheckRTC LPS25H hts221

Fork of ELEC350-extended-referral2 by satbir panesar

Committer:
spanesar
Date:
Wed Nov 15 11:43:05 2017 +0000
Revision:
39:504f5dc30a33
Parent:
38:10aadcc9a2dd
Child:
40:426cd176ce80
discussion with tutor

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 39:504f5dc30a33 5 //#include "CheckRTC.h"
spanesar 39:504f5dc30a33 6
martinsimpson 32:260a288be58f 7
martinsimpson 32:260a288be58f 8 DigitalOut myled(LED1);
martinsimpson 32:260a288be58f 9 I2C i2c2(I2C_SDA, I2C_SCL);
spanesar 39:504f5dc30a33 10 Serial pc(USBTX, USBRX);
noutram 35:af125862c33e 11 float tempCelsius = 25.50;
noutram 35:af125862c33e 12 float humi = 55;
spanesar 39:504f5dc30a33 13 int humiMax = 100;
noutram 35:af125862c33e 14 char cmd=0;
spanesar 39:504f5dc30a33 15 uint32_t seconds = 0, minutes=0, hours=0;
spanesar 39:504f5dc30a33 16 Ticker t;
spanesar 39:504f5dc30a33 17 volatile static unsigned short sample16 = 0;
spanesar 39:504f5dc30a33 18 void doSample1Hz();
spanesar 39:504f5dc30a33 19 int count = 0;
spanesar 39:504f5dc30a33 20 char *buf;
spanesar 39:504f5dc30a33 21 size_t sz;
spanesar 39:504f5dc30a33 22
martinsimpson 32:260a288be58f 23
noutram 35:af125862c33e 24 LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR);
noutram 35:af125862c33e 25 HTS221 humidity(I2C_SDA, I2C_SCL);
noutram 35:af125862c33e 26
noutram 35:af125862c33e 27
spanesar 39:504f5dc30a33 28
spanesar 39:504f5dc30a33 29
spanesar 39:504f5dc30a33 30
spanesar 39:504f5dc30a33 31
noutram 35:af125862c33e 32 int main()
spanesar 39:504f5dc30a33 33 {
spanesar 39:504f5dc30a33 34 pc.baud(9600); //sets baud rate to 9600
spanesar 39:504f5dc30a33 35 time_t seconds = time(NULL);
spanesar 39:504f5dc30a33 36 char time [32];
spanesar 39:504f5dc30a33 37 char date [32];
spanesar 39:504f5dc30a33 38 strftime(time, 32, "%H:%M:%S %p", localtime(&seconds));
spanesar 39:504f5dc30a33 39 strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
spanesar 39:504f5dc30a33 40 humidity.init();
spanesar 39:504f5dc30a33 41 humidity.calib();
spanesar 39:504f5dc30a33 42 //t.attach(doSample1Hz, 1.0);
spanesar 39:504f5dc30a33 43 printf("press T to set time and date \n\r");
spanesar 39:504f5dc30a33 44 printf("press S to start sampling\n\r");
spanesar 39:504f5dc30a33 45 printf("press D to delete sensor data\n\r");
spanesar 39:504f5dc30a33 46 printf("Press A to read all sensor data\n\r");
spanesar 39:504f5dc30a33 47 printf("Press R to read sensor data in memory\n\r");
spanesar 39:504f5dc30a33 48
spanesar 39:504f5dc30a33 49
spanesar 39:504f5dc30a33 50
noutram 35:af125862c33e 51
noutram 35:af125862c33e 52
spanesar 39:504f5dc30a33 53 while(1) {
noutram 35:af125862c33e 54
spanesar 39:504f5dc30a33 55 cmd=NULL;
spanesar 39:504f5dc30a33 56 while(cmd==NULL) {
spanesar 39:504f5dc30a33 57 cmd=getchar();
spanesar 39:504f5dc30a33 58 }
spanesar 39:504f5dc30a33 59 if(cmd=='?') {
spanesar 39:504f5dc30a33 60 printf("SOFT253 simple Temperature Humidity and Pressure Sensor Monitor\n\r");
spanesar 39:504f5dc30a33 61 printf("Using the X-NUCLEO-IKS01A1 shield and MBED Libraries\n\r");
spanesar 39:504f5dc30a33 62 }
spanesar 39:504f5dc30a33 63 /*--------------If 'A' is pressed then all sensor data is diplayed---------------------*/
spanesar 39:504f5dc30a33 64 if(cmd=='A') {
spanesar 39:504f5dc30a33 65 humidity.ReadTempHumi(&tempCelsius, &humi); // reads temperature and humity levels
spanesar 39:504f5dc30a33 66 barometer.get(); // gets barometer readings
spanesar 39:504f5dc30a33 67 // displays all the variables of time, date, temperature, humidity and all the barometric readings to the serial
spanesar 39:504f5dc30a33 68 printf("%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
spanesar 39:504f5dc30a33 69 myled = 1; // LED is ON
spanesar 39:504f5dc30a33 70 Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds!
spanesar 39:504f5dc30a33 71 myled = 0; // LED is OFF
spanesar 39:504f5dc30a33 72 Thread::wait(100); // 100 ms
spanesar 39:504f5dc30a33 73 }
spanesar 39:504f5dc30a33 74 /*-------------- if 'T' is pressed then the time and date are set to the UTC below------------------------*/
spanesar 39:504f5dc30a33 75 if(cmd=='T') {
spanesar 39:504f5dc30a33 76 set_time(1508268288);
spanesar 39:504f5dc30a33 77 printf("time and date updated to %s %s\n\r", time, date);
spanesar 39:504f5dc30a33 78 myled = 1;
spanesar 39:504f5dc30a33 79 Thread::wait(200);
spanesar 39:504f5dc30a33 80 myled = 0;
spanesar 39:504f5dc30a33 81 Thread::wait(100);
spanesar 39:504f5dc30a33 82 }
spanesar 39:504f5dc30a33 83 /*-------------if 's' is pressed, 5 sample of data are taken and stored to the RAM every second-------------------------*/
spanesar 39:504f5dc30a33 84 if(cmd=='S') {
spanesar 39:504f5dc30a33 85 for (count = 0; count < 5; count++){
spanesar 39:504f5dc30a33 86 sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
spanesar 39:504f5dc30a33 87 buf = (char *)malloc(sz + 1);
spanesar 39:504f5dc30a33 88 snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
spanesar 39:504f5dc30a33 89 printf("%s\n\r",buf);
spanesar 39:504f5dc30a33 90 printf("written to memory\n\r");
spanesar 39:504f5dc30a33 91 myled = 1;
spanesar 39:504f5dc30a33 92 Thread::wait(200);
spanesar 39:504f5dc30a33 93 myled = 0;
spanesar 39:504f5dc30a33 94 Thread::wait(100);
spanesar 39:504f5dc30a33 95 wait(1);
spanesar 39:504f5dc30a33 96 }
spanesar 39:504f5dc30a33 97 if(cmd=='R'){
spanesar 39:504f5dc30a33 98 printf("%s\n\r", buf);
spanesar 39:504f5dc30a33 99 myled = 1;
spanesar 39:504f5dc30a33 100 Thread::wait(200);
spanesar 39:504f5dc30a33 101 myled = 0;
spanesar 39:504f5dc30a33 102 Thread::wait (100);
spanesar 39:504f5dc30a33 103 }
spanesar 39:504f5dc30a33 104 }
noutram 35:af125862c33e 105 }
spanesar 39:504f5dc30a33 106
FairyMental 34:62aae7d507e2 107 }
spanesar 39:504f5dc30a33 108 void doSample1Hz()
spanesar 39:504f5dc30a33 109 {
spanesar 39:504f5dc30a33 110 //sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
spanesar 39:504f5dc30a33 111 //buf = (char *)malloc(sz + 1);
spanesar 39:504f5dc30a33 112 //snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
spanesar 39:504f5dc30a33 113
spanesar 39:504f5dc30a33 114 }