Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:0ac1b1ae4b2f, 2020-12-01 (annotated)
- 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?
User | Revision | Line number | New 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 |