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

Dependencies:   FT800_2 HYT mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers display.Draw_MainMenu.cpp Source File

display.Draw_MainMenu.cpp

00001 #include "display.h"
00002 
00003 /**************************************************************************************************************************
00004 ************************** Display Main Menu ******************************************************************************
00005 **************************************************************************************************************************/
00006 
00007 void Display::MainMenu(float humidity, float temperature)
00008 {
00009      // start FT800 display list
00010     StartDL();
00011     
00012     // write main title
00013     (*_TFT).DL(COLOR_RGB(0, 0, 0));
00014 
00015     CreateStringRussian("Датчик HYT-271 от IST");
00016     (*_TFT).Text(15, 15, 3, 0, russianStr);    
00017    
00018     // create blue rectangle with current humididty including 
00019     // rectangle is tagged as CURR_HUM_PRESS
00020     (*_TFT).DL(TAG_MASK(1));
00021     (*_TFT).DL(TAG(CURR_HUM_PRESS));
00022     (*_TFT).DL(COLOR_RGB(9, 0, 63));
00023     // if rectangle is already pressed, draw it with lighter color
00024     if (pressedButton == CURR_HUM_PRESS) {
00025         (*_TFT).DL(COLOR_RGB(75, 70, 108));
00026     }
00027     (*_TFT).DL(BEGIN(RECTS));
00028     (*_TFT).DL(VERTEX2II(12, 62, 0, 0));
00029     (*_TFT).DL(VERTEX2II(12 + 300, 62 + 93, 0, 0));
00030     (*_TFT).DL(COLOR_RGB(255, 255, 255));
00031     CreateStringRussian("Отн. влажность");
00032     (*_TFT).Text(12 + 10, 62 + 5, 3, 0, russianStr); 
00033     CreateStringTempHum(humidityStr, humidity, 0);
00034     (*_TFT).Text(12 + 10, 62 + 45, 31, 0, humidityStr);
00035     (*_TFT).DL(BEGIN(BITMAPS));
00036     (*_TFT).DL(VERTEX2II(12 + 255, 62 + 10, 0, 0));
00037     (*_TFT).DL(END());
00038     (*_TFT).DL(TAG_MASK(0));
00039 
00040     // create blue rectangle with current temperature including 
00041     // rectangle is tagged as CURR_TEMP_PRESS
00042     (*_TFT).DL(TAG_MASK(1));
00043     (*_TFT).DL(TAG(CURR_TEMP_PRESS));
00044     (*_TFT).DL(COLOR_RGB(9, 0, 63));
00045     // if rectangle is already pressed, draw it with lighter color
00046     if (pressedButton == CURR_TEMP_PRESS) {
00047         (*_TFT).DL(COLOR_RGB(75, 70, 108));
00048     }
00049     (*_TFT).DL(BEGIN(RECTS));
00050     (*_TFT).DL(VERTEX2II(12, 62 + 93 + 12, 0, 0));
00051     (*_TFT).DL(VERTEX2II(12 + 300, 62 + 93 + 12 + 93, 0, 0));
00052     (*_TFT).DL(COLOR_RGB(255, 255, 255));
00053     CreateStringRussian("Температура");
00054     (*_TFT).Text(12 + 10, 62 + 93 + 12 + 5, 3, 0, russianStr);
00055     char degreeOffset = CreateStringTempHum(temperatureStr, temperature, 1);
00056     (*_TFT).Text(12 + 10, 62 + 93 + 12 + 45, 31, 0, temperatureStr);
00057     (*_TFT).Text(12 + 10 + (degreeOffset * 16 + 3), 62 + 93 + 12 + 45 - 2, 28, 0, "o");
00058     (*_TFT).DL(BEGIN(BITMAPS));
00059     (*_TFT).DL(VERTEX2II(12 + 260, 62 + 93 + 12 + 10, 1, 0));
00060     (*_TFT).DL(END());
00061     (*_TFT).DL(TAG_MASK(0));
00062 
00063 
00064     // create black rectangle tagged as STAT_HUM_PRESS    
00065     (*_TFT).DL(TAG_MASK(1));
00066     (*_TFT).DL(TAG(STAT_HUM_PRESS));
00067     (*_TFT).DL(COLOR_RGB(36, 36, 36));
00068     // if rectangle is already pressed, draw it lighter
00069     if (pressedButton == STAT_HUM_PRESS) {
00070         (*_TFT).DL(COLOR_RGB(56, 56, 56));
00071     }
00072     (*_TFT).DL(BEGIN(RECTS));
00073     (*_TFT).DL(VERTEX2II(12 + 300 + 12, 62, 0, 0));
00074     (*_TFT).DL(VERTEX2II(12 + 300 + 12 + 144, 62 + 58, 0, 0));
00075     (*_TFT).DL(COLOR_RGB(255, 255, 255));
00076     CreateStringRussian("Отн. влажность");
00077     (*_TFT).Text(12 + 300 + 12 + 10, 62 + 5, 4, 0, russianStr);
00078     CreateStringRussian("за сутки");
00079     (*_TFT).Text(12 + 300 + 12 + 10, 62 + 27, 4, 0, russianStr);
00080     (*_TFT).DL(TAG_MASK(0));
00081 
00082     // create black rectangle tagged as STAT_TEMP_PRESS    
00083     (*_TFT).DL(TAG_MASK(1));
00084     (*_TFT).DL(TAG(STAT_TEMP_PRESS));
00085     (*_TFT).DL(COLOR_RGB(36, 36, 36));
00086     // if rectangle is already pressed, draw it lighter
00087     if (pressedButton == STAT_TEMP_PRESS) {
00088         (*_TFT).DL(COLOR_RGB(56, 56, 56));
00089     }
00090     (*_TFT).DL(BEGIN(RECTS));
00091     (*_TFT).DL(VERTEX2II(12 + 300 + 12, 62 + 58 + 12, 0, 0));
00092     (*_TFT).DL(VERTEX2II(12 + 300 + 12 + 144, 62 + 58 + 12 + 58, 0, 0));
00093     (*_TFT).DL(COLOR_RGB(255, 255, 255));
00094     CreateStringRussian("Температура");
00095     (*_TFT).Text(12 + 300 + 12 + 10, 62 + 58 + 12 + 5, 4, 0, russianStr);
00096     CreateStringRussian("за сутки");
00097     (*_TFT).Text(12 + 300 + 12 + 10, 62 + 58 + 12 + 27, 4, 0, russianStr);
00098     (*_TFT).DL(TAG_MASK(0));
00099     
00100     // create black rectangle tagged as ABOUT_PRESS  
00101     (*_TFT).DL(TAG_MASK(1));
00102     (*_TFT).DL(TAG(ABOUT_PRESS));
00103     (*_TFT).DL(COLOR_RGB(36, 36, 36));
00104     // if rectangle is already pressed, draw it lighter
00105     if (pressedButton == ABOUT_PRESS) {
00106         (*_TFT).DL(COLOR_RGB(56, 56, 56));
00107     }
00108     (*_TFT).DL(BEGIN(RECTS));
00109     (*_TFT).DL(VERTEX2II(12 + 300 + 12, 62 + 58 + 12 + 58 + 12, 0, 0));
00110     (*_TFT).DL(VERTEX2II(12 + 300 + 12 + 144, 62 + 58 + 12 + 58 + 12 + 58, 0, 0));
00111     (*_TFT).DL(COLOR_RGB(255, 255, 255));
00112     CreateStringRussian("О датчике");
00113     (*_TFT).Text(12 + 144 + 12 + 144 + 12 + 10, 62 + 58 + 12 + 58 + 12 + 5, 4, 0, russianStr); 
00114     (*_TFT).DL(TAG_MASK(0));
00115     
00116     // finish FT800 display list
00117     FinishDL();
00118 }