Русифицированная версия программы для измерения температуры и отн. влажности и вывода информации на сенсорный TFT

Dependencies:   FT800_2 HYT mbed

Компоненты

Подключение

Отладочная плата к TFT-модулю

Отладочная плата подключается к модулю через переходник Break Out Board 20. На плате-переходнике используется 6 сигналов: SCK, MOSI, MISO, SS (интерфейс SPI), PD (powerdown) и INT (interrupt).

Питание должно быть подано не только на VDD, но и на BLVDD - подсветку экрана. Соответствующие выводы можно просто соединить между собой:

/media/uploads/Ksenia/4_-5-.jpg

Отладочная плата к датчику серии HYT

К датчику отладочная плата подключается по I2C. Не забываем про подтяжку к питанию:

/media/uploads/Ksenia/freshpaint-20-2016.09.16-10.37.03.png

Демонстрация работы

Процесс создания приложения подробно описан тут: https://habrahabr.ru/users/uuuulala/topics/

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