Data logger program for onboard LM758 temp sensor
Dependencies: mbed C12832 LM75B
main.cpp@7:dc30e0495898, 2020-12-05 (annotated)
- Committer:
- saltire78
- Date:
- Sat Dec 05 16:39:35 2020 +0000
- Revision:
- 7:dc30e0495898
- Parent:
- 6:a198730290d9
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
saltire78 | 6:a198730290d9 | 1 | #include "mbed.h" // mbed header |
saltire78 | 6:a198730290d9 | 2 | #include "LM75B.h" // temp sensor header |
saltire78 | 6:a198730290d9 | 3 | #include "C12832.h" // lcd screen header |
okano | 0:ce7a8546502b | 4 | |
saltire78 | 6:a198730290d9 | 5 | C12832 lcd(p5, p7, p6, p8, p11); // define lcd |
saltire78 | 6:a198730290d9 | 6 | LM75B sensor(p28,p27); // define tem sensor |
saltire78 | 6:a198730290d9 | 7 | Serial pc(USBTX,USBRX); // define serial port |
saltire78 | 6:a198730290d9 | 8 | LocalFileSystem local("local"); // create local file system location |
chris | 5:608f2bf4d3f7 | 9 | |
saltire78 | 6:a198730290d9 | 10 | int seconds = 60; // define timespan variable |
saltire78 | 6:a198730290d9 | 11 | int i=0; // define iteration variable |
saltire78 | 6:a198730290d9 | 12 | float accum = 0.0; // define temporary accumulator float |
saltire78 | 6:a198730290d9 | 13 | int timeDelay = 5; // define sample time range |
okano | 0:ce7a8546502b | 14 | |
saltire78 | 6:a198730290d9 | 15 | |
saltire78 | 6:a198730290d9 | 16 | int main() // start main program |
okano | 0:ce7a8546502b | 17 | { |
okano | 0:ce7a8546502b | 18 | |
chris | 4:6df97cb10041 | 19 | //Try to open the LM75B |
saltire78 | 6:a198730290d9 | 20 | if (sensor.open()) { // test if temp sensor functioning (quickly eliminated if functional) |
saltire78 | 6:a198730290d9 | 21 | lcd.printf("Device detected!\n"); |
saltire78 | 6:a198730290d9 | 22 | |
saltire78 | 6:a198730290d9 | 23 | while (1) { // constant loop |
saltire78 | 6:a198730290d9 | 24 | lcd.cls(); // clear lcd screen |
saltire78 | 6:a198730290d9 | 25 | lcd.locate(0,3); // create lcd home location |
saltire78 | 6:a198730290d9 | 26 | lcd.printf("Temp = %.3f\n\n\r", (float)sensor); // print sensor reading to lcd |
saltire78 | 6:a198730290d9 | 27 | pc.printf("Temp = %.3f degrees C\n\r", (float)sensor); // print sensor reading to pc |
saltire78 | 6:a198730290d9 | 28 | |
saltire78 | 6:a198730290d9 | 29 | float value = (float)sensor; // store sensor reading as usable variable |
saltire78 | 6:a198730290d9 | 30 | accum = accum + value; // begin accumulating sum of values detected |
saltire78 | 6:a198730290d9 | 31 | i = i+1; // iterate iteration variable |
chris | 4:6df97cb10041 | 32 | |
saltire78 | 6:a198730290d9 | 33 | if (i==(seconds/timeDelay)) { // define max number of iterations allowed |
saltire78 | 6:a198730290d9 | 34 | float avgTemp = accum/i ; // create an average value for the sensor readings |
saltire78 | 6:a198730290d9 | 35 | pc.printf("Average Temp for last %d seconds = %.3f degrees C\n\r", avgTemp); // print text of average temp reading to the pc |
saltire78 | 6:a198730290d9 | 36 | |
saltire78 | 6:a198730290d9 | 37 | /* attempt to record an average temperature over a defined period to local memory - in this case every minute. |
saltire78 | 6:a198730290d9 | 38 | FILE*fp = fopen("/local/avgTemp.txt", "a"); // direct to txt file in local memory |
saltire78 | 7:dc30e0495898 | 39 | fprintf(fp,"%.5f\n", avgTemp); // attempt to write average temp to local flash (does not work! - looking for string. Putc also doesn't work) |
saltire78 | 6:a198730290d9 | 40 | fclose(fp); // close the file |
saltire78 | 6:a198730290d9 | 41 | */ |
saltire78 | 6:a198730290d9 | 42 | |
saltire78 | 6:a198730290d9 | 43 | i=0; // reset the iteration variable to start sequence again |
saltire78 | 6:a198730290d9 | 44 | accum=0.0; // reset the temporary accumulator value to start sequence again |
saltire78 | 6:a198730290d9 | 45 | } |
saltire78 | 6:a198730290d9 | 46 | |
saltire78 | 6:a198730290d9 | 47 | wait(timeDelay); // wait for desired time between readings |
chris | 4:6df97cb10041 | 48 | } |
chris | 4:6df97cb10041 | 49 | |
saltire78 | 6:a198730290d9 | 50 | } else { // if temp sensor not functioning throw an error |
chris | 4:6df97cb10041 | 51 | error("Device not detected!\n"); |
chris | 2:9e757151de9b | 52 | } |
okano | 0:ce7a8546502b | 53 | |
saltire78 | 6:a198730290d9 | 54 | |
saltire78 | 6:a198730290d9 | 55 | |
okano | 0:ce7a8546502b | 56 | } |