-

Dependencies:   CommandHandler HygroClip2 InterruptBasedEncoder SPI_TFT_ILI9341 mbed-src-no-hal

Revision:
3:3ef8c2d7b1bf
Parent:
2:81fc8f80fdb4
Child:
4:47fd4584df95
--- a/main.cpp	Wed Feb 17 07:30:14 2016 +0000
+++ b/main.cpp	Tue Mar 15 07:46:06 2016 +0000
@@ -6,14 +6,28 @@
 #include "Arial28x28.h"
 #include "GraphScale.h"
 #include "LineGraph.h"
-
+#include "CommandHandler.h"
+#include "Encoder.h"
 
-Serial pc(SERIAL_TX, SERIAL_RX);
+//Serial pc(SERIAL_TX, SERIAL_RX);
 HygroClip2 sensor(D8,D2);
 SPI_TFT_ILI9341 TFT(SPI_MOSI,SPI_MISO,SPI_SCK,SPI_CS,D9,D7);
 
-int ColorTemperature = RGB(0xff,0x37,0x00);
-int ColorHumidity = RGB(0x00,0xc8,0xff);
+const int ColorTemperature =    RGB(0xff,0x37,0x00);
+const int ColorHumidity =       RGB(0x00,0xc8,0xff);
+const int ColorDewPoint =       RGB(0x00,0xE8,0x59);
+const int ColorHumidityAbs =    RGB(0xff,0x44,0xa5);
+const float GraphUpdateRateInSeconds = 5;
+
+
+LineGraph<200>  graphTemperature    (&TFT,1,200,200,100,0,100);
+LineGraph<200>  graphHumidity       (&TFT,1,200,200,100,0,100);
+LineGraph<200>  graphDewPoint       (&TFT,1,200,200,100,0,100);
+GraphScale      scale               (&TFT,1,200,200,100,0,100,20);
+
+//RotaryEncoder encoder(D3, D4);
+
+CommandHandler commandHandler;
 
 void drawChangingValues()
 {
@@ -24,31 +38,39 @@
     TFT.locate(10,70);
     TFT.foreground(ColorHumidity);
     TFT.printf("%.1f%%rH ",sensor.getHumidity());
-    TFT.foreground(RGB(0x00,0xE8,0x59));
+    TFT.foreground(ColorHumidityAbs);
     TFT.locate(10,115);
-    TFT.printf("%.3fg/m3 ",sensor.getAbsolutHumidity());        
+    TFT.printf("%.3fg/m3 ",sensor.getAbsolutHumidity());
+    TFT.foreground(ColorDewPoint);
     TFT.locate(10,160);
     TFT.printf("%.1f*C ",sensor.getDewPoint());    // * will be displayed as °
 }
 
+void drawGraphs()
+{
+    graphTemperature.draw(ColorTemperature);
+    graphHumidity.draw(ColorHumidity);
+    graphDewPoint.draw(ColorDewPoint);
+}
+
 int main()
-{    
-    pc.baud(57600);
-    TFT.claim(stdout);      // send stdout to the TFT display 
+{
+    //TFT.claim(stdout);      // send stdout to the TFT display
     TFT.background(Black);    // set background to black
     TFT.foreground(White);    // set chars to white
     TFT.cls();                // clear the screen
     TFT.set_font((unsigned char*) Arial12x12);  // select the font
     TFT.set_orientation(2);
-    
+
     TFT.locate(10,10);
     TFT.printf("Loading...");
-    while(sensor.getHumidity() != -1.0f)
+
+    while(!sensor.isDataValid())
     {
         sensor.update();
         wait(.5f);
     }
-    
+
     TFT.locate(10,10);
     TFT.printf("Temperatur");
     TFT.locate(10,55);
@@ -57,23 +79,29 @@
     TFT.printf("Luftfeuchtigkeit (absolut)");
     TFT.locate(10,145);
     TFT.printf("Taupunkt");
-    
-    GraphScale scale(&TFT,1,200,200,100,0,100,20);    
-    scale.draw(White);    
-    LineGraph<200> graphTemperature(&TFT,1,200,200,100,0,100);
-    LineGraph<200> graphHumidity(&TFT,1,200,200,100,0,100);
-    
+
+    scale.draw(White);
+
+    float seconds = 0;
+    const float waitTime = 1.0f;
+
+    printf("running..\n");
+
     while(1) {
+
         sensor.update();
-        
+
         drawChangingValues();
-        
-        graphTemperature.addItem(sensor.getTemperature());
-        graphHumidity.addItem(sensor.getHumidity());
-        
-        graphTemperature.draw(ColorTemperature);
-        graphHumidity.draw(ColorHumidity);
-        
-        wait(1);
+        if (seconds >= GraphUpdateRateInSeconds)
+        {
+            seconds = 0;
+            graphTemperature.addItem(sensor.getTemperature());
+            graphHumidity.addItem(sensor.getHumidity());
+            graphDewPoint.addItem(sensor.getDewPoint());
+            drawGraphs();
+        }
+
+        seconds += waitTime;
+        wait(waitTime);
     }
 }