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 "mbed.h"
Ksenia 0:3f440c2facb0 2 #include "FT_Platform.h"
Ksenia 0:3f440c2facb0 3 #include "fonts.h"
Ksenia 0:3f440c2facb0 4 #include <string>
Ksenia 0:3f440c2facb0 5
Ksenia 0:3f440c2facb0 6 #ifndef DISPLAY_H_
Ksenia 0:3f440c2facb0 7 #define DISPLAY_H_
Ksenia 0:3f440c2facb0 8
Ksenia 0:3f440c2facb0 9 #define X_AXIS_MULTIPLIER 6
Ksenia 0:3f440c2facb0 10 #define POINTS_NUMBER 70
Ksenia 0:3f440c2facb0 11
Ksenia 0:3f440c2facb0 12 #define Y_BOTTOM_OFFSET 17
Ksenia 0:3f440c2facb0 13 #define Y_UPPER_OFFSET 10
Ksenia 0:3f440c2facb0 14 #define X_LEFT_OFFSET 10
Ksenia 0:3f440c2facb0 15
Ksenia 0:3f440c2facb0 16 #define BUTTON_1_WIDTH 136
Ksenia 0:3f440c2facb0 17 #define BUTTON_2_WIDTH 145
Ksenia 0:3f440c2facb0 18 #define BUTTON_3_WIDTH 120
Ksenia 0:3f440c2facb0 19 #define BUTTON_HEIGHT 30
Ksenia 0:3f440c2facb0 20
Ksenia 0:3f440c2facb0 21 #define SET_FLOW_COLOR COLOR_RGB(100,46,79)
Ksenia 0:3f440c2facb0 22 #define SET_HUMIDITY_COLOR COLOR_RGB(52,67,94)
Ksenia 0:3f440c2facb0 23 #define SET_TEMPERATURE_COLOR COLOR_RGB(40,66,36)
Ksenia 0:3f440c2facb0 24
Ksenia 0:3f440c2facb0 25 #define SET_FLOW_LOW_COLOR COLOR_RGB(66,40,52)
Ksenia 0:3f440c2facb0 26 #define SET_HUMIDITY_LOW_COLOR COLOR_RGB(33,43,61)
Ksenia 0:3f440c2facb0 27 #define SET_TEMPERATURE_LOW_COLOR COLOR_RGB(20,34,18)
Ksenia 0:3f440c2facb0 28
Ksenia 0:3f440c2facb0 29 #define SET_GRAY_COLOR COLOR_RGB(100,100,100)
Ksenia 0:3f440c2facb0 30 #define SET_WHITE_COLOR COLOR_RGB(255,255,255)
Ksenia 0:3f440c2facb0 31
Ksenia 0:3f440c2facb0 32 #define SET_BACKGROUND_COLOR COLOR_RGB(240,240,240)
Ksenia 0:3f440c2facb0 33
Ksenia 0:3f440c2facb0 34 #define CLEAR_BACKGROUND_COLOR CLEAR_COLOR_RGB(240,240,240)
Ksenia 0:3f440c2facb0 35 #define BACKGROUND_COLOR 0xF0F0F0
Ksenia 0:3f440c2facb0 36
Ksenia 0:3f440c2facb0 37 /**************************************************************************************************************************
Ksenia 0:3f440c2facb0 38 ************************** Defines using for drawing **********************************************************************
Ksenia 0:3f440c2facb0 39 **************************************************************************************************************************/
Ksenia 0:3f440c2facb0 40
Ksenia 0:3f440c2facb0 41 // all tracking touch screen areas
Ksenia 0:3f440c2facb0 42 typedef enum {
Ksenia 0:3f440c2facb0 43 NONE_PRESS,
Ksenia 0:3f440c2facb0 44 SHOW_HUMIDITY,
Ksenia 0:3f440c2facb0 45 SHOW_FLOW,
Ksenia 0:3f440c2facb0 46 SHOW_TEMPERATURE
Ksenia 0:3f440c2facb0 47 } pressValues;
Ksenia 0:3f440c2facb0 48
Ksenia 0:3f440c2facb0 49
Ksenia 0:3f440c2facb0 50 /**************************************************************************************************************************
Ksenia 0:3f440c2facb0 51 ************************** User class for drawing at FT800 ****************************************************************
Ksenia 0:3f440c2facb0 52 **************************************************************************************************************************/
Ksenia 0:3f440c2facb0 53
Ksenia 0:3f440c2facb0 54 class Display
Ksenia 0:3f440c2facb0 55 {
Ksenia 0:3f440c2facb0 56 public:
Ksenia 0:3f440c2facb0 57 // in Display class we use FT800 TFT (definition is available in main.cpp)
Ksenia 0:3f440c2facb0 58 Display(FT800 *TFT) {
Ksenia 0:3f440c2facb0 59 _TFT = TFT;
Ksenia 0:3f440c2facb0 60 }
Ksenia 0:3f440c2facb0 61
Ksenia 0:3f440c2facb0 62 void UpdateDataToDraw(uint8_t humidity, int8_t temperature, float flow);
Ksenia 0:3f440c2facb0 63
Ksenia 0:3f440c2facb0 64 // functions describing all available screens (screens-functions)
Ksenia 0:3f440c2facb0 65 void MainScreen(); // [display.Draw_MainScreen.cpp]
Ksenia 0:3f440c2facb0 66
Ksenia 0:3f440c2facb0 67 // functions using to prepare FT800
Ksenia 0:3f440c2facb0 68 void Calibration(void); // [display.Calibration.cpp]
Ksenia 0:3f440c2facb0 69
Ksenia 0:3f440c2facb0 70 void LoadImagesAndFonts(void); // [display.LoadImagesAndFonts.cpp]
Ksenia 0:3f440c2facb0 71 void HandleAllBitmaps(void); // [display.LoadImagesAndFonts.cpp]
Ksenia 0:3f440c2facb0 72
Ksenia 0:3f440c2facb0 73 // functions for touch screen tracking
Ksenia 0:3f440c2facb0 74 void GetTouch(void); // [display.GetTouch.cpp]
Ksenia 0:3f440c2facb0 75
Ksenia 0:3f440c2facb0 76 uint8_t pressedButton, buttonPressedPrev;
Ksenia 0:3f440c2facb0 77 bool showHumidity, showFlow, showTemperature;
Ksenia 0:3f440c2facb0 78
Ksenia 0:3f440c2facb0 79 private:
Ksenia 0:3f440c2facb0 80 FT800 *_TFT;
Ksenia 0:3f440c2facb0 81
Ksenia 0:3f440c2facb0 82 void StartDL(void); // [display.DisplayListFunctions.cpp]
Ksenia 0:3f440c2facb0 83 void FinishDL(void); // [display.DisplayListFunctions.cpp]
Ksenia 0:3f440c2facb0 84
Ksenia 0:3f440c2facb0 85 void VerticalGrid(void);
Ksenia 0:3f440c2facb0 86 void HorisontalGrid(void);
Ksenia 0:3f440c2facb0 87 void HorisontalGrid_Temperature(void); // [display.Draw_Grids.cpp]
Ksenia 0:3f440c2facb0 88 void HorisontalGrid_Humidity(void); // [display.Draw_Grids.cpp]
Ksenia 0:3f440c2facb0 89 void HorisontalGrid_Flow(void); // [display.Draw_Grids.cpp]
Ksenia 0:3f440c2facb0 90
Ksenia 0:3f440c2facb0 91
Ksenia 0:3f440c2facb0 92 void CreateStringHumidity(char *str, uint8_t humidity); // [display.StringsTransforming.cpp]
Ksenia 0:3f440c2facb0 93 void CreateStringFlow(char *str, float flow); // [display.StringsTransforming.cpp]
Ksenia 0:3f440c2facb0 94 void CreateStringTemperature(char *str, int8_t temperature); // [display.StringsTransforming.cpp]
Ksenia 0:3f440c2facb0 95 void CreateStringRussian(const string rustext); // [display.StringsTransform.cpp]
Ksenia 0:3f440c2facb0 96
Ksenia 0:3f440c2facb0 97 char humidityStr[8], temperatureStr[8], flowStr[8];
Ksenia 0:3f440c2facb0 98 char russianStr[150];
Ksenia 0:3f440c2facb0 99
Ksenia 0:3f440c2facb0 100 uint8_t current_X;
Ksenia 0:3f440c2facb0 101 int humidity_Y[POINTS_NUMBER + 1], temperature_Y[POINTS_NUMBER + 1], flow_Y[POINTS_NUMBER + 1];
Ksenia 0:3f440c2facb0 102 };
Ksenia 0:3f440c2facb0 103
Ksenia 0:3f440c2facb0 104 #endif /* DISPLAY_H_ */