Русифицированная версия программы для измерения температуры и отн. влажности и вывода информации на сенсорный TFT
Dependencies: FT800_2 HYT mbed
Компоненты
- Датчик температуры и относительной влажности HYT-271 / HYT-221 / HYT-939 от компании IST-AG
- TFT-модуль серии uxTouch от компании Riverdi
- Плата-переходник Break Out Board 20 от компании Riverdi
- Любая отладочная плата с поддержкой mbed, интерфейсами I2C и SPI interface двумя свободными линиями для сигналов PD и INT
Подключение
Отладочная плата к TFT-модулю
Отладочная плата подключается к модулю через переходник Break Out Board 20. На плате-переходнике используется 6 сигналов: SCK, MOSI, MISO, SS (интерфейс SPI), PD (powerdown) и INT (interrupt).
Питание должно быть подано не только на VDD, но и на BLVDD - подсветку экрана. Соответствующие выводы можно просто соединить между собой:
Отладочная плата к датчику серии HYT
К датчику отладочная плата подключается по I2C. Не забываем про подтяжку к питанию:
Демонстрация работы
Процесс создания приложения подробно описан тут: https://habrahabr.ru/users/uuuulala/topics/
Diff: TFT/display.ImagesAndFonts.cpp
- Revision:
- 0:9db07391e780
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TFT/display.ImagesAndFonts.cpp Fri Oct 07 11:03:16 2016 +0000 @@ -0,0 +1,67 @@ +#include "display.h" + +/************************************************************************************************************************** +************************** Decompress images anf fonts from pictures.h and put them to the RAM memeory of FT800 *********** +**************************************************************************************************************************/ +void Display::LoadImagesAndFonts() +{ + (*_TFT).WrCmd32(CMD_INFLATE); + (*_TFT).WrCmd32(IMAGE_ADDR_HUMIDITY); + (*_TFT).WrCmdBufFromFlash(hum_icon, sizeof(hum_icon)); + + (*_TFT).WrCmd32(CMD_INFLATE); + (*_TFT).WrCmd32(IMAGE_ADDR_TEMPERATURE); + (*_TFT).WrCmdBufFromFlash(temp_icon, sizeof(temp_icon)); + + (*_TFT).WrCmd32(CMD_INFLATE); + (*_TFT).WrCmd32(IMAGE_ADDR_SENSOR); + (*_TFT).WrCmdBufFromFlash(HYT_photo, sizeof(HYT_photo)); + + (*_TFT).WrCmd32(CMD_INFLATE); + (*_TFT).WrCmd32(FONT_SET_ROBOTO_REGULAR_30); + (*_TFT).WrCmdBufFromFlash(font_RobotoRegular30, sizeof(font_RobotoRegular30)); + + (*_TFT).WrCmd32(CMD_INFLATE); + (*_TFT).WrCmd32(FONT_SET_ROBOTO_REGULAR_16); + (*_TFT).WrCmdBufFromFlash(font_RobotoRegular16, sizeof(font_RobotoRegular16)); +} + +/************************************************************************************************************************** +************************** Prepare images and fronts ********************************************************************** +**************************************************************************************************************************/ +void Display::HandleAllBitmaps() +{ + // start FT800 display list + StartDL(); + + (*_TFT).DL(BITMAP_HANDLE(0)); + (*_TFT).DL(BITMAP_SOURCE(IMAGE_ADDR_HUMIDITY)); + (*_TFT).DL(BITMAP_LAYOUT(ARGB4, 60, 38)); + (*_TFT).DL(BITMAP_SIZE(NEAREST, BORDER, BORDER, 30, 38)); + + (*_TFT).DL(BITMAP_HANDLE(1)); + (*_TFT).DL(BITMAP_SOURCE(IMAGE_ADDR_TEMPERATURE)); + (*_TFT).DL(BITMAP_LAYOUT(ARGB4, 42, 42)); + (*_TFT).DL(BITMAP_SIZE(NEAREST, BORDER, BORDER, 21, 42)); + + (*_TFT).DL(BITMAP_HANDLE(2)); + (*_TFT).DL(BITMAP_SOURCE(IMAGE_ADDR_SENSOR)); + (*_TFT).DL(BITMAP_LAYOUT(RGB332, 101, 147)); + (*_TFT).DL(BITMAP_SIZE(NEAREST, BORDER, BORDER, 101, 147)); + + (*_TFT).DL(BITMAP_HANDLE(3)); + (*_TFT).DL(BITMAP_SOURCE(FONT_ADDR_ROBOTO_REGULAR_30)); + (*_TFT).DL(BITMAP_LAYOUT(L4, 16, 33)); + (*_TFT).DL(BITMAP_SIZE(NEAREST, BORDER, BORDER, 32, 33)); + + (*_TFT).DL(BITMAP_HANDLE(4)); + (*_TFT).DL(BITMAP_SOURCE(FONT_ADDR_ROBOTO_REGULAR_16)); + (*_TFT).DL(BITMAP_LAYOUT(L4, 8, 20)); + (*_TFT).DL(BITMAP_SIZE(NEAREST, BORDER, BORDER, 16, 20)); + + (*_TFT).SetFont(3, FONT_SET_ROBOTO_REGULAR_30); + (*_TFT).SetFont(4, FONT_SET_ROBOTO_REGULAR_16); + + // finish FT800 display list + FinishDL(); +} \ No newline at end of file