Very simple SW polling HYT humidity & temp sensor and show received data at TFT [NO TOUCHSCREEN USED]

Dependencies:   FT800_2 HYT mbed

There is only one screen with relative humidity and temperature data received from HYT sensor, no touchscreen functionality.

https://habrastorage.org/files/ed6/387/b63/ed6387b630ca480b8e9212c58e35f11b

Hardware

For documentation on the HYT and FT800 libraries, please refer to the respective 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

Photo

/media/uploads/Ksenia/----------_.png

Проект для статьи "Как перестать бояться и полюбить mbed.[Часть 3]"

См. https://habrahabr.ru/users/uuuulala/topics/

Committer:
Ksenia
Date:
Tue Sep 20 14:00:46 2016 +0000
Revision:
0:580de84e379c
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ksenia 0:580de84e379c 1 #include "mbed.h"
Ksenia 0:580de84e379c 2 #include "FT_Platform.h"
Ksenia 0:580de84e379c 3 #include "HYT.h"
Ksenia 0:580de84e379c 4
Ksenia 0:580de84e379c 5 /***********************************************************************************************************************/
Ksenia 0:580de84e379c 6 /* Declare and initialize FTDI FT800 controller according to SPI lines connected */
Ksenia 0:580de84e379c 7
Ksenia 0:580de84e379c 8 //// SLSTK3400A
Ksenia 0:580de84e379c 9 HYT SENSOR (PD6, PD7); // sda, scl
Ksenia 0:580de84e379c 10 FT800 TFT (PE10, PE11, PE12, PE13, PB11, PD4); // mosi, miso, sck, ss, int, pd
Ksenia 0:580de84e379c 11
Ksenia 0:580de84e379c 12 //// WIZwiki-W7500P
Ksenia 0:580de84e379c 13 //HYT SENSOR (D14, D15); // sda, scl
Ksenia 0:580de84e379c 14 //FT800 TFT (D11, D12, D13, D10, D9, D8); // mosi, miso, sck, ss, int, pd
Ksenia 0:580de84e379c 15
Ksenia 0:580de84e379c 16 // ATSAMD21-XPRO
Ksenia 0:580de84e379c 17 //HYT SENSOR (PA08, PA09); // sda, scl
Ksenia 0:580de84e379c 18 //FT800 TFT (PA18, PA16, PA19, PA17, PA20, PA21); // mosi, miso, sck, ss, int, pd
Ksenia 0:580de84e379c 19
Ksenia 0:580de84e379c 20
Ksenia 0:580de84e379c 21 /***********************************************************************************************************************/
Ksenia 0:580de84e379c 22 /* HYT sensor polling cycle */
Ksenia 0:580de84e379c 23 void dataUpdate(void)
Ksenia 0:580de84e379c 24 {
Ksenia 0:580de84e379c 25 SENSOR.MRCommand();
Ksenia 0:580de84e379c 26 wait_ms(100);
Ksenia 0:580de84e379c 27 SENSOR.DFCommand();
Ksenia 0:580de84e379c 28 }
Ksenia 0:580de84e379c 29
Ksenia 0:580de84e379c 30 /***********************************************************************************************************************/
Ksenia 0:580de84e379c 31 /* Construct the screen and downloasd it to the TFT */
Ksenia 0:580de84e379c 32 void drawTimeScreen(void)
Ksenia 0:580de84e379c 33 {
Ksenia 0:580de84e379c 34 // start FT800 display list
Ksenia 0:580de84e379c 35 TFT.DLstart();
Ksenia 0:580de84e379c 36 TFT.DL(CLEAR_COLOR_RGB(255, 255, 255));
Ksenia 0:580de84e379c 37 TFT.DL(CLEAR(1, 1, 1));
Ksenia 0:580de84e379c 38
Ksenia 0:580de84e379c 39 TFT.DL(COLOR_RGB(0, 0, 0));
Ksenia 0:580de84e379c 40 TFT.Text(11, 15, 30, 0, "Demo-project for habrahabr.ru");
Ksenia 0:580de84e379c 41 TFT.Text(13, 15 + 40, 28, 0, "Using FT800 library and HYT library");
Ksenia 0:580de84e379c 42
Ksenia 0:580de84e379c 43 TFT.DL(COLOR_RGB(9, 40, 3));
Ksenia 0:580de84e379c 44 TFT.DL(BEGIN(RECTS));
Ksenia 0:580de84e379c 45 TFT.DL(VERTEX2II(11, 105, 0, 0));
Ksenia 0:580de84e379c 46 TFT.DL(VERTEX2II(11 + 222, 105 + 100, 0, 0));
Ksenia 0:580de84e379c 47
Ksenia 0:580de84e379c 48 TFT.DL(COLOR_RGB(255, 255, 255));
Ksenia 0:580de84e379c 49 TFT.Text(11 + 10, 105 + 10, 28, 0, "Relative humidity, %");
Ksenia 0:580de84e379c 50 TFT.Number(11 + 10, 105 + 10 + 30, 31, 0, SENSOR.humidity);
Ksenia 0:580de84e379c 51
Ksenia 0:580de84e379c 52 TFT.DL(COLOR_RGB(9, 3, 40));
Ksenia 0:580de84e379c 53 TFT.DL(BEGIN(RECTS));
Ksenia 0:580de84e379c 54 TFT.DL(VERTEX2II(11 + 222 + 14, 105, 0, 0));
Ksenia 0:580de84e379c 55 TFT.DL(VERTEX2II(11 + 222 + 14 + 222, 105 + 100, 0, 0));
Ksenia 0:580de84e379c 56
Ksenia 0:580de84e379c 57 TFT.DL(COLOR_RGB(255, 255, 255));
Ksenia 0:580de84e379c 58 TFT.Text(11 + 222 + 14 + 10, 105 + 10, 28, 0, "Temperature, C");
Ksenia 0:580de84e379c 59 TFT.Number(11 + 222 + 14 + 10, 105 + 10 + 30, 31, 0, SENSOR.temperature);
Ksenia 0:580de84e379c 60
Ksenia 0:580de84e379c 61 TFT.DL(COLOR_RGB(0, 0, 0));
Ksenia 0:580de84e379c 62 TFT.Text(300, 105 + 100 + 35, 28, 0, "e-mail: xk@efo.ru");
Ksenia 0:580de84e379c 63
Ksenia 0:580de84e379c 64 TFT.DL(BEGIN(LINES));
Ksenia 0:580de84e379c 65 TFT.DL(LINE_WIDTH(8));
Ksenia 0:580de84e379c 66 TFT.DL(VERTEX2II(11, 15 + 40 + 30, 0, 0));
Ksenia 0:580de84e379c 67 TFT.DL(VERTEX2II(460, 15 + 40 + 30, 0, 0));
Ksenia 0:580de84e379c 68
Ksenia 0:580de84e379c 69 // finish FT800 display list
Ksenia 0:580de84e379c 70 TFT.DL(DISPLAY());
Ksenia 0:580de84e379c 71 TFT.Swap();
Ksenia 0:580de84e379c 72 }
Ksenia 0:580de84e379c 73
Ksenia 0:580de84e379c 74 /***********************************************************************************************************************/
Ksenia 0:580de84e379c 75 /* Main function */
Ksenia 0:580de84e379c 76 int main()
Ksenia 0:580de84e379c 77 {
Ksenia 0:580de84e379c 78 while(1) {
Ksenia 0:580de84e379c 79 dataUpdate();
Ksenia 0:580de84e379c 80 drawTimeScreen();
Ksenia 0:580de84e379c 81 }
Ksenia 0:580de84e379c 82 }