Gabriel Silva
/
LOG
temp logg
main.cpp@2:bb274878f482, 2020-09-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |