![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Threads
Dependencies: mbed C12832 LM75B
main.cpp
- Committer:
- ciaranom
- Date:
- 2020-12-05
- Revision:
- 7:d20cc6a9060c
- Parent:
- 6:e883d7b9c790
- Child:
- 8:a27db43e9d85
File content as of revision 7:d20cc6a9060c:
#include "mbed.h" #include "LM75B.h" #include <string> #include <iostream> #include <stdio.h> #include <cstdlib> LM75B sensor(p28,p27); Serial pc(USBTX,USBRX); float TempV; //making a float variable for the temperature value float cycles = 300; LocalFileSystem local("local"); // Create the local filesystem under the name "local" DigitalOut led1(LED1); DigitalOut led2(LED2); Thread Writing_thread; Thread Read_Calc_thread; void Writing_thread() { while (true) { fp = fopen("/local/temp3.csv", "a"); //Open the file for writing to printf("Measuring temp... \n\r"); //Print confirmation of code running while (i<cycles) { TempV = (float)sensor; //Temperature is the sensor value fprintf(fp, "%.2f\n", TempV); //print values to file i = i+1; // counter wait(1); //Wait 1 seconds to 1*300s = 5 minutes } //end while loop for writing function fclose (fp);//close the file //ThisThread::sleep_for(500); //Set trigger to end thread } } void Read_Calc_thread() { while (true) { char temps[5]; //Create a string that will contain temerature values from file fp = fopen("/local/temp3.csv", "r"); //Open rfile for reading //min max total double num = 0; double total = 0; double maxtemp = -99.99; double mintemp = 99.99; while (fscanf(fp, "%s", temps)!= EOF) //scan to end of file { num = atof(temps); //string to number --> https://os.mbed.com/questions/7171/How-to-convert-String-to-Float-value/ if(num > maxtemp) //Calculating max number { maxtemp = num; } if(num < mintemp) //Calculating min number { mintemp = num; } total = total+ num; //ThisThread::sleep_for(500); //Set trigger to end thread } } } int main () //Main function *************************************************************************************** { FILE *fp = fopen("/local/temp3.csv", "a"); //Create the file fclose (fp); //Close the file // Variables int i =0; // int j =0; //while (j<288) //144 5 min cycles in 24 hours *** Main while loop for 3 functions, Writing, reading, displaying if (sensor.open()) //Try to open the LM75B { printf("Device detected!\n\r"); } else { error("Device not detected!\n"); }//end if sensor open thread.start(Writing_thread); //Start first thread thread.start(Read_Calc_thread(); //Start second thread //Display function } //while loop creating sting of values from file ends double avg = total/(cycles); printf("Average: %.2f \n\r", avg); printf("Max: %.2f \n\r", maxtemp); printf("Min: %.2f \n\r", mintemp); fclose(fp); // close file //j=j+1 // Controls daily cycle } //end main