This program is an advanced "IoT" thermometer using LM75B component library. It displays the current value to the Serial host in Celcius or Fahrenheit (possible to change using a switch). It also stores an historic and displays it to the user using the LCD screen. Moreover, you can change the orientation of the screen by turning the device, just like a smartphone.
Dependencies: C12832 FXOS8700CQ LM75B mbed
Diff: main.cpp
- Revision:
- 2:5d0c209e5c61
- Parent:
- 1:06713d1b69cf
- Child:
- 3:a4dac093a968
--- a/main.cpp Tue Feb 09 21:41:48 2016 +0000 +++ b/main.cpp Wed Feb 10 01:01:54 2016 +0000 @@ -15,64 +15,67 @@ /* * RGB LED control */ -void rgb_handler() { +void rgb_handler() +{ if (celcius) { r_led = 1.0; g_led = 0.0; } else { r_led = 0.0; g_led = 1.0; - } + } } /* * SW2 handler */ -void sw_handler (void) { +void sw_handler (void) +{ celcius = !celcius; } -int main(void) { +int main(void) +{ host.baud(38400); - host.printf("Hello LeNiglo, from FRDM-K64F!\r\n"); - + host.printf("Hello gtvl2, from FRDM-K64F!\r\nUse POT1 to change the refresh rate, POT2 to change the scale of the graphic and SW2 to change the unit\r\n"); + r_led = 0.0; g_led = 0.0; - b_led = 1.0; - + b_led = 1.0; + int refresh_time = 3000; - ThermalDisplayer *temp_display = new ThermalDisplayer(); - + /* * Thermal unit control */ + ThermalDisplayer *temp_display = new ThermalDisplayer(); rgb_tick.attach(&rgb_handler, 0.001); sw2_int.mode(PullUp); - sw2_int.fall(&sw_handler); - - while (true) { - + sw2_int.fall(&sw_handler); + + while (true) { + /* * Get temperature using LM75B * and display it to LCD screen */ float temperature = lm_temp.read(); temp_display->addTemp(temperature); + temp_display->adjustScale(); temp_display->display(); - - - /* - * Display value to host according to unit choosed with SW2. - * Could have been ternary, but it's easier to read like this + + /* + * Display value to host according to unit choosed with SW2. + * Could have been a ternary, but it's easier to read like this */ if (celcius) { host.printf("Temp: %.2f deg Celcius.\r\n", temperature); } else { host.printf("Temp: %.2f deg Fahrenheit.\r\n", (temperature * 1.80 + 32.00)); } - + /* - * Change refreh_time according to POT1's value + * Change refresh_time according to POT1's value */ refresh_time = (int) (MIN_REFRESH_TIME + (pot * (MAX_REFRESH_TIME - MIN_REFRESH_TIME))); wait_ms(refresh_time);