HYT humidity & temp sensor polling / showing received data at TFT with capacitive touchscreen

Dependencies:   FT800_2 HYT mbed

HYT humidity & temperature sensor: polling and showing data at TFT via graphical controller FT800/FT801.

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

Подробнее в статьях Как перестать бояться и полюбить mbed [Часть 1 - 5] на https://habrahabr.ru/users/uuuulala/topics/

Committer:
Ksenia
Date:
Fri Oct 07 11:08:19 2016 +0000
Revision:
0:5d3131d1b142
Initial commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ksenia 0:5d3131d1b142 1 #include "mbed.h"
Ksenia 0:5d3131d1b142 2 #include "FT_Platform.h"
Ksenia 0:5d3131d1b142 3 #include "pictures.h"
Ksenia 0:5d3131d1b142 4 #include "statistics.h"
Ksenia 0:5d3131d1b142 5 #include <string>
Ksenia 0:5d3131d1b142 6
Ksenia 0:5d3131d1b142 7 #ifndef DISPLAY_H_
Ksenia 0:5d3131d1b142 8 #define DISPLAY_H_
Ksenia 0:5d3131d1b142 9
Ksenia 0:5d3131d1b142 10 /**************************************************************************************************************************
Ksenia 0:5d3131d1b142 11 ************************** Defines using for drawing **********************************************************************
Ksenia 0:5d3131d1b142 12 **************************************************************************************************************************/
Ksenia 0:5d3131d1b142 13
Ksenia 0:5d3131d1b142 14 // all tracking touch screen areas
Ksenia 0:5d3131d1b142 15 typedef enum {
Ksenia 0:5d3131d1b142 16 NONE_PRESS,
Ksenia 0:5d3131d1b142 17 CURR_TEMP_PRESS,
Ksenia 0:5d3131d1b142 18 CURR_HUM_PRESS,
Ksenia 0:5d3131d1b142 19 STAT_TEMP_PRESS,
Ksenia 0:5d3131d1b142 20 STAT_HUM_PRESS,
Ksenia 0:5d3131d1b142 21 ZONE_1_PRESS,
Ksenia 0:5d3131d1b142 22 ZONE_2_PRESS,
Ksenia 0:5d3131d1b142 23 ZONE_3_PRESS,
Ksenia 0:5d3131d1b142 24 ZONE_4_PRESS,
Ksenia 0:5d3131d1b142 25 ZONE_5_PRESS,
Ksenia 0:5d3131d1b142 26 ZONE_6_PRESS,
Ksenia 0:5d3131d1b142 27 ZONE_7_PRESS,
Ksenia 0:5d3131d1b142 28 ZONE_8_PRESS,
Ksenia 0:5d3131d1b142 29 ABOUT_PRESS,
Ksenia 0:5d3131d1b142 30 MENU_PRESS,
Ksenia 0:5d3131d1b142 31 } pressValues;
Ksenia 0:5d3131d1b142 32
Ksenia 0:5d3131d1b142 33 // all screens available in app
Ksenia 0:5d3131d1b142 34 typedef enum {
Ksenia 0:5d3131d1b142 35 MENU_SCREEN,
Ksenia 0:5d3131d1b142 36 CURR_HUM_SCREEN,
Ksenia 0:5d3131d1b142 37 CURR_TEMP_SCREEN,
Ksenia 0:5d3131d1b142 38 ABOUT_SCREEN,
Ksenia 0:5d3131d1b142 39 HUM_24HRS_SCREEN,
Ksenia 0:5d3131d1b142 40 HUM_3HRS_SCREEN,
Ksenia 0:5d3131d1b142 41 HUM_30MIN_SCREEN,
Ksenia 0:5d3131d1b142 42 TEMP_24HRS_SCREEN,
Ksenia 0:5d3131d1b142 43 TEMP_3HRS_SCREEN,
Ksenia 0:5d3131d1b142 44 TEMP_30MIN_SCREEN
Ksenia 0:5d3131d1b142 45 } screenValues;
Ksenia 0:5d3131d1b142 46
Ksenia 0:5d3131d1b142 47
Ksenia 0:5d3131d1b142 48 /**************************************************************************************************************************
Ksenia 0:5d3131d1b142 49 ************************** User class for drawing at FT800 ****************************************************************
Ksenia 0:5d3131d1b142 50 **************************************************************************************************************************/
Ksenia 0:5d3131d1b142 51
Ksenia 0:5d3131d1b142 52 class Display
Ksenia 0:5d3131d1b142 53 {
Ksenia 0:5d3131d1b142 54 public:
Ksenia 0:5d3131d1b142 55 // in Display class we use FT800 TFT (definition is available in main.cpp)
Ksenia 0:5d3131d1b142 56 Display(FT800 *TFT) {
Ksenia 0:5d3131d1b142 57 _TFT = TFT;
Ksenia 0:5d3131d1b142 58 }
Ksenia 0:5d3131d1b142 59
Ksenia 0:5d3131d1b142 60 // functions describing all available screens (screens-functions)
Ksenia 0:5d3131d1b142 61 void MainMenu(float humidity, float temperature); // [display.Draw_MainMenu.cpp]
Ksenia 0:5d3131d1b142 62 void CurrentHumidity(float humidity); // [display.Draw_CurrentValues.cpp]
Ksenia 0:5d3131d1b142 63 void CurrentTemperature(float temperature); // [display.Draw_CurrentValues.cpp]
Ksenia 0:5d3131d1b142 64 void StatHumidity_24hrs(volatile uint64_t seconds, short int statistics24hrs[3][288],
Ksenia 0:5d3131d1b142 65 uint64_t gridSecondsOffset); // [display.Draw_24hrsStatistics.cpp]
Ksenia 0:5d3131d1b142 66 void StatTemperature_24hrs(volatile uint64_t seconds, short int statistics24hrs[3][288],
Ksenia 0:5d3131d1b142 67 uint64_t gridSecondsOffset); // [display.Draw_24hrsStatistics.cpp]
Ksenia 0:5d3131d1b142 68 void StatHumidity_3hrs(volatile uint64_t seconds, short int statistics24hrs[3][288],
Ksenia 0:5d3131d1b142 69 uint64_t gridSecondsOffset); // [display.Draw_3hrsStatistics.cpp]
Ksenia 0:5d3131d1b142 70 void StatTemperature_3hrs(volatile uint64_t seconds, short int statistics24hrs[3][288],
Ksenia 0:5d3131d1b142 71 uint64_t gridSecondsOffset); // [display.Draw_3hrsStatistics.cpp]
Ksenia 0:5d3131d1b142 72 void StatHumidity_30min(volatile uint64_t seconds, short int statistics24hrs[3][288],
Ksenia 0:5d3131d1b142 73 uint64_t gridSecondsOffset); // [display.Draw_30minStatistics.cpp]
Ksenia 0:5d3131d1b142 74 void StatTemperature_30min(volatile uint64_t seconds, short int statistics24hrs[3][288],
Ksenia 0:5d3131d1b142 75 uint64_t gridSecondsOffset); // [display.Draw_30minStatistics.cpp]
Ksenia 0:5d3131d1b142 76 void AboutSensor(void); // [display.Draw_AboutSensor.cpp]
Ksenia 0:5d3131d1b142 77
Ksenia 0:5d3131d1b142 78 // functions using to prepare FT800 / FT801
Ksenia 0:5d3131d1b142 79 void LoadImagesAndFonts(void); // [display.LoadImagesAndFonts.cpp]
Ksenia 0:5d3131d1b142 80 void HandleAllBitmaps(void); // [display.LoadImagesAndFonts.cpp]
Ksenia 0:5d3131d1b142 81 void Calibration(void); // [display.Calibration.cpp]
Ksenia 0:5d3131d1b142 82
Ksenia 0:5d3131d1b142 83 // function for touchscreen tracking
Ksenia 0:5d3131d1b142 84 char GetTouch(void); // [display.GetTouch.cpp]
Ksenia 0:5d3131d1b142 85
Ksenia 0:5d3131d1b142 86 // variables using for navigation between screens
Ksenia 0:5d3131d1b142 87 char pressedButton;
Ksenia 0:5d3131d1b142 88 char activeScreen;
Ksenia 0:5d3131d1b142 89 char timePoint3hrs, timePoint30min;
Ksenia 0:5d3131d1b142 90
Ksenia 0:5d3131d1b142 91 private:
Ksenia 0:5d3131d1b142 92 FT800 *_TFT;
Ksenia 0:5d3131d1b142 93
Ksenia 0:5d3131d1b142 94 // For start and end every display list (every screen)
Ksenia 0:5d3131d1b142 95 void StartDL(void); // [display.DisplayListFunctions.cpp]
Ksenia 0:5d3131d1b142 96 void FinishDL(void); // [display.DisplayListFunctions.cpp]
Ksenia 0:5d3131d1b142 97
Ksenia 0:5d3131d1b142 98 // Utility function for drawing
Ksenia 0:5d3131d1b142 99 void MainMenuReference(void); // [display.Draw_MainMenuReference.cpp]
Ksenia 0:5d3131d1b142 100 void TimeSinceTurnOn(uint64_t seconds); // [display.Draw_TimeSinceTurnOn.cpp]
Ksenia 0:5d3131d1b142 101 void HorisontalGrid_Current_Temperature(void); // [display.Draw_Grids.cpp]
Ksenia 0:5d3131d1b142 102 void HorisontalGrid_Current_Humidity(void); // [display.Draw_Grids.cpp]
Ksenia 0:5d3131d1b142 103 void HorisontalGrid_Statistics_Temperature(void); // [display.Draw_Grids.cpp]
Ksenia 0:5d3131d1b142 104 void HorisontalGrid_Statistics_Humidity(void); // [display.Draw_Grids.cpp]
Ksenia 0:5d3131d1b142 105 void VerticalGrid3hrs(uint64_t gridSecondsOffset); // [display.Draw_Grids.cpp]
Ksenia 0:5d3131d1b142 106 void VerticalGrid24hrs(uint64_t gridSecondsOffset); // [display.Draw_Grids.cpp]
Ksenia 0:5d3131d1b142 107 void VerticalGrid30min(uint64_t gridSecondsOffset); // [display.Draw_Grids.cpp]
Ksenia 0:5d3131d1b142 108
Ksenia 0:5d3131d1b142 109 // String operations
Ksenia 0:5d3131d1b142 110 char CreateStringTempHum(char *str, float number, bool isTemp); // [display.StringsTransform.cpp]
Ksenia 0:5d3131d1b142 111 void CreateStringMultipliedTemp(char *str, short int number); // [display.StringsTransform.cpp]
Ksenia 0:5d3131d1b142 112 void CreateStringTime(char *str, uint32_t numberOfSeconds); // [display.StringsTransform.cpp]
Ksenia 0:5d3131d1b142 113
Ksenia 0:5d3131d1b142 114 // String variables
Ksenia 0:5d3131d1b142 115 char humidityStr[8], temperatureStr[8];
Ksenia 0:5d3131d1b142 116 char timeStr[9], gridTimeStr[9];
Ksenia 0:5d3131d1b142 117
Ksenia 0:5d3131d1b142 118 // Variables for managing graphs with current temperature or humidity
Ksenia 0:5d3131d1b142 119 char currentHumidity_X, currentTemperature_X;
Ksenia 0:5d3131d1b142 120 char currentHumidity_Y[68], currentTemperature_Y[68];
Ksenia 0:5d3131d1b142 121 };
Ksenia 0:5d3131d1b142 122
Ksenia 0:5d3131d1b142 123 #endif /* SCREENS_H_ */