Measuring air flow, relative humidity & temperature, then showing results at TFT

Dependencies:   FT800_2 HYT mbed

Air flow is measured with FS7 sensor by IST-AG, humidity & temperature are measured by HYT-271 sensor by IST. Graphs displayed it TFT by Riverdi via graphical controller FFT801.

Hardware

For documentation on the FT800 library, please refer to the library pages.

Connection

MCU-board to TFT-module

MCU-board is connected to TFT-module via Break Out Board. You need 6 signals to connect: SCK, MOSI and MISO are connected to a SPI channel, SS is the chip select signal, PD work as powerdown and INT for interrupts from TFT to MCU.

/media/uploads/Ksenia/4_-22-.jpg

You have to connect VDD to BLVDD at Break Out Board if you use the board:

/media/uploads/Ksenia/4_-5-.jpg

MCU-board to HYT sensor

MCU-board is connected to sensor via I2C. Remember to use pull-up resisrors there:

/media/uploads/Ksenia/freshpaint-20-2016.09.16-10.37.03.png

MCU-board to FS7 sensor

MCU-board is connected to sensor via FS flowmodule. FS-flowmodul is a PCB implementing bridge circuit which is necessary for FS7.

https://habrastorage.org/files/b25/056/287/b250562871614b4ca4286af885f1fa24

https://habrastorage.org/files/72d/04c/cac/72d04ccac07b4fcfb436e0ffbac73066

Committer:
Ksenia
Date:
Thu Mar 16 08:58:18 2017 +0000
Revision:
0:3f440c2facb0
Initial Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ksenia 0:3f440c2facb0 1 #include "Display.h"
Ksenia 0:3f440c2facb0 2
Ksenia 0:3f440c2facb0 3 /**************************************************************************************************************************
Ksenia 0:3f440c2facb0 4 ************************** Draw horisontal grid w/o legend ***************************************************
Ksenia 0:3f440c2facb0 5 **************************************************************************************************************************/
Ksenia 0:3f440c2facb0 6 void Display::HorisontalGrid()
Ksenia 0:3f440c2facb0 7 {
Ksenia 0:3f440c2facb0 8 (*_TFT).DL(COLOR_RGB(150, 150, 150));
Ksenia 0:3f440c2facb0 9 for (int i = 0; i <= 200; i += 40) {
Ksenia 0:3f440c2facb0 10 (*_TFT).DL(BEGIN(LINES));
Ksenia 0:3f440c2facb0 11 (*_TFT).DL(LINE_WIDTH(8));
Ksenia 0:3f440c2facb0 12 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 13 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + (POINTS_NUMBER * X_AXIS_MULTIPLIER + 5), my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 14 }
Ksenia 0:3f440c2facb0 15 }
Ksenia 0:3f440c2facb0 16
Ksenia 0:3f440c2facb0 17 /**************************************************************************************************************************
Ksenia 0:3f440c2facb0 18 ************************** Draw horisontal grid for temperature (-10 .. +40) *********************************************
Ksenia 0:3f440c2facb0 19 **************************************************************************************************************************/
Ksenia 0:3f440c2facb0 20 void Display::HorisontalGrid_Temperature()
Ksenia 0:3f440c2facb0 21 {
Ksenia 0:3f440c2facb0 22 (*_TFT).DL(COLOR_RGB(20, 20, 20));
Ksenia 0:3f440c2facb0 23 int8_t gridNumb = -10;
Ksenia 0:3f440c2facb0 24 for (int i = 0; i <= 200; i += 40) {
Ksenia 0:3f440c2facb0 25 (*_TFT).DL(BEGIN(LINES));
Ksenia 0:3f440c2facb0 26 (*_TFT).DL(LINE_WIDTH(8));
Ksenia 0:3f440c2facb0 27 if (gridNumb == 0) {
Ksenia 0:3f440c2facb0 28 (*_TFT).DL(LINE_WIDTH(11));
Ksenia 0:3f440c2facb0 29 }
Ksenia 0:3f440c2facb0 30 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 31 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + (POINTS_NUMBER * X_AXIS_MULTIPLIER + 5), my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 32 if (gridNumb < 0) {
Ksenia 0:3f440c2facb0 33 (*_TFT).Text((POINTS_NUMBER * X_AXIS_MULTIPLIER + 18), my_DispHeight - (i + Y_BOTTOM_OFFSET + 8), 26, 0, "-");
Ksenia 0:3f440c2facb0 34 (*_TFT).Number((POINTS_NUMBER * X_AXIS_MULTIPLIER + 23), my_DispHeight - (i + Y_BOTTOM_OFFSET + 8), 26, 0, (-gridNumb));
Ksenia 0:3f440c2facb0 35 } else {
Ksenia 0:3f440c2facb0 36 (*_TFT).Number((POINTS_NUMBER * X_AXIS_MULTIPLIER + 18), my_DispHeight - (i + Y_BOTTOM_OFFSET + 8), 26, 0, gridNumb);
Ksenia 0:3f440c2facb0 37 }
Ksenia 0:3f440c2facb0 38 gridNumb = gridNumb + 10;
Ksenia 0:3f440c2facb0 39 }
Ksenia 0:3f440c2facb0 40 }
Ksenia 0:3f440c2facb0 41
Ksenia 0:3f440c2facb0 42 /**************************************************************************************************************************
Ksenia 0:3f440c2facb0 43 ************************** Draw horisontal grid for humidity (0 .. 100) ***************************************************
Ksenia 0:3f440c2facb0 44 **************************************************************************************************************************/
Ksenia 0:3f440c2facb0 45 void Display::HorisontalGrid_Humidity()
Ksenia 0:3f440c2facb0 46 {
Ksenia 0:3f440c2facb0 47 (*_TFT).DL(COLOR_RGB(20, 20, 20));
Ksenia 0:3f440c2facb0 48 uint8_t gridNumb = 0;
Ksenia 0:3f440c2facb0 49 for (int i = 0; i <= 200; i += 40) {
Ksenia 0:3f440c2facb0 50 (*_TFT).DL(BEGIN(LINES));
Ksenia 0:3f440c2facb0 51 (*_TFT).DL(LINE_WIDTH(8));
Ksenia 0:3f440c2facb0 52 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 53 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + (POINTS_NUMBER * X_AXIS_MULTIPLIER + 5), my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 54 (*_TFT).Number((POINTS_NUMBER * X_AXIS_MULTIPLIER + 18), my_DispHeight - (i + Y_BOTTOM_OFFSET + 8), 26, 0, gridNumb);
Ksenia 0:3f440c2facb0 55 gridNumb = gridNumb + 20;
Ksenia 0:3f440c2facb0 56 }
Ksenia 0:3f440c2facb0 57 }
Ksenia 0:3f440c2facb0 58
Ksenia 0:3f440c2facb0 59 /**************************************************************************************************************************
Ksenia 0:3f440c2facb0 60 ************************** Draw horisontal grid for flow (0.0 .. 10.0) ***************************************************
Ksenia 0:3f440c2facb0 61 **************************************************************************************************************************/
Ksenia 0:3f440c2facb0 62 void Display::HorisontalGrid_Flow()
Ksenia 0:3f440c2facb0 63 {
Ksenia 0:3f440c2facb0 64 (*_TFT).DL(COLOR_RGB(20, 20, 20));
Ksenia 0:3f440c2facb0 65 uint8_t gridNumb = 0;
Ksenia 0:3f440c2facb0 66 for (int i = 0; i <= 200; i += 40) {
Ksenia 0:3f440c2facb0 67 (*_TFT).DL(BEGIN(LINES));
Ksenia 0:3f440c2facb0 68 (*_TFT).DL(LINE_WIDTH(8));
Ksenia 0:3f440c2facb0 69 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 70 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + (POINTS_NUMBER * X_AXIS_MULTIPLIER + 5), my_DispHeight - (i + Y_BOTTOM_OFFSET), 0, 0));
Ksenia 0:3f440c2facb0 71 (*_TFT).Number((POINTS_NUMBER * X_AXIS_MULTIPLIER + 18), my_DispHeight - (i + Y_BOTTOM_OFFSET + 8), 26, 0, gridNumb);
Ksenia 0:3f440c2facb0 72 gridNumb = gridNumb + 2;
Ksenia 0:3f440c2facb0 73 }
Ksenia 0:3f440c2facb0 74 }
Ksenia 0:3f440c2facb0 75
Ksenia 0:3f440c2facb0 76 /**************************************************************************************************************************
Ksenia 0:3f440c2facb0 77 ************************** Draw vertical grid *****************************************************************************
Ksenia 0:3f440c2facb0 78 **************************************************************************************************************************/
Ksenia 0:3f440c2facb0 79 void Display::VerticalGrid()
Ksenia 0:3f440c2facb0 80 {
Ksenia 0:3f440c2facb0 81 (*_TFT).DL(COLOR_RGB(200, 200, 200));
Ksenia 0:3f440c2facb0 82 for (int i = 0; i <= POINTS_NUMBER; i += 10) {
Ksenia 0:3f440c2facb0 83 (*_TFT).DL(BEGIN(LINES));
Ksenia 0:3f440c2facb0 84 (*_TFT).DL(LINE_WIDTH(8));
Ksenia 0:3f440c2facb0 85 (*_TFT).DL(VERTEX2II(i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET, my_DispHeight - Y_BOTTOM_OFFSET - 200, 0, 0));
Ksenia 0:3f440c2facb0 86 (*_TFT).DL(VERTEX2II(i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET, my_DispHeight - Y_BOTTOM_OFFSET, 0, 0));
Ksenia 0:3f440c2facb0 87 }
Ksenia 0:3f440c2facb0 88 }