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

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);