Syggestions

Dependencies:   CheckRTC LPS25H hts221

Fork of ELEC350-extended-referral2 by satbir panesar

Revision:
39:504f5dc30a33
Parent:
38:10aadcc9a2dd
Child:
40:426cd176ce80
--- a/main.cpp	Fri Sep 29 12:21:33 2017 +0000
+++ b/main.cpp	Wed Nov 15 11:43:05 2017 +0000
@@ -2,62 +2,113 @@
 #include "rtos.h"
 #include "hts221.h"
 #include "LPS25H.h"
+//#include "CheckRTC.h"
+
 
 DigitalOut myled(LED1);
 I2C i2c2(I2C_SDA, I2C_SCL);
-
+Serial pc(USBTX, USBRX);
 float tempCelsius = 25.50;
 float humi = 55;
-int humiMax = 100; 
+int humiMax = 100;
 char cmd=0;
-uint32_t seconds = 0, minutes=0, hours=0; 
+uint32_t seconds = 0, minutes=0, hours=0;
+Ticker t;
+volatile static unsigned short sample16 = 0;
+void doSample1Hz();
+int count = 0;
+char *buf;
+size_t sz;
+
 
 LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR);
 HTS221 humidity(I2C_SDA, I2C_SCL);
 
 
+
+
+
+
 int main()
-  {
-  humidity.init();
-  humidity.calib();
-  printf("ELEC350/351 Simple Temperature Humidity and Pressure Sensor Monitor\n\r");
-  printf("Using the X-NUCLEO-IKS01A1 shield and mbed-os Libraries\n\r");
-  printf("Press A to take a measurement\n\r");
-  
-  aA
-  while(1) 
-    {
-      cmd=NULL;
-      while(cmd==NULL){cmd=getchar();}
-      if(cmd=='?'){
-        printf("SOFT253 simple Temperature Humidity and Pressure Sensor Monitor\n\r");
-        printf("Using the X-NUCLEO-IKS01A1 shield and MBED Libraries\n\r");
-        
-      }
-      if(cmd=='A'){
-        humidity.ReadTempHumi(&tempCelsius, &humi);
-        printf("%4.2fC %3.1f%%", tempCelsius, humi);
-        barometer.get();
-        printf(" %6.1f %4.1f\r\n", barometer.pressure(), barometer.temperature());
-        myled = 1; // LED is ON
-        Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds! 
-        myled = 0; // LED is OFF
-        Thread::wait(100); // 100 ms
-      }
-    }
-  }
-  
+{
+    pc.baud(9600); //sets baud rate to 9600
+    time_t seconds = time(NULL);
+    char time [32];
+    char date [32];
+    strftime(time, 32, "%H:%M:%S %p", localtime(&seconds));
+    strftime(date, 32, "%Y/%m/%d %a", localtime(&seconds));
+    humidity.init();
+    humidity.calib();
+    //t.attach(doSample1Hz, 1.0);
+    printf("press T to set time and date \n\r");
+    printf("press S to start sampling\n\r");
+    printf("press D to delete sensor data\n\r");
+    printf("Press A to read all sensor data\n\r");
+    printf("Press R to read sensor data in memory\n\r");
+
+
+
 
 
-/*#include "mbed.h"
-
-DigitalOut led1(LED1);
+    while(1) {
 
-// main() runs in its own thread in the OS
-int main() {
-    while (true) {
-        led1 = !led1;
-        wait(0.5);
+        cmd=NULL;
+        while(cmd==NULL) {
+            cmd=getchar();
+        }
+        if(cmd=='?') {
+            printf("SOFT253 simple Temperature Humidity and Pressure Sensor Monitor\n\r");
+            printf("Using the X-NUCLEO-IKS01A1 shield and MBED Libraries\n\r");
+        }
+/*--------------If 'A' is pressed then all sensor data is diplayed---------------------*/
+        if(cmd=='A') {
+            humidity.ReadTempHumi(&tempCelsius, &humi); // reads temperature and humity levels
+            barometer.get(); // gets barometer readings
+            // displays all the variables of time, date, temperature, humidity and all the barometric readings to the serial
+            printf("%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
+            myled = 1; // LED is ON
+            Thread::wait(200); // 200 ms NB 'Thread::wait(int d);' !!! d is in milliseconds!
+            myled = 0; // LED is OFF
+            Thread::wait(100); // 100 ms
+        }
+ /*-------------- if 'T' is pressed then the time and date are set to the UTC below------------------------*/       
+        if(cmd=='T') {
+            set_time(1508268288);
+            printf("time and date updated to %s %s\n\r", time, date);
+            myled = 1;
+            Thread::wait(200);
+            myled = 0;
+            Thread::wait(100);
+        }
+/*-------------if 's' is pressed, 5 sample of data are taken and stored to the RAM every second-------------------------*/
+        if(cmd=='S') {
+            for (count = 0; count < 5; count++){
+            sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
+            buf = (char *)malloc(sz + 1);
+            snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
+            printf("%s\n\r",buf);
+            printf("written to memory\n\r");
+            myled = 1;
+            Thread::wait(200);
+            myled = 0;
+            Thread::wait(100);
+            wait(1);
+            }
+        if(cmd=='R'){
+            printf("%s\n\r", buf);
+            myled = 1;
+            Thread::wait(200);
+            myled = 0;
+            Thread::wait (100);
+            }    
+        }
     }
+
 }
-*/
+void doSample1Hz()
+{
+   //sz = snprintf(NULL, 0,"%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
+   //buf = (char *)malloc(sz + 1);
+   //snprintf(buf, sz + 1, "%s, %s, %4.2fC , %3.1f%%, %6.1f, %4.1f\n\r", time, date, tempCelsius, humi, barometer.pressure(), barometer.temperature());
+
+}