![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Threads
Dependencies: mbed C12832 LM75B
main.cpp@8:a27db43e9d85, 2020-12-05 (annotated)
- Committer:
- ciaranom
- Date:
- Sat Dec 05 17:43:31 2020 +0000
- Revision:
- 8:a27db43e9d85
- Parent:
- 7:d20cc6a9060c
Threads
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okano | 0:ce7a8546502b | 1 | #include "mbed.h" |
chris | 2:9e757151de9b | 2 | #include "LM75B.h" |
ciaranom | 7:d20cc6a9060c | 3 | #include <string> |
ciaranom | 7:d20cc6a9060c | 4 | #include <iostream> |
ciaranom | 7:d20cc6a9060c | 5 | #include <stdio.h> |
ciaranom | 7:d20cc6a9060c | 6 | #include <cstdlib> |
chris | 5:608f2bf4d3f7 | 7 | |
ciaranom | 8:a27db43e9d85 | 8 | |
chris | 4:6df97cb10041 | 9 | LM75B sensor(p28,p27); |
chris | 4:6df97cb10041 | 10 | Serial pc(USBTX,USBRX); |
ciaranom | 8:a27db43e9d85 | 11 | //float TempV = 0; //making a float variable for the temperature value |
ciaranom | 8:a27db43e9d85 | 12 | int cycles = 300; |
okano | 0:ce7a8546502b | 13 | |
ciaranom | 7:d20cc6a9060c | 14 | LocalFileSystem local("local"); // Create the local filesystem under the name "local" |
ciaranom | 8:a27db43e9d85 | 15 | FILE* fp; |
ciaranom | 8:a27db43e9d85 | 16 | int i = 0; |
ciaranom | 8:a27db43e9d85 | 17 | int j = 0; |
ciaranom | 6:e883d7b9c790 | 18 | |
ciaranom | 8:a27db43e9d85 | 19 | double num = 0; |
ciaranom | 8:a27db43e9d85 | 20 | double total = 0; |
ciaranom | 8:a27db43e9d85 | 21 | double maxtemp = -99.99; |
ciaranom | 8:a27db43e9d85 | 22 | double mintemp = 99.99; |
ciaranom | 8:a27db43e9d85 | 23 | |
ciaranom | 8:a27db43e9d85 | 24 | Thread WritingThread; |
ciaranom | 8:a27db43e9d85 | 25 | Thread ReadingThread; |
ciaranom | 6:e883d7b9c790 | 26 | |
ciaranom | 8:a27db43e9d85 | 27 | void Writing() |
okano | 0:ce7a8546502b | 28 | { |
ciaranom | 8:a27db43e9d85 | 29 | fp = fopen("/local/temp3.csv", "a"); //Open the file for writing to |
ciaranom | 8:a27db43e9d85 | 30 | |
ciaranom | 8:a27db43e9d85 | 31 | //TempV = (float)sensor; //Temperature is the sensor value |
ciaranom | 8:a27db43e9d85 | 32 | if (sensor.open()) //Try to open the LM75B |
ciaranom | 8:a27db43e9d85 | 33 | { |
ciaranom | 8:a27db43e9d85 | 34 | printf("Device detected!\n\r"); |
ciaranom | 8:a27db43e9d85 | 35 | } |
ciaranom | 8:a27db43e9d85 | 36 | else |
ciaranom | 8:a27db43e9d85 | 37 | { |
ciaranom | 8:a27db43e9d85 | 38 | error("Device not detected!\n"); |
ciaranom | 8:a27db43e9d85 | 39 | }//end if sensor open |
ciaranom | 8:a27db43e9d85 | 40 | |
ciaranom | 7:d20cc6a9060c | 41 | printf("Measuring temp... \n\r"); //Print confirmation of code running |
ciaranom | 7:d20cc6a9060c | 42 | while (i<cycles) |
ciaranom | 7:d20cc6a9060c | 43 | { |
ciaranom | 8:a27db43e9d85 | 44 | printf("Test"); |
ciaranom | 8:a27db43e9d85 | 45 | //TempV |
ciaranom | 8:a27db43e9d85 | 46 | fprintf(fp, "%.2f\n", (float)sensor.temp()); //print values to file |
ciaranom | 7:d20cc6a9060c | 47 | |
ciaranom | 7:d20cc6a9060c | 48 | i = i+1; // counter |
ciaranom | 7:d20cc6a9060c | 49 | wait(1); //Wait 1 seconds to 1*300s = 5 minutes |
ciaranom | 7:d20cc6a9060c | 50 | |
ciaranom | 8:a27db43e9d85 | 51 | } end while loop for writing function |
ciaranom | 8:a27db43e9d85 | 52 | |
ciaranom | 7:d20cc6a9060c | 53 | fclose (fp);//close the file |
ciaranom | 8:a27db43e9d85 | 54 | |
ciaranom | 8:a27db43e9d85 | 55 | j=1; |
ciaranom | 7:d20cc6a9060c | 56 | } |
ciaranom | 7:d20cc6a9060c | 57 | |
ciaranom | 8:a27db43e9d85 | 58 | void Reading() |
ciaranom | 7:d20cc6a9060c | 59 | { |
ciaranom | 8:a27db43e9d85 | 60 | while (j!=1) |
ciaranom | 6:e883d7b9c790 | 61 | { |
ciaranom | 8:a27db43e9d85 | 62 | //wait for thread one |
ciaranom | 8:a27db43e9d85 | 63 | } |
ciaranom | 7:d20cc6a9060c | 64 | |
ciaranom | 7:d20cc6a9060c | 65 | fp = fopen("/local/temp3.csv", "r"); //Open rfile for reading |
ciaranom | 8:a27db43e9d85 | 66 | |
ciaranom | 8:a27db43e9d85 | 67 | char temps[5]; //Create a string that will contain temerature values from file |
ciaranom | 8:a27db43e9d85 | 68 | //min max total |
ciaranom | 7:d20cc6a9060c | 69 | while (fscanf(fp, "%s", temps)!= EOF) //scan to end of file |
ciaranom | 7:d20cc6a9060c | 70 | { |
ciaranom | 7:d20cc6a9060c | 71 | num = atof(temps); //string to number --> https://os.mbed.com/questions/7171/How-to-convert-String-to-Float-value/ |
ciaranom | 7:d20cc6a9060c | 72 | |
ciaranom | 7:d20cc6a9060c | 73 | if(num > maxtemp) //Calculating max number |
ciaranom | 7:d20cc6a9060c | 74 | { |
ciaranom | 7:d20cc6a9060c | 75 | maxtemp = num; |
ciaranom | 7:d20cc6a9060c | 76 | } |
ciaranom | 7:d20cc6a9060c | 77 | |
ciaranom | 7:d20cc6a9060c | 78 | if(num < mintemp) //Calculating min number |
ciaranom | 7:d20cc6a9060c | 79 | { |
ciaranom | 7:d20cc6a9060c | 80 | mintemp = num; |
ciaranom | 7:d20cc6a9060c | 81 | } |
ciaranom | 7:d20cc6a9060c | 82 | |
ciaranom | 7:d20cc6a9060c | 83 | total = total+ num; |
ciaranom | 7:d20cc6a9060c | 84 | //ThisThread::sleep_for(500); |
ciaranom | 7:d20cc6a9060c | 85 | //Set trigger to end thread |
ciaranom | 8:a27db43e9d85 | 86 | } |
ciaranom | 8:a27db43e9d85 | 87 | j=2; |
ciaranom | 7:d20cc6a9060c | 88 | } |
ciaranom | 7:d20cc6a9060c | 89 | |
ciaranom | 7:d20cc6a9060c | 90 | int main () //Main function *************************************************************************************** |
ciaranom | 7:d20cc6a9060c | 91 | { |
ciaranom | 8:a27db43e9d85 | 92 | WritingThread.start(Writing); //Start first thread |
ciaranom | 8:a27db43e9d85 | 93 | |
ciaranom | 8:a27db43e9d85 | 94 | //ReadingThread.start(Reading); //Start second thread |
ciaranom | 8:a27db43e9d85 | 95 | WritingThread.join(); |
ciaranom | 8:a27db43e9d85 | 96 | //while(j!=1) |
ciaranom | 8:a27db43e9d85 | 97 | //{ |
ciaranom | 8:a27db43e9d85 | 98 | |
ciaranom | 8:a27db43e9d85 | 99 | //} |
ciaranom | 8:a27db43e9d85 | 100 | printf("left Thread"); |
ciaranom | 7:d20cc6a9060c | 101 | |
ciaranom | 7:d20cc6a9060c | 102 | |
ciaranom | 8:a27db43e9d85 | 103 | double avg = total/(cycles); |
ciaranom | 8:a27db43e9d85 | 104 | |
ciaranom | 8:a27db43e9d85 | 105 | printf("Average: %.2f \n\r", avg); |
ciaranom | 8:a27db43e9d85 | 106 | printf("Max: %.2f \n\r", maxtemp); |
ciaranom | 8:a27db43e9d85 | 107 | printf("Min: %.2f \n\r", mintemp); |
ciaranom | 8:a27db43e9d85 | 108 | |
ciaranom | 8:a27db43e9d85 | 109 | fclose(fp); // close file |
ciaranom | 8:a27db43e9d85 | 110 | |
ciaranom | 8:a27db43e9d85 | 111 | //j=j+1 // Controls daily cycle |
ciaranom | 7:d20cc6a9060c | 112 | |
chris | 4:6df97cb10041 | 113 | |
ciaranom | 8:a27db43e9d85 | 114 | } //end main |