Measuring air flow, relative humidity & temperature, then showing results at TFT
Dependencies: FT800_2 HYT mbed
Draw_MainScreen.cpp
00001 #include "Display.h" 00002 00003 /************************************************************************************************************************** 00004 ************************** Display Main Menu ****************************************************************************** 00005 **************************************************************************************************************************/ 00006 void Display::MainScreen() 00007 { 00008 uint8_t numberOfGraphs = showHumidity + showFlow + showTemperature; 00009 00010 // start FT800 display list 00011 StartDL(); 00012 00013 /****************************************************************************************************/ 00014 (*_TFT).DL(SET_BACKGROUND_COLOR); 00015 (*_TFT).DL(TAG_MASK(1)); 00016 (*_TFT).DL(TAG(SHOW_HUMIDITY)); 00017 (*_TFT).DL(BEGIN(RECTS)); 00018 (*_TFT).DL(VERTEX2II(0, 0, 0, 0)); 00019 (*_TFT).DL(VERTEX2II(0 + BUTTON_1_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET + BUTTON_HEIGHT + Y_UPPER_OFFSET, 0, 0)); 00020 (*_TFT).DL(END()); 00021 (*_TFT).DL(TAG_MASK(0)); 00022 00023 (*_TFT).DL(TAG_MASK(1)); 00024 (*_TFT).DL(TAG(SHOW_FLOW)); 00025 (*_TFT).DL(BEGIN(RECTS)); 00026 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET / 2, 0, 0, 0)); 00027 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET / 2, Y_UPPER_OFFSET + BUTTON_HEIGHT + Y_UPPER_OFFSET, 0, 0)); 00028 (*_TFT).DL(END()); 00029 (*_TFT).DL(TAG_MASK(0)); 00030 00031 (*_TFT).DL(TAG_MASK(1)); 00032 (*_TFT).DL(TAG(SHOW_TEMPERATURE)); 00033 (*_TFT).DL(BEGIN(RECTS)); 00034 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET / 2, 0, 0, 0)); 00035 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET + BUTTON_3_WIDTH + X_LEFT_OFFSET / 2, Y_UPPER_OFFSET + BUTTON_HEIGHT + Y_UPPER_OFFSET, 0, 0)); 00036 (*_TFT).DL(END()); 00037 (*_TFT).DL(TAG_MASK(0)); 00038 00039 /****************************************************************************************************/ 00040 if (showHumidity) { 00041 (*_TFT).DL(SET_HUMIDITY_COLOR); 00042 } else { 00043 (*_TFT).DL(SET_HUMIDITY_LOW_COLOR); 00044 } 00045 (*_TFT).DL(BEGIN(RECTS)); 00046 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, Y_UPPER_OFFSET, 0, 0)); 00047 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00048 (*_TFT).DL(END()); 00049 if (showHumidity) { 00050 (*_TFT).DL(SET_HUMIDITY_LOW_COLOR); 00051 (*_TFT).DL(BEGIN(LINES)); 00052 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00053 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00054 (*_TFT).DL(END()); 00055 (*_TFT).DL(BEGIN(LINES)); 00056 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, Y_UPPER_OFFSET, 0, 0)); 00057 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00058 (*_TFT).DL(END()); 00059 (*_TFT).DL(SET_WHITE_COLOR); 00060 } else { 00061 (*_TFT).DL(COLOR_RGB(100, 100, 100)); 00062 } 00063 CreateStringRussian("Отн. влажность"); 00064 (*_TFT).Text(X_LEFT_OFFSET + 5, Y_UPPER_OFFSET + 5, 4, 0, russianStr); 00065 00066 00067 (*_TFT).DL(SET_FLOW_COLOR); 00068 if (showFlow) 00069 (*_TFT).DL(SET_FLOW_COLOR); 00070 else 00071 (*_TFT).DL(SET_FLOW_LOW_COLOR); 00072 (*_TFT).DL(BEGIN(RECTS)); 00073 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET, 0, 0)); 00074 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00075 (*_TFT).DL(END()); 00076 if (showFlow) { 00077 (*_TFT).DL(SET_FLOW_LOW_COLOR); 00078 (*_TFT).DL(BEGIN(LINES)); 00079 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00080 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00081 (*_TFT).DL(END()); 00082 (*_TFT).DL(BEGIN(LINES)); 00083 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET, 0, 0)); 00084 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00085 (*_TFT).DL(END()); 00086 (*_TFT).DL(SET_WHITE_COLOR); 00087 } else { 00088 (*_TFT).DL(COLOR_RGB(100, 100, 100)); 00089 } 00090 CreateStringRussian("Скорость потока"); 00091 (*_TFT).Text(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + 5, Y_UPPER_OFFSET + 5, 4, 0, russianStr); 00092 00093 00094 if (showTemperature) 00095 (*_TFT).DL(SET_TEMPERATURE_COLOR); 00096 else 00097 (*_TFT).DL(SET_TEMPERATURE_LOW_COLOR); 00098 (*_TFT).DL(BEGIN(RECTS)); 00099 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET, 0, 0)); 00100 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET + BUTTON_3_WIDTH, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00101 (*_TFT).DL(END()); 00102 if (showTemperature) { 00103 (*_TFT).DL(SET_TEMPERATURE_LOW_COLOR); 00104 (*_TFT).DL(BEGIN(LINES)); 00105 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00106 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET + BUTTON_3_WIDTH, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00107 (*_TFT).DL(END()); 00108 (*_TFT).DL(BEGIN(LINES)); 00109 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET, 0, 0)); 00110 (*_TFT).DL(VERTEX2II(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET, Y_UPPER_OFFSET + BUTTON_HEIGHT, 0, 0)); 00111 (*_TFT).DL(END()); 00112 (*_TFT).DL(SET_WHITE_COLOR); 00113 } else { 00114 (*_TFT).DL(COLOR_RGB(100, 100, 100)); 00115 } 00116 CreateStringRussian("Температура"); 00117 (*_TFT).Text(X_LEFT_OFFSET + BUTTON_1_WIDTH + X_LEFT_OFFSET + BUTTON_2_WIDTH + X_LEFT_OFFSET + 5, Y_UPPER_OFFSET + 5, 4, 0, russianStr); 00118 00119 00120 /****************************************************************************************************/ 00121 if (showTemperature) { 00122 (*_TFT).DL(BEGIN(EDGE_STRIP_B)); 00123 for (int i = 0; i <= POINTS_NUMBER; i++) { 00124 if (i <= current_X) { 00125 (*_TFT).DL(COLOR_RGB(210,255,2016)); 00126 (*_TFT).DL(VERTEX2II((i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - temperature_Y[i], 0, 0)); 00127 } 00128 } 00129 } 00130 if (showHumidity) { 00131 (*_TFT).DL(BEGIN(EDGE_STRIP_B)); 00132 for (int i = 0; i <= POINTS_NUMBER; i++) { 00133 if (i <= current_X) { 00134 (*_TFT).DL(COLOR_RGB(184,213,255)); 00135 (*_TFT).DL(VERTEX2II((i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - humidity_Y[i], 0, 0)); 00136 } 00137 } 00138 } 00139 if (showFlow) { 00140 (*_TFT).DL(BEGIN(EDGE_STRIP_B)); 00141 for (int i = 0; i <= POINTS_NUMBER; i++) { 00142 if (i <= current_X) { 00143 (*_TFT).DL(COLOR_RGB(255,198,255)); 00144 (*_TFT).DL(VERTEX2II((i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - flow_Y[i], 0, 0)); 00145 } 00146 } 00147 } 00148 00149 /****************************************************************************************************/ 00150 if (numberOfGraphs != 1) { 00151 HorisontalGrid(); 00152 } else { 00153 if (showHumidity) 00154 HorisontalGrid_Humidity(); 00155 if (showFlow) 00156 HorisontalGrid_Flow(); 00157 if (showTemperature) 00158 HorisontalGrid_Temperature(); 00159 } 00160 00161 VerticalGrid(); 00162 00163 /****************************************************************************************************/ 00164 for (int i = 0; i <= POINTS_NUMBER; i++) { 00165 (*_TFT).DL(BEGIN(POINTS)); 00166 (*_TFT).DL(POINT_SIZE(40)); 00167 if (i <= current_X || i >= current_X + 13) { 00168 (*_TFT).DL(SET_HUMIDITY_COLOR); 00169 if (showHumidity) 00170 (*_TFT).DL(VERTEX2II((i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - humidity_Y[i], 0, 0)); 00171 (*_TFT).DL(SET_FLOW_COLOR); 00172 if (showFlow) 00173 (*_TFT).DL(VERTEX2II((i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - flow_Y[i], 0, 0)); 00174 (*_TFT).DL(SET_TEMPERATURE_COLOR); 00175 if (showTemperature) 00176 (*_TFT).DL(VERTEX2II((i * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - temperature_Y[i], 0, 0)); 00177 } 00178 (*_TFT).DL(END()); 00179 } 00180 00181 /****************************************************************************************************/ 00182 (*_TFT).DL(SET_HUMIDITY_COLOR); 00183 if (showHumidity) 00184 (*_TFT).Text((current_X * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - humidity_Y[current_X] - 25, 4, 0, humidityStr); 00185 (*_TFT).DL(SET_FLOW_COLOR); 00186 if (showFlow) 00187 (*_TFT).Text((current_X * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - flow_Y[current_X] - 25, 4, 0, flowStr); 00188 (*_TFT).DL(SET_TEMPERATURE_COLOR); 00189 if (showTemperature) 00190 (*_TFT).Text((current_X * X_AXIS_MULTIPLIER + X_LEFT_OFFSET), my_DispHeight - temperature_Y[current_X] - 25, 4, 0, temperatureStr); 00191 00192 /****************************************************************************************************/ 00193 // (*_TFT).Number(my_DispWidth - 25, my_DispHeight - 150, 27, 0, sec / 60); 00194 // (*_TFT).Number(my_DispWidth - 25, my_DispHeight - 135, 27, 0, sec % 60); 00195 00196 /****************************************************************************************************/ 00197 (*_TFT).DL(SCISSOR_XY(0, my_DispHeight - Y_BOTTOM_OFFSET + 3)); 00198 (*_TFT).DL(SCISSOR_SIZE(X_LEFT_OFFSET + (POINTS_NUMBER * X_AXIS_MULTIPLIER + 5), Y_BOTTOM_OFFSET - 3)); 00199 (*_TFT).Gradient(0, my_DispHeight, BACKGROUND_COLOR, X_LEFT_OFFSET + (POINTS_NUMBER * X_AXIS_MULTIPLIER + 5), my_DispHeight - Y_BOTTOM_OFFSET + 3, BACKGROUND_COLOR); 00200 00201 00202 // finish FT801 display list 00203 FinishDL(); 00204 }
Generated on Fri Jul 15 2022 19:43:07 by
1.7.2