temp logg

Committer:
glsfacom
Date:
Wed Sep 30 09:59:36 2020 -0400
Revision:
2:bb274878f482
Parent:
1:1d6caa653844
Child:
4:0e3e93c26d83
added tmp117 reading

Who changed what in which revision?

UserRevisionLine numberNew contents of line
glsfacom 0:37f8ee544923 1 #include "mbed.h"
glsfacom 0:37f8ee544923 2 #include "SDBlockDevice.h"
glsfacom 0:37f8ee544923 3 #include "FATFileSystem.h"
glsfacom 0:37f8ee544923 4 #include "Mlx90615.h"
glsfacom 2:bb274878f482 5 #include "TMP117.h"
glsfacom 0:37f8ee544923 6
glsfacom 0:37f8ee544923 7 #define LOG_DELAY 5 //seconds
glsfacom 0:37f8ee544923 8
glsfacom 0:37f8ee544923 9 DigitalOut myled(LED1);
glsfacom 0:37f8ee544923 10 RawSerial pc(USBTX, USBRX);
glsfacom 1:1d6caa653844 11 InterruptIn button(p11);
glsfacom 0:37f8ee544923 12
glsfacom 1:1d6caa653844 13 int volatile quit = 0;
glsfacom 0:37f8ee544923 14
glsfacom 1:1d6caa653844 15 void
glsfacom 1:1d6caa653844 16 buttonISR()
glsfacom 1:1d6caa653844 17 {
glsfacom 0:37f8ee544923 18 quit = 1;
glsfacom 0:37f8ee544923 19 }
glsfacom 0:37f8ee544923 20
glsfacom 0:37f8ee544923 21 int
glsfacom 0:37f8ee544923 22 main()
glsfacom 0:37f8ee544923 23 {
glsfacom 0:37f8ee544923 24 // set_time(1595446700 - 3600*4); // set time to 22/07/2020 15:38:20 @CGMS
glsfacom 1:1d6caa653844 25 button.mode(PullUp); // pull up the pin if you are using a switch to GND
glsfacom 1:1d6caa653844 26 button.fall(&buttonISR); // attach interrupt func on falling edge
glsfacom 1:1d6caa653844 27
glsfacom 1:1d6caa653844 28 while (!quit)
glsfacom 1:1d6caa653844 29 {
glsfacom 1:1d6caa653844 30 //Os objetos que bloqueiam sleep(I2C, SPI) não estão declarados, então o sleep no começo deveria funcionar
glsfacom 1:1d6caa653844 31 ThisThread::sleep_for(LOG_DELAY*1000);
glsfacom 0:37f8ee544923 32
glsfacom 0:37f8ee544923 33
glsfacom 1:1d6caa653844 34 Mlx90615 mlx;
glsfacom 2:bb274878f482 35 TMP117 tmp(0x48);
glsfacom 1:1d6caa653844 36 SDBlockDevice blockDevice(MBED_CONF_SD_SPI_MOSI,
glsfacom 1:1d6caa653844 37 MBED_CONF_SD_SPI_MISO,
glsfacom 1:1d6caa653844 38 MBED_CONF_SD_SPI_CLK,
glsfacom 1:1d6caa653844 39 MBED_CONF_SD_SPI_CS);
glsfacom 1:1d6caa653844 40 FATFileSystem fileSystem("fs");
glsfacom 0:37f8ee544923 41
glsfacom 1:1d6caa653844 42 printf("Mounting SDcard...\n");printf("Mounting the filesystem... ");
glsfacom 0:37f8ee544923 43 fflush(stdout);
glsfacom 0:37f8ee544923 44
glsfacom 1:1d6caa653844 45 int err = fileSystem.mount(&blockDevice);
glsfacom 1:1d6caa653844 46 printf("%s\n", (err ? "Fail :(" : "OK"));
glsfacom 1:1d6caa653844 47 if (err)
glsfacom 1:1d6caa653844 48 {
glsfacom 1:1d6caa653844 49 // Reformat if we can't mount the filesystem
glsfacom 1:1d6caa653844 50 // this should only happen on the first boot
glsfacom 1:1d6caa653844 51 printf("No filesystem found, formatting... ");
glsfacom 1:1d6caa653844 52 fflush(stdout);
glsfacom 1:1d6caa653844 53 err = fileSystem.reformat(&blockDevice);
glsfacom 1:1d6caa653844 54 printf("%s\n", (err ? "Fail :(" : "OK"));
glsfacom 1:1d6caa653844 55 if (err) {
glsfacom 1:1d6caa653844 56 error("error: %s (%d)\n", strerror(-err), err);
glsfacom 1:1d6caa653844 57 }
glsfacom 1:1d6caa653844 58 }
glsfacom 1:1d6caa653844 59 printf("SD mount done.\n");
glsfacom 0:37f8ee544923 60
glsfacom 1:1d6caa653844 61 FILE *fp = fopen("/fs/log.txt","a+");
glsfacom 1:1d6caa653844 62 if(fp == nullptr)
glsfacom 1:1d6caa653844 63 {
glsfacom 1:1d6caa653844 64 printf("Could not open file\n");
glsfacom 1:1d6caa653844 65 while(1);
glsfacom 1:1d6caa653844 66 }
glsfacom 0:37f8ee544923 67
glsfacom 1:1d6caa653844 68 myled = 1;
glsfacom 0:37f8ee544923 69 time_t seconds = time(NULL);
glsfacom 2:bb274878f482 70 float mtemp = mlx.read_temperature();
glsfacom 2:bb274878f482 71 float ttemp = tmp.getTemperature();
glsfacom 2:bb274878f482 72 printf ("MLX: %.2f Celsius, TMP: %.2f Celsius, %s", mtemp, ttemp, ctime(&seconds));
glsfacom 2:bb274878f482 73 fprintf (fp, "MLX: %.2f Celsius, TMP: %.2f Celsius, %s", mtemp, ttemp, ctime(&seconds));
glsfacom 0:37f8ee544923 74 fflush(fp);
glsfacom 0:37f8ee544923 75 myled = 0;
glsfacom 1:1d6caa653844 76
glsfacom 1:1d6caa653844 77 // Close the file which also flushes any cached writes
glsfacom 1:1d6caa653844 78 err = fclose(fp);
glsfacom 1:1d6caa653844 79 printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
glsfacom 1:1d6caa653844 80 if (err < 0)
glsfacom 1:1d6caa653844 81 error("error: %s (%d)\n", strerror(errno), -errno);
glsfacom 1:1d6caa653844 82
glsfacom 1:1d6caa653844 83
glsfacom 1:1d6caa653844 84 // Tidy up
glsfacom 1:1d6caa653844 85 printf("Unmounting... ");
glsfacom 1:1d6caa653844 86 fflush(stdout);
glsfacom 1:1d6caa653844 87 err = fileSystem.unmount();
glsfacom 1:1d6caa653844 88 printf("%s\n", (err < 0 ? "Fail :(" : "OK"));
glsfacom 1:1d6caa653844 89 if (err < 0) {
glsfacom 1:1d6caa653844 90 error("error: %s (%d)\n", strerror(-err), err);
glsfacom 1:1d6caa653844 91 }
glsfacom 1:1d6caa653844 92
glsfacom 1:1d6caa653844 93 //os objetos que bloqueiam o sleep(I2C e SPI) são destruídos aqui
glsfacom 0:37f8ee544923 94 }
glsfacom 0:37f8ee544923 95 printf("Goodbye World!\n");
glsfacom 0:37f8ee544923 96 }