-
Dependencies: CommandHandler HygroClip2 InterruptBasedEncoder SPI_TFT_ILI9341 mbed-src-no-hal
main.cpp@4:47fd4584df95, 2016-04-05 (annotated)
- Committer:
- wolfsberger
- Date:
- Tue Apr 05 14:00:51 2016 +0000
- Revision:
- 4:47fd4584df95
- Parent:
- 3:3ef8c2d7b1bf
-
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wolfsberger | 0:9ed7238d49e2 | 1 | #include "stdio.h" |
wolfsberger | 0:9ed7238d49e2 | 2 | #include "mbed.h" |
wolfsberger | 0:9ed7238d49e2 | 3 | #include "HygroClip2.h" |
wolfsberger | 0:9ed7238d49e2 | 4 | #include "SPI_TFT_ILI9341.h" |
wolfsberger | 0:9ed7238d49e2 | 5 | #include "Arial12x12.h" |
wolfsberger | 0:9ed7238d49e2 | 6 | #include "Arial28x28.h" |
wolfsberger | 0:9ed7238d49e2 | 7 | #include "GraphScale.h" |
wolfsberger | 0:9ed7238d49e2 | 8 | #include "LineGraph.h" |
wolfsberger | 3:3ef8c2d7b1bf | 9 | #include "CommandHandler.h" |
wolfsberger | 3:3ef8c2d7b1bf | 10 | #include "Encoder.h" |
wolfsberger | 0:9ed7238d49e2 | 11 | |
wolfsberger | 3:3ef8c2d7b1bf | 12 | //Serial pc(SERIAL_TX, SERIAL_RX); |
wolfsberger | 0:9ed7238d49e2 | 13 | HygroClip2 sensor(D8,D2); |
wolfsberger | 0:9ed7238d49e2 | 14 | SPI_TFT_ILI9341 TFT(SPI_MOSI,SPI_MISO,SPI_SCK,SPI_CS,D9,D7); |
wolfsberger | 0:9ed7238d49e2 | 15 | |
wolfsberger | 3:3ef8c2d7b1bf | 16 | const int ColorTemperature = RGB(0xff,0x37,0x00); |
wolfsberger | 3:3ef8c2d7b1bf | 17 | const int ColorHumidity = RGB(0x00,0xc8,0xff); |
wolfsberger | 3:3ef8c2d7b1bf | 18 | const int ColorDewPoint = RGB(0x00,0xE8,0x59); |
wolfsberger | 3:3ef8c2d7b1bf | 19 | const int ColorHumidityAbs = RGB(0xff,0x44,0xa5); |
wolfsberger | 3:3ef8c2d7b1bf | 20 | const float GraphUpdateRateInSeconds = 5; |
wolfsberger | 3:3ef8c2d7b1bf | 21 | |
wolfsberger | 3:3ef8c2d7b1bf | 22 | |
wolfsberger | 3:3ef8c2d7b1bf | 23 | LineGraph<200> graphTemperature (&TFT,1,200,200,100,0,100); |
wolfsberger | 3:3ef8c2d7b1bf | 24 | LineGraph<200> graphHumidity (&TFT,1,200,200,100,0,100); |
wolfsberger | 3:3ef8c2d7b1bf | 25 | LineGraph<200> graphDewPoint (&TFT,1,200,200,100,0,100); |
wolfsberger | 3:3ef8c2d7b1bf | 26 | GraphScale scale (&TFT,1,200,200,100,0,100,20); |
wolfsberger | 3:3ef8c2d7b1bf | 27 | |
wolfsberger | 3:3ef8c2d7b1bf | 28 | //RotaryEncoder encoder(D3, D4); |
wolfsberger | 3:3ef8c2d7b1bf | 29 | |
wolfsberger | 3:3ef8c2d7b1bf | 30 | CommandHandler commandHandler; |
wolfsberger | 0:9ed7238d49e2 | 31 | |
wolfsberger | 2:81fc8f80fdb4 | 32 | void drawChangingValues() |
wolfsberger | 2:81fc8f80fdb4 | 33 | { |
wolfsberger | 4:47fd4584df95 | 34 | //TFT.set_font((unsigned char*)Arial28x28); |
wolfsberger | 2:81fc8f80fdb4 | 35 | TFT.locate(10,25); |
wolfsberger | 2:81fc8f80fdb4 | 36 | TFT.foreground(ColorTemperature); |
wolfsberger | 2:81fc8f80fdb4 | 37 | TFT.printf("%.1f*C ",sensor.getTemperature()); // * will be displayed as ° |
wolfsberger | 2:81fc8f80fdb4 | 38 | TFT.locate(10,70); |
wolfsberger | 2:81fc8f80fdb4 | 39 | TFT.foreground(ColorHumidity); |
wolfsberger | 2:81fc8f80fdb4 | 40 | TFT.printf("%.1f%%rH ",sensor.getHumidity()); |
wolfsberger | 3:3ef8c2d7b1bf | 41 | TFT.foreground(ColorHumidityAbs); |
wolfsberger | 2:81fc8f80fdb4 | 42 | TFT.locate(10,115); |
wolfsberger | 3:3ef8c2d7b1bf | 43 | TFT.printf("%.3fg/m3 ",sensor.getAbsolutHumidity()); |
wolfsberger | 3:3ef8c2d7b1bf | 44 | TFT.foreground(ColorDewPoint); |
wolfsberger | 2:81fc8f80fdb4 | 45 | TFT.locate(10,160); |
wolfsberger | 2:81fc8f80fdb4 | 46 | TFT.printf("%.1f*C ",sensor.getDewPoint()); // * will be displayed as ° |
wolfsberger | 2:81fc8f80fdb4 | 47 | } |
wolfsberger | 2:81fc8f80fdb4 | 48 | |
wolfsberger | 3:3ef8c2d7b1bf | 49 | void drawGraphs() |
wolfsberger | 3:3ef8c2d7b1bf | 50 | { |
wolfsberger | 3:3ef8c2d7b1bf | 51 | graphTemperature.draw(ColorTemperature); |
wolfsberger | 3:3ef8c2d7b1bf | 52 | graphHumidity.draw(ColorHumidity); |
wolfsberger | 3:3ef8c2d7b1bf | 53 | graphDewPoint.draw(ColorDewPoint); |
wolfsberger | 3:3ef8c2d7b1bf | 54 | } |
wolfsberger | 3:3ef8c2d7b1bf | 55 | |
wolfsberger | 0:9ed7238d49e2 | 56 | int main() |
wolfsberger | 3:3ef8c2d7b1bf | 57 | { |
wolfsberger | 3:3ef8c2d7b1bf | 58 | //TFT.claim(stdout); // send stdout to the TFT display |
wolfsberger | 0:9ed7238d49e2 | 59 | TFT.background(Black); // set background to black |
wolfsberger | 0:9ed7238d49e2 | 60 | TFT.foreground(White); // set chars to white |
wolfsberger | 0:9ed7238d49e2 | 61 | TFT.cls(); // clear the screen |
wolfsberger | 0:9ed7238d49e2 | 62 | TFT.set_font((unsigned char*) Arial12x12); // select the font |
wolfsberger | 0:9ed7238d49e2 | 63 | TFT.set_orientation(2); |
wolfsberger | 3:3ef8c2d7b1bf | 64 | |
wolfsberger | 0:9ed7238d49e2 | 65 | TFT.locate(10,10); |
wolfsberger | 0:9ed7238d49e2 | 66 | TFT.printf("Loading..."); |
wolfsberger | 3:3ef8c2d7b1bf | 67 | |
wolfsberger | 3:3ef8c2d7b1bf | 68 | while(!sensor.isDataValid()) |
wolfsberger | 0:9ed7238d49e2 | 69 | { |
wolfsberger | 0:9ed7238d49e2 | 70 | sensor.update(); |
wolfsberger | 0:9ed7238d49e2 | 71 | wait(.5f); |
wolfsberger | 0:9ed7238d49e2 | 72 | } |
wolfsberger | 3:3ef8c2d7b1bf | 73 | |
wolfsberger | 0:9ed7238d49e2 | 74 | TFT.locate(10,10); |
wolfsberger | 2:81fc8f80fdb4 | 75 | TFT.printf("Temperatur"); |
wolfsberger | 0:9ed7238d49e2 | 76 | TFT.locate(10,55); |
wolfsberger | 2:81fc8f80fdb4 | 77 | TFT.printf("Luftfeuchtigkeit (relativ)"); |
wolfsberger | 0:9ed7238d49e2 | 78 | TFT.locate(10,100); |
wolfsberger | 2:81fc8f80fdb4 | 79 | TFT.printf("Luftfeuchtigkeit (absolut)"); |
wolfsberger | 0:9ed7238d49e2 | 80 | TFT.locate(10,145); |
wolfsberger | 2:81fc8f80fdb4 | 81 | TFT.printf("Taupunkt"); |
wolfsberger | 3:3ef8c2d7b1bf | 82 | |
wolfsberger | 3:3ef8c2d7b1bf | 83 | scale.draw(White); |
wolfsberger | 3:3ef8c2d7b1bf | 84 | |
wolfsberger | 3:3ef8c2d7b1bf | 85 | float seconds = 0; |
wolfsberger | 3:3ef8c2d7b1bf | 86 | const float waitTime = 1.0f; |
wolfsberger | 3:3ef8c2d7b1bf | 87 | |
wolfsberger | 3:3ef8c2d7b1bf | 88 | printf("running..\n"); |
wolfsberger | 3:3ef8c2d7b1bf | 89 | |
wolfsberger | 0:9ed7238d49e2 | 90 | while(1) { |
wolfsberger | 3:3ef8c2d7b1bf | 91 | |
wolfsberger | 0:9ed7238d49e2 | 92 | sensor.update(); |
wolfsberger | 3:3ef8c2d7b1bf | 93 | |
wolfsberger | 2:81fc8f80fdb4 | 94 | drawChangingValues(); |
wolfsberger | 3:3ef8c2d7b1bf | 95 | if (seconds >= GraphUpdateRateInSeconds) |
wolfsberger | 3:3ef8c2d7b1bf | 96 | { |
wolfsberger | 3:3ef8c2d7b1bf | 97 | seconds = 0; |
wolfsberger | 3:3ef8c2d7b1bf | 98 | graphTemperature.addItem(sensor.getTemperature()); |
wolfsberger | 3:3ef8c2d7b1bf | 99 | graphHumidity.addItem(sensor.getHumidity()); |
wolfsberger | 3:3ef8c2d7b1bf | 100 | graphDewPoint.addItem(sensor.getDewPoint()); |
wolfsberger | 3:3ef8c2d7b1bf | 101 | drawGraphs(); |
wolfsberger | 3:3ef8c2d7b1bf | 102 | } |
wolfsberger | 3:3ef8c2d7b1bf | 103 | |
wolfsberger | 3:3ef8c2d7b1bf | 104 | seconds += waitTime; |
wolfsberger | 3:3ef8c2d7b1bf | 105 | wait(waitTime); |
wolfsberger | 0:9ed7238d49e2 | 106 | } |
wolfsberger | 0:9ed7238d49e2 | 107 | } |