Data logger program, using threads for individual components

Dependencies:   C12832 mbed-os LM75B

Files at this revision

API Documentation at this revision

Comitter:
saltire78
Date:
Sat Dec 05 16:40:22 2020 +0000
Commit message:
.

Changed in this revision

C12832.lib Show annotated file Show diff for this revision Revisions of this file
LM75B.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
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832.lib	Sat Dec 05 16:40:22 2020 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/chris/code/C12832/#7de323fa46fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LM75B.lib	Sat Dec 05 16:40:22 2020 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/neilt6/code/LM75B/#fc27dc535ea9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Dec 05 16:40:22 2020 +0000
@@ -0,0 +1,80 @@
+#include "mbed.h"                                                               // mbed header
+#include "LM75B.h"                                                              // temp sensor header
+#include "C12832.h"                                                             // lcd screen header
+
+C12832 lcd(p5, p7, p6, p8, p11);                                                // define lcd
+LM75B sensor(p28,p27);                                                          // define tem sensor
+Serial pc(USBTX,USBRX);                                                         // define serial port
+LocalFileSystem local("local");                                                 // create local file system location
+
+int seconds = 60;                                                               // define timespan variable
+int i=0;                                                                        // define iteration variable
+float accum = 0.0;                                                              // define temporary accumulator float
+int timeDelay = 5;                                                              // define sample time range
+
+Thread thread1, thread2, thread3;
+
+void LM758_ok()
+{
+    while (1){
+        if (sensor.open()) {                                                        // test if temp sensor functioning (quickly eliminated if functional)
+            lcd.printf("Device detected!\n");
+            }   
+        else {                                                                    // if temp sensor not functioning throw an error
+            error("Device not detected!\n");
+        }
+        
+    ThisThread::sleep_for(2000);
+    
+    }
+}
+    
+void display_data() 
+{
+    while(1){
+        lcd.cls();                                                                  // clear lcd screen
+        lcd.locate(0,0);                                                            // create lcd home location
+        lcd.printf("Temp = %.3f\n\r", (float)sensor.temp());                             // print sensor reading to lcd
+        pc.printf("Temp = %.3f degrees C\n\r", (float)sensor.temp());                      // print sensor reading to pc
+
+        float value = (float)sensor.temp();                                                // store sensor reading as usable variable
+        accum = accum + value;                                                      // begin accumulating sum of values detected
+        i = i+1;
+        
+    ThisThread::sleep_for(5000);
+    
+    }
+}
+
+void log_data() 
+{
+    // This logging component still doesn't work, same as lab4
+    while(1){
+        if (i==(seconds/timeDelay)) {                                                           // define max number of iterations allowed
+            float avgTemp = accum/i;                                                            // create an average value for the sensor readings
+            pc.printf("Average Temp for last %d seconds = %.3f degrees C\n\r", seconds, avgTemp);        // print text of average temp reading to the pc
+
+            // attempt to record an average temperature over a defined period to local memory - in this case every minute.
+            lcd.printf("Data logging\n\r");
+            FILE *fp = fopen("/local/avgTemp.txt", "a");                             // direct to txt file in local memory
+            fprintf(fp,"%.5f\n", avgTemp);                                           // write average temp to local flash
+            fclose(fp);                                                             // close the file
+            ThisThread::sleep_for(6000);
+            //
+        }
+    
+    }
+}
+
+
+int main()                                                                      // start main program
+{
+
+    while (1) {                                                                 // constant loop
+        thread1.start(LM758_ok);
+        thread2.start(display_data);
+//        thread3.start(log_data);
+        
+//        wait(timeDelay);                                                        // wait for desired time between readings
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os.lib	Sat Dec 05 16:40:22 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/bLandais/code/mbed-os/#4c0e0edd4545