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 void Display::CreateStringRussian(const string rustext)
Ksenia 0:3f440c2facb0 5 {
Ksenia 0:3f440c2facb0 6 // CHANGED ASCII:
Ksenia 0:3f440c2facb0 7 // 0123456789АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя.,:-°±%<>rHYTICS
Ksenia 0:3f440c2facb0 8 int len = rustext.length();
Ksenia 0:3f440c2facb0 9 int j = 0;
Ksenia 0:3f440c2facb0 10 for (int i = 0; i < len; i ++) {
Ksenia 0:3f440c2facb0 11 uint16_t res = uint8_t(rustext[i]);
Ksenia 0:3f440c2facb0 12 if (res > 0x7F) {
Ksenia 0:3f440c2facb0 13 res = res << 8 | uint8_t(rustext[i + 1]);
Ksenia 0:3f440c2facb0 14 // АБВ ... ноп
Ksenia 0:3f440c2facb0 15 if ((res >= 0xD090) && (res <= 0xD0BF)) {
Ksenia 0:3f440c2facb0 16 char offset = (char)(res - 0xD090);
Ksenia 0:3f440c2facb0 17 russianStr[j] = 32 + 11 + offset;
Ksenia 0:3f440c2facb0 18 // рст ... эюя
Ksenia 0:3f440c2facb0 19 } else if ((res >= 0xD180) && (res <= 0xD18F)) {
Ksenia 0:3f440c2facb0 20 char offset = (char)(res - 0xD180);
Ksenia 0:3f440c2facb0 21 russianStr[j] = 32 + 59 + offset;
Ksenia 0:3f440c2facb0 22 }
Ksenia 0:3f440c2facb0 23 // Degree sign
Ksenia 0:3f440c2facb0 24 else if (res == 0xC2B0) {
Ksenia 0:3f440c2facb0 25 russianStr[j] = 32 + 79;
Ksenia 0:3f440c2facb0 26 }
Ksenia 0:3f440c2facb0 27 // Plus-minus sign
Ksenia 0:3f440c2facb0 28 else if (res == 0xC2B1) {
Ksenia 0:3f440c2facb0 29 russianStr[j] = 32 + 80;
Ksenia 0:3f440c2facb0 30 }
Ksenia 0:3f440c2facb0 31 i++;
Ksenia 0:3f440c2facb0 32 } else {
Ksenia 0:3f440c2facb0 33 // Space
Ksenia 0:3f440c2facb0 34 if (res == 0x20) {
Ksenia 0:3f440c2facb0 35 russianStr[j] = 32;
Ksenia 0:3f440c2facb0 36 }
Ksenia 0:3f440c2facb0 37 // Numbers
Ksenia 0:3f440c2facb0 38 else if (res >= 0x30 && res <= 0x39) {
Ksenia 0:3f440c2facb0 39 russianStr[j] = 32 + 1 + (res - 0x30);
Ksenia 0:3f440c2facb0 40 }
Ksenia 0:3f440c2facb0 41 // .
Ksenia 0:3f440c2facb0 42 else if (res == 0x2E) {
Ksenia 0:3f440c2facb0 43 russianStr[j] = 32 + 75;
Ksenia 0:3f440c2facb0 44 }
Ksenia 0:3f440c2facb0 45 // ,
Ksenia 0:3f440c2facb0 46 else if (res == 0x2C) {
Ksenia 0:3f440c2facb0 47 russianStr[j] = 32 + 76;
Ksenia 0:3f440c2facb0 48 }
Ksenia 0:3f440c2facb0 49 // :
Ksenia 0:3f440c2facb0 50 else if (res == 0x3A) {
Ksenia 0:3f440c2facb0 51 russianStr[j] = 32 + 77;
Ksenia 0:3f440c2facb0 52 }
Ksenia 0:3f440c2facb0 53 // -
Ksenia 0:3f440c2facb0 54 else if (res == 0x2D) {
Ksenia 0:3f440c2facb0 55 russianStr[j] = 32 + 78;
Ksenia 0:3f440c2facb0 56 }
Ksenia 0:3f440c2facb0 57 // %
Ksenia 0:3f440c2facb0 58 else if (res == 0x25) {
Ksenia 0:3f440c2facb0 59 russianStr[j] = 32 + 81;
Ksenia 0:3f440c2facb0 60 }
Ksenia 0:3f440c2facb0 61 // <
Ksenia 0:3f440c2facb0 62 else if (res == 0x3C) {
Ksenia 0:3f440c2facb0 63 russianStr[j] = 32 + 82;
Ksenia 0:3f440c2facb0 64 }
Ksenia 0:3f440c2facb0 65 // >
Ksenia 0:3f440c2facb0 66 else if (res == 0x3C) {
Ksenia 0:3f440c2facb0 67 russianStr[j] = 32 + 83;
Ksenia 0:3f440c2facb0 68 }
Ksenia 0:3f440c2facb0 69 // "r"
Ksenia 0:3f440c2facb0 70 else if (res == 0x72) {
Ksenia 0:3f440c2facb0 71 russianStr[j] = 32 + 84;
Ksenia 0:3f440c2facb0 72 }
Ksenia 0:3f440c2facb0 73 // "H"
Ksenia 0:3f440c2facb0 74 else if (res == 0x48) {
Ksenia 0:3f440c2facb0 75 russianStr[j] = 32 + 85;
Ksenia 0:3f440c2facb0 76 }
Ksenia 0:3f440c2facb0 77 // "Y"
Ksenia 0:3f440c2facb0 78 else if (res == 0x59) {
Ksenia 0:3f440c2facb0 79 russianStr[j] = 32 + 86;
Ksenia 0:3f440c2facb0 80 }
Ksenia 0:3f440c2facb0 81 // "T"
Ksenia 0:3f440c2facb0 82 else if (res == 0x54) {
Ksenia 0:3f440c2facb0 83 russianStr[j] = 32 + 87;
Ksenia 0:3f440c2facb0 84 }
Ksenia 0:3f440c2facb0 85 // "I"
Ksenia 0:3f440c2facb0 86 else if (res == 0x49) {
Ksenia 0:3f440c2facb0 87 russianStr[j] = 32 + 88;
Ksenia 0:3f440c2facb0 88 }
Ksenia 0:3f440c2facb0 89 // "C"
Ksenia 0:3f440c2facb0 90 else if (res == 0x43) {
Ksenia 0:3f440c2facb0 91 russianStr[j] = 32 + 89;
Ksenia 0:3f440c2facb0 92 }
Ksenia 0:3f440c2facb0 93 // "S"
Ksenia 0:3f440c2facb0 94 else if (res == 0x53) {
Ksenia 0:3f440c2facb0 95 russianStr[j] = 32 + 90;
Ksenia 0:3f440c2facb0 96 }
Ksenia 0:3f440c2facb0 97 }
Ksenia 0:3f440c2facb0 98 j++;
Ksenia 0:3f440c2facb0 99 }
Ksenia 0:3f440c2facb0 100 russianStr[j] = 0;
Ksenia 0:3f440c2facb0 101 }
Ksenia 0:3f440c2facb0 102
Ksenia 0:3f440c2facb0 103 /*************************************************************************************************************************/
Ksenia 0:3f440c2facb0 104 void Display::CreateStringHumidity(char *str, uint8_t humidity)
Ksenia 0:3f440c2facb0 105 {
Ksenia 0:3f440c2facb0 106 uint8_t strCnt = 0;
Ksenia 0:3f440c2facb0 107 if (humidity == 100) {
Ksenia 0:3f440c2facb0 108 str[strCnt] = 32 + 2;
Ksenia 0:3f440c2facb0 109 strCnt++;
Ksenia 0:3f440c2facb0 110 }
Ksenia 0:3f440c2facb0 111 if (humidity >= 10) {
Ksenia 0:3f440c2facb0 112 str[strCnt] = 32 + 1 + humidity / 10;
Ksenia 0:3f440c2facb0 113 strCnt++;
Ksenia 0:3f440c2facb0 114 }
Ksenia 0:3f440c2facb0 115 str[strCnt] = 32 + 1 + humidity % 10;
Ksenia 0:3f440c2facb0 116 strCnt++;
Ksenia 0:3f440c2facb0 117 str[strCnt] = 32 + 81;
Ksenia 0:3f440c2facb0 118 strCnt++;
Ksenia 0:3f440c2facb0 119 // str[strCnt] = 32 + 84;
Ksenia 0:3f440c2facb0 120 // strCnt++;
Ksenia 0:3f440c2facb0 121 // str[strCnt] = 32 + 85;
Ksenia 0:3f440c2facb0 122 // strCnt++;
Ksenia 0:3f440c2facb0 123 str[strCnt] = 0;
Ksenia 0:3f440c2facb0 124 }
Ksenia 0:3f440c2facb0 125
Ksenia 0:3f440c2facb0 126 /*************************************************************************************************************************/
Ksenia 0:3f440c2facb0 127 void Display::CreateStringFlow(char *str, float flow)
Ksenia 0:3f440c2facb0 128 {
Ksenia 0:3f440c2facb0 129 int8_t multipedFlow = (int8_t)(flow * 10);
Ksenia 0:3f440c2facb0 130 uint8_t strCnt = 0;
Ksenia 0:3f440c2facb0 131 if (multipedFlow == 100) {
Ksenia 0:3f440c2facb0 132 str[strCnt] = 32 + 2;
Ksenia 0:3f440c2facb0 133 strCnt++;
Ksenia 0:3f440c2facb0 134 }
Ksenia 0:3f440c2facb0 135 if (multipedFlow >= 10) {
Ksenia 0:3f440c2facb0 136 str[strCnt] = 32 + 1 + multipedFlow / 10;
Ksenia 0:3f440c2facb0 137 } else {
Ksenia 0:3f440c2facb0 138 str[strCnt] = 32 + 1;
Ksenia 0:3f440c2facb0 139 }
Ksenia 0:3f440c2facb0 140 strCnt++;
Ksenia 0:3f440c2facb0 141 str[strCnt] = 32 + 75;
Ksenia 0:3f440c2facb0 142 strCnt++;
Ksenia 0:3f440c2facb0 143 str[strCnt] = 32 + 1 + multipedFlow % 10;
Ksenia 0:3f440c2facb0 144 strCnt++;
Ksenia 0:3f440c2facb0 145 str[strCnt] = 32;
Ksenia 0:3f440c2facb0 146 strCnt++;
Ksenia 0:3f440c2facb0 147 str[strCnt] = 32 + 55;
Ksenia 0:3f440c2facb0 148 strCnt++;
Ksenia 0:3f440c2facb0 149 str[strCnt] = 32 + 86;
Ksenia 0:3f440c2facb0 150 strCnt++;
Ksenia 0:3f440c2facb0 151 str[strCnt] = 32 + 60;
Ksenia 0:3f440c2facb0 152 strCnt++;
Ksenia 0:3f440c2facb0 153 str[strCnt] = 0;
Ksenia 0:3f440c2facb0 154 }
Ksenia 0:3f440c2facb0 155
Ksenia 0:3f440c2facb0 156 /*************************************************************************************************************************/
Ksenia 0:3f440c2facb0 157 void Display::CreateStringTemperature(char *str, int8_t temperature)
Ksenia 0:3f440c2facb0 158 {
Ksenia 0:3f440c2facb0 159 int8_t strCnt = 0;
Ksenia 0:3f440c2facb0 160 if (temperature < 0) {
Ksenia 0:3f440c2facb0 161 temperature = -temperature;
Ksenia 0:3f440c2facb0 162 str[strCnt] = 32 + 78;
Ksenia 0:3f440c2facb0 163 strCnt++;
Ksenia 0:3f440c2facb0 164 }
Ksenia 0:3f440c2facb0 165 if (temperature >= 10) {
Ksenia 0:3f440c2facb0 166 str[strCnt] = 32 + 1 + temperature / 10;
Ksenia 0:3f440c2facb0 167 strCnt++;
Ksenia 0:3f440c2facb0 168 }
Ksenia 0:3f440c2facb0 169 str[strCnt] = 32 + 1 + temperature % 10;
Ksenia 0:3f440c2facb0 170 strCnt++;
Ksenia 0:3f440c2facb0 171 str[strCnt] = 32 + 79;
Ksenia 0:3f440c2facb0 172 strCnt++;
Ksenia 0:3f440c2facb0 173 str[strCnt] = 32 + 87;
Ksenia 0:3f440c2facb0 174 strCnt++;
Ksenia 0:3f440c2facb0 175 str[strCnt] = 0;
Ksenia 0:3f440c2facb0 176 }