-

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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "stdio.h"
00002 #include "mbed.h"
00003 #include "HygroClip2.h"
00004 #include "SPI_TFT_ILI9341.h"
00005 #include "Arial12x12.h"
00006 #include "Arial28x28.h"
00007 #include "GraphScale.h"
00008 #include "LineGraph.h"
00009 #include "CommandHandler.h"
00010 #include "Encoder.h"
00011 
00012 //Serial pc(SERIAL_TX, SERIAL_RX);
00013 HygroClip2 sensor(D8,D2);
00014 SPI_TFT_ILI9341 TFT(SPI_MOSI,SPI_MISO,SPI_SCK,SPI_CS,D9,D7);
00015 
00016 const int ColorTemperature =    RGB(0xff,0x37,0x00);
00017 const int ColorHumidity =       RGB(0x00,0xc8,0xff);
00018 const int ColorDewPoint =       RGB(0x00,0xE8,0x59);
00019 const int ColorHumidityAbs =    RGB(0xff,0x44,0xa5);
00020 const float GraphUpdateRateInSeconds = 5;
00021 
00022 
00023 LineGraph<200>  graphTemperature    (&TFT,1,200,200,100,0,100);
00024 LineGraph<200>  graphHumidity       (&TFT,1,200,200,100,0,100);
00025 LineGraph<200>  graphDewPoint       (&TFT,1,200,200,100,0,100);
00026 GraphScale      scale               (&TFT,1,200,200,100,0,100,20);
00027 
00028 //RotaryEncoder encoder(D3, D4);
00029 
00030 CommandHandler commandHandler;
00031 
00032 void drawChangingValues()
00033 {
00034     //TFT.set_font((unsigned char*)Arial28x28);
00035     TFT.locate(10,25);
00036     TFT.foreground(ColorTemperature);
00037     TFT.printf("%.1f*C ",sensor.getTemperature()); // * will be displayed as °
00038     TFT.locate(10,70);
00039     TFT.foreground(ColorHumidity);
00040     TFT.printf("%.1f%%rH ",sensor.getHumidity());
00041     TFT.foreground(ColorHumidityAbs);
00042     TFT.locate(10,115);
00043     TFT.printf("%.3fg/m3 ",sensor.getAbsolutHumidity());
00044     TFT.foreground(ColorDewPoint);
00045     TFT.locate(10,160);
00046     TFT.printf("%.1f*C ",sensor.getDewPoint());    // * will be displayed as °
00047 }
00048 
00049 void drawGraphs()
00050 {
00051     graphTemperature.draw(ColorTemperature);
00052     graphHumidity.draw(ColorHumidity);
00053     graphDewPoint.draw(ColorDewPoint);
00054 }
00055 
00056 int main()
00057 {
00058     //TFT.claim(stdout);      // send stdout to the TFT display
00059     TFT.background(Black);    // set background to black
00060     TFT.foreground(White);    // set chars to white
00061     TFT.cls();                // clear the screen
00062     TFT.set_font((unsigned char*) Arial12x12);  // select the font
00063     TFT.set_orientation(2);
00064 
00065     TFT.locate(10,10);
00066     TFT.printf("Loading...");
00067 
00068     while(!sensor.isDataValid())
00069     {
00070         sensor.update();
00071         wait(.5f);
00072     }
00073 
00074     TFT.locate(10,10);
00075     TFT.printf("Temperatur");
00076     TFT.locate(10,55);
00077     TFT.printf("Luftfeuchtigkeit (relativ)");
00078     TFT.locate(10,100);
00079     TFT.printf("Luftfeuchtigkeit (absolut)");
00080     TFT.locate(10,145);
00081     TFT.printf("Taupunkt");
00082 
00083     scale.draw(White);
00084 
00085     float seconds = 0;
00086     const float waitTime = 1.0f;
00087 
00088     printf("running..\n");
00089 
00090     while(1) {
00091 
00092         sensor.update();
00093 
00094         drawChangingValues();
00095         if (seconds >= GraphUpdateRateInSeconds)
00096         {
00097             seconds = 0;
00098             graphTemperature.addItem(sensor.getTemperature());
00099             graphHumidity.addItem(sensor.getHumidity());
00100             graphDewPoint.addItem(sensor.getDewPoint());
00101             drawGraphs();
00102         }
00103 
00104         seconds += waitTime;
00105         wait(waitTime);
00106     }
00107 }