innocent kusinza / Mbed OS mbed-os-example-mbed5-blinkyinnocent

Dependencies:   C12832 LM75B

Committer:
innocentkus
Date:
Tue Dec 01 13:02:35 2020 +0000
Revision:
0:0ac1b1ae4b2f
Child:
1:b5d2f9051fc7
this is the right lib;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
innocentkus 0:0ac1b1ae4b2f 1 #include "mbed.h"
innocentkus 0:0ac1b1ae4b2f 2 #include <cstdio>
innocentkus 0:0ac1b1ae4b2f 3 // main() runs in its own thread in the OS
innocentkus 0:0ac1b1ae4b2f 4 #include "ThisThread.h"
innocentkus 0:0ac1b1ae4b2f 5 #include "mbed.h"
innocentkus 0:0ac1b1ae4b2f 6 #include "C12832.h"
innocentkus 0:0ac1b1ae4b2f 7 #include <stdio.h>
innocentkus 0:0ac1b1ae4b2f 8 #include "LM75B.h"
innocentkus 0:0ac1b1ae4b2f 9 #include "platform/mbed_thread.h"
innocentkus 0:0ac1b1ae4b2f 10 // this solution unsure every thread is accessing the file, the LCD and the LM78B at a diffrent time
innocentkus 0:0ac1b1ae4b2f 11 Thread t2;
innocentkus 0:0ac1b1ae4b2f 12 Thread t1;
innocentkus 0:0ac1b1ae4b2f 13 DigitalOut myled(LED1);
innocentkus 0:0ac1b1ae4b2f 14 LocalFileSystem local("local"); // Create the local filesystem under the name "local"
innocentkus 0:0ac1b1ae4b2f 15 C12832 lcd(p5, p7, p6, p8, p11);
innocentkus 0:0ac1b1ae4b2f 16 LM75B sensor(p28, p27);
innocentkus 0:0ac1b1ae4b2f 17 void thread_function(void const *arg){
innocentkus 0:0ac1b1ae4b2f 18 int sleepwait=atoi((char*)arg);
innocentkus 0:0ac1b1ae4b2f 19 ThisThread::sleep_for(sleepwait*3*1000);
innocentkus 0:0ac1b1ae4b2f 20 FILE *fp = fopen("/local/logtemp.txt", "w");
innocentkus 0:0ac1b1ae4b2f 21 lcd.cls();
innocentkus 0:0ac1b1ae4b2f 22
innocentkus 0:0ac1b1ae4b2f 23 float max=0,min=0,avg=0,current;int count=0;
innocentkus 0:0ac1b1ae4b2f 24 char buffer[200] ;
innocentkus 0:0ac1b1ae4b2f 25 fprintf(fp, "Temperature:\n");
innocentkus 0:0ac1b1ae4b2f 26 fclose(fp);
innocentkus 0:0ac1b1ae4b2f 27 while(1) {
innocentkus 0:0ac1b1ae4b2f 28
innocentkus 0:0ac1b1ae4b2f 29
innocentkus 0:0ac1b1ae4b2f 30 fp = fopen("/local/logtemp.txt", "a");
innocentkus 0:0ac1b1ae4b2f 31 printf("Thread ID%d\n",sleepwait);
innocentkus 0:0ac1b1ae4b2f 32 if (fp!=NULL){
innocentkus 0:0ac1b1ae4b2f 33
innocentkus 0:0ac1b1ae4b2f 34 if (sensor.open()) {
innocentkus 0:0ac1b1ae4b2f 35 printf("Device detected!\n");
innocentkus 0:0ac1b1ae4b2f 36 printf("Temp = %.3f\n", sensor.temp());
innocentkus 0:0ac1b1ae4b2f 37 fprintf (fp,"%.3f\n",sensor.temp());
innocentkus 0:0ac1b1ae4b2f 38
innocentkus 0:0ac1b1ae4b2f 39 } else {
innocentkus 0:0ac1b1ae4b2f 40 error("Device not detected!\n");
innocentkus 0:0ac1b1ae4b2f 41 }
innocentkus 0:0ac1b1ae4b2f 42 fclose (fp);
innocentkus 0:0ac1b1ae4b2f 43 }
innocentkus 0:0ac1b1ae4b2f 44
innocentkus 0:0ac1b1ae4b2f 45
innocentkus 0:0ac1b1ae4b2f 46 fp = fopen("/local/logtemp.txt", "r");
innocentkus 0:0ac1b1ae4b2f 47 max=0;min=0;avg=0;count=0;
innocentkus 0:0ac1b1ae4b2f 48 if(fp) {
innocentkus 0:0ac1b1ae4b2f 49 while( fgets(buffer,200,fp) ) {
innocentkus 0:0ac1b1ae4b2f 50 if(count==0){
innocentkus 0:0ac1b1ae4b2f 51 printf("reading from file %s\n",buffer);
innocentkus 0:0ac1b1ae4b2f 52 count++;
innocentkus 0:0ac1b1ae4b2f 53 continue;
innocentkus 0:0ac1b1ae4b2f 54 }
innocentkus 0:0ac1b1ae4b2f 55 // printf("Reading from file %s\n",buffer);
innocentkus 0:0ac1b1ae4b2f 56 count++;
innocentkus 0:0ac1b1ae4b2f 57 current=atof(buffer);
innocentkus 0:0ac1b1ae4b2f 58 if(current>=max)
innocentkus 0:0ac1b1ae4b2f 59 max=current;
innocentkus 0:0ac1b1ae4b2f 60 if(current<=min)
innocentkus 0:0ac1b1ae4b2f 61 min=current;
innocentkus 0:0ac1b1ae4b2f 62 avg+=current;
innocentkus 0:0ac1b1ae4b2f 63 }
innocentkus 0:0ac1b1ae4b2f 64 if(count==0)
innocentkus 0:0ac1b1ae4b2f 65 count=1;
innocentkus 0:0ac1b1ae4b2f 66 avg=avg/count;
innocentkus 0:0ac1b1ae4b2f 67 printf("Minimum Temp = %.3f\n", min);
innocentkus 0:0ac1b1ae4b2f 68 printf("Maximum Temp = %.3f\n", max);
innocentkus 0:0ac1b1ae4b2f 69 printf("Average Temp = %.3f\n", avg);
innocentkus 0:0ac1b1ae4b2f 70 lcd.locate(0,1);
innocentkus 0:0ac1b1ae4b2f 71 lcd.printf("Minimum Temp = %.3f", min);
innocentkus 0:0ac1b1ae4b2f 72 lcd.locate(0,10);
innocentkus 0:0ac1b1ae4b2f 73 lcd.printf("Maximum Temp = %.3f", max);
innocentkus 0:0ac1b1ae4b2f 74 lcd.locate(0,20);
innocentkus 0:0ac1b1ae4b2f 75 lcd.printf("Average Temp = %.3f", avg);
innocentkus 0:0ac1b1ae4b2f 76 fclose(fp);
innocentkus 0:0ac1b1ae4b2f 77 fclose(fp);
innocentkus 0:0ac1b1ae4b2f 78 }
innocentkus 0:0ac1b1ae4b2f 79
innocentkus 0:0ac1b1ae4b2f 80
innocentkus 0:0ac1b1ae4b2f 81
innocentkus 0:0ac1b1ae4b2f 82 ThisThread::sleep_for(10000);
innocentkus 0:0ac1b1ae4b2f 83 }
innocentkus 0:0ac1b1ae4b2f 84
innocentkus 0:0ac1b1ae4b2f 85 }
innocentkus 0:0ac1b1ae4b2f 86
innocentkus 0:0ac1b1ae4b2f 87 int main() {
innocentkus 0:0ac1b1ae4b2f 88 t1.start(callback(thread_function,(void*)"2"));
innocentkus 0:0ac1b1ae4b2f 89 t2.start(callback(thread_function,(void*)"3"));
innocentkus 0:0ac1b1ae4b2f 90 thread_function((void*)"1");
innocentkus 0:0ac1b1ae4b2f 91 // this solution unsure every thread is accessing the file, the LCD and the LM78B at a diffrent time
innocentkus 0:0ac1b1ae4b2f 92
innocentkus 0:0ac1b1ae4b2f 93
innocentkus 0:0ac1b1ae4b2f 94 }
innocentkus 0:0ac1b1ae4b2f 95
innocentkus 0:0ac1b1ae4b2f 96