Data logger program for onboard LM758 temp sensor

Dependencies:   mbed C12832 LM75B

Committer:
saltire78
Date:
Sat Dec 05 12:59:33 2020 +0000
Revision:
6:a198730290d9
Parent:
5:608f2bf4d3f7
Child:
7:dc30e0495898
.

Who changed what in which revision?

UserRevisionLine numberNew 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 6:a198730290d9 39 fprintf(fp, 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 }