Nicholas Outram / Mbed OS sarbir

Dependencies:   CheckRTC LPS25H hts221

Fork of ELEC350-extended-referral2 by satbir panesar

Files at this revision

API Documentation at this revision

Comitter:
spanesar
Date:
Wed Nov 15 11:43:05 2017 +0000
Parent:
38:10aadcc9a2dd
Child:
40:426cd176ce80
Commit message:
discussion with tutor

Changed in this revision

CheckRTC.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CheckRTC.lib	Wed Nov 15 11:43:05 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/kenjiArai/code/CheckRTC/#921a188e61c0
--- 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());
+
+}