Fork of https://os.mbed.com/users/sebastiken/code/Adafruit_RA8875/ ; Adapted for use with K64F and in the process of adding more functions.
main.cpp
00001 #include "RA8875.h" 00002 #include <string> 00003 #include <stdlib.h> 00004 #include <time.h> 00005 #include "BNO055.h" 00006 00007 00008 #define MOSI PC_12 00009 #define MISO PC_11 00010 #define SCLK PC_10 00011 #define CS PA_15 00012 #define RST PD_0 00013 00014 DigitalIn INT(PD_1); 00015 BNO055 imu(PB_7,PB_6); 00016 DigitalOut G0(PG_0); 00017 DigitalOut bno_enable(PB_5); 00018 00019 Adafruit_RA8875 lcd = Adafruit_RA8875(MOSI, MISO, SCLK, CS, RST); 00020 uint16_t tx, ty; 00021 char * toString(uint16_t number); 00022 Serial pc(USBTX, USBRX); // tx, rxSerial pc(USBTX, USBRX); // tx, rx 00023 void menu(); 00024 void menu1(); 00025 void menu2(); 00026 bool buttonState(uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax); 00027 bool notificationState = true; 00028 bool refresh = false; 00029 uint16_t menuVal = 0; 00030 00031 00032 00033 class button{ 00034 public: 00035 uint16_t x; 00036 uint16_t y; 00037 uint16_t w; 00038 uint16_t h; 00039 uint16_t textY; 00040 bool state; 00041 const char* buttonName; 00042 bool debounceState; 00043 00044 void update(){ 00045 state = buttonState(x, y, x+w, y+h); 00046 } 00047 void create(){ 00048 /*char char_array[buttonName.length()]; 00049 for (int i = 0; i < sizeof(char_array); i++) { 00050 char_array[i] = buttonName[i]; 00051 } */ 00052 lcd.textEnlarge(1); 00053 if(debounceState == 0){ 00054 lcd.boxDraw(x,y,w,h,1,GREY,BLUE); 00055 lcd.textWritePro(x+2,textY,WHITE,BLUE, buttonName ); 00056 } 00057 if(debounceState == 1){ 00058 lcd.boxDraw(x,y,w,h,1,GREY,GREEN); 00059 lcd.textWritePro(x+2,textY,WHITE,GREEN, buttonName ); 00060 } 00061 00062 } 00063 00064 }; 00065 00066 button menu1_Button; 00067 button menu2_Button; 00068 button relay1_Button; 00069 button relay2_Button; 00070 button relay3_Button; 00071 button relay4_Button; 00072 button relay5_Button; 00073 button relay6_Button; 00074 button relay7_Button; 00075 button relay8_Button; 00076 button relay9_Button; 00077 button settings_Button; 00078 00079 00080 void setup() 00081 { 00082 bno_enable = 1; 00083 pc.baud(9600); 00084 pc.printf("RA8875 start\n"); 00085 imu.reset(); 00086 if (!imu.check()){ 00087 while (true){ 00088 G0 = !G0; 00089 wait(0.1); 00090 } 00091 } 00092 imu.setmode(OPERATION_MODE_NDOF); 00093 imu.get_calib(); 00094 } 00095 00096 int main() 00097 { 00098 lcd.begin(RA8875_800x480); 00099 lcd.displayOn(true); 00100 lcd.GPIOX(true); // Enable lcd - display enable tied to GPIOX 00101 lcd.PWM1config(true, RA8875_PWM_CLK_DIV1024); // PWM output for backlight 00102 lcd.PWM1out(255); 00103 lcd.fillScreen(BLACK); 00104 lcd.touchEnable(true); 00105 00106 00107 00108 lcd.graphicsMode(); 00109 lcd.drawPixel(50,200,WHITE); 00110 menu(); 00111 menu1(); 00112 00113 float xScale = 1024.0F/lcd.width(); 00114 float yScale = 1024.0F/lcd.height(); 00115 bool INT = 1; 00116 00117 while(1) { 00118 if (INT == !1); 00119 { 00120 if (lcd.touched()) { 00121 lcd.touchRead(&tx, &ty); 00122 //lcd.fillCircle((uint16_t)(tx/xScale), (uint16_t)(ty/yScale), 1, WHITE); 00123 lcd.textEnlarge(1.2); 00124 uint16_t tmp; 00125 tmp = (uint16_t)(tx/xScale); 00126 00127 imu.get_angles(); 00128 pc.printf("%0z %5.1d %5.1d %5.1d\r\n",imu.calib,imu.euler.roll,imu.euler.pitch,imu.euler.yaw); 00129 tmp = (uint16_t)(abs(imu.euler.pitch)); 00130 wait(0.1); 00131 char arr[7]; 00132 arr[0] = tmp/100; 00133 tmp = tmp - arr[0]*100; 00134 arr[1] = tmp/10; 00135 tmp = tmp - arr[1]*10; 00136 arr[2] = tmp+48; 00137 arr[1]+=48; 00138 arr[0]+=48; 00139 lcd.textWritePro(10, 450, GREEN, 0, arr); 00140 tmp = (uint16_t)(ty/yScale); 00141 arr[3] = ','; 00142 arr[4] = tmp/100; 00143 tmp = tmp - arr[4]*100; 00144 arr[5] = tmp/10; 00145 tmp = tmp - arr[5]*10; 00146 arr[6] = tmp+48; 00147 arr[5]+=48; 00148 arr[4]+=48; 00149 lcd.textWritePro(10, 450, GREEN, 0, arr); 00150 menu1_Button.update(); 00151 menu2_Button.update(); 00152 relay1_Button.update(); 00153 relay2_Button.update(); 00154 relay3_Button.update(); 00155 relay4_Button.update(); 00156 relay5_Button.update(); 00157 relay6_Button.update(); 00158 relay7_Button.update(); 00159 relay8_Button.update(); 00160 relay9_Button.update(); 00161 if(menu1_Button.state == 1){ 00162 menuVal = 1; 00163 //menu(); 00164 menu1(); 00165 lcd.touchRead(&tx, &ty); 00166 wait(0.5); 00167 } 00168 if(menu2_Button.state == 1){ 00169 menuVal = 2; 00170 //menu(); 00171 menu2(); 00172 lcd.touchRead(&tx, &ty); 00173 wait(0.5); 00174 } 00175 if(relay1_Button.state == 1){ 00176 relay1_Button.debounceState = !relay1_Button.debounceState; 00177 menu2(); 00178 lcd.touchRead(&tx, &ty); 00179 wait(0.5); 00180 } 00181 if(relay2_Button.state == 1){ 00182 relay2_Button.debounceState = !relay2_Button.debounceState; 00183 menu2(); 00184 lcd.touchRead(&tx, &ty); 00185 wait(0.5); 00186 } 00187 if(relay3_Button.state == 1){ 00188 relay3_Button.debounceState = !relay3_Button.debounceState; 00189 menu2(); 00190 lcd.touchRead(&tx, &ty); 00191 wait(0.5); 00192 } 00193 if(relay4_Button.state == 1){ 00194 relay4_Button.debounceState = !relay4_Button.debounceState; 00195 menu2(); 00196 lcd.touchRead(&tx, &ty); 00197 wait(0.5); 00198 } 00199 if(relay5_Button.state == 1){ 00200 relay5_Button.debounceState = !relay5_Button.debounceState; 00201 menu2(); 00202 lcd.touchRead(&tx, &ty); 00203 wait(0.5); 00204 } 00205 if(relay6_Button.state == 1){ 00206 relay6_Button.debounceState = !relay6_Button.debounceState; 00207 menu2(); 00208 lcd.touchRead(&tx, &ty); 00209 wait(0.5); 00210 } 00211 if(relay7_Button.state == 1){ 00212 relay7_Button.debounceState = !relay7_Button.debounceState; 00213 menu2(); 00214 lcd.touchRead(&tx, &ty); 00215 wait(0.5); 00216 } 00217 if(relay8_Button.state == 1){ 00218 relay8_Button.debounceState = !relay8_Button.debounceState; 00219 menu2(); 00220 lcd.touchRead(&tx, &ty); 00221 wait(0.5); 00222 } 00223 if(relay9_Button.state == 1){ 00224 relay9_Button.debounceState = !relay9_Button.debounceState; 00225 menu2(); 00226 lcd.touchRead(&tx, &ty); 00227 wait(0.5); 00228 } 00229 00230 } 00231 } 00232 } 00233 } 00234 void menu(){ 00235 lcd.rectHelper(0,0,800,480,BLACK,1); 00236 lcd.textEnlarge(1); 00237 lcd.textWritePro(10,5,WHITE,0,"NAVARC Solarange"); 00238 lcd.boxDraw(0,45,800,0,4,GREY,BLUE); 00239 lcd.boxDraw(250,100,30,30,1,GREY,BLUE); 00240 if(notificationState){ 00241 lcd.rectHelper(60,100,350,300,GREY,1); 00242 lcd.boxDraw(250,100,30,30,1,GREY,BLUE); 00243 } 00244 00245 menu1_Button.x = 50; 00246 menu1_Button.y = 350; 00247 menu1_Button.w = 300; 00248 menu1_Button.h = 100; 00249 menu1_Button.textY = 380; 00250 menu1_Button.buttonName = " Menu 1"; 00251 menu1_Button.create(); 00252 00253 menu2_Button.x = 450; 00254 menu2_Button.y = 350; 00255 menu2_Button.w = 300; 00256 menu2_Button.h = 100; 00257 menu2_Button.textY = 380; 00258 menu2_Button.buttonName = " Menu 2"; 00259 menu2_Button.create(); 00260 } 00261 00262 void menu1(){ 00263 lcd.rectHelper(20,70,750,330,BLACK,1); 00264 lcd.boxDraw(390,70,400,250,1,WHITE,WHITE); 00265 lcd.textEnlarge(1); 00266 lcd.textWritePro(395,80,BLUE,WHITE,"Panel Grubu 1: 75kW"); 00267 lcd.textWritePro(395,110,BLUE,WHITE,"Panel Grubu 2: 75kW"); 00268 lcd.textWritePro(395,140,BLUE,WHITE,"Panel Grubu 3: 75kW"); 00269 lcd.textWritePro(395,170,BLUE,WHITE,"Batarya : %?"); 00270 lcd.textWritePro(395,200,BLUE,WHITE,"Menzil : KM"); 00271 lcd.textWritePro(395,230,BLUE,WHITE,"Meyil Acisi : 22 derece"); 00272 lcd.textWritePro(395,260,BLUE,WHITE,"Trim Acisi : 11 derece"); 00273 lcd.textWritePro(395,290,BLUE,WHITE,"Donus Acisi : 125 derece"); 00274 00275 lcd.boxDraw(50,70,300,250,0,WHITE,BLUE); 00276 lcd.drawCircle(50+150,70+125,100,WHITE); 00277 lcd.drawCircle(50+150,70+125,99,WHITE); 00278 lcd.drawCircle(50+150,70+125,98,WHITE); 00279 lcd.drawCircle(50+150,70+125,97,WHITE); 00280 lcd.drawCircle(50+150,70+125,96,WHITE); 00281 lcd.textEnlarge(1); 00282 lcd.textWritePro(67,285,WHITE,BLUE,"HIZ"); 00283 lcd.textEnlarge(4); 00284 lcd.textWritePro(120+34,25+120,WHITE,BLUE, "220"); 00285 lcd.textEnlarge(2); 00286 lcd.textWritePro(120+35,120+40+40,WHITE,BLUE, "Knot"); 00287 //string s = to_string(rand() % 10 + 1;) 00288 } 00289 void menu2(){ 00290 lcd.rectHelper(50,70,800,330,BLACK,1); 00291 //lcd.rectHelper(30,70,770,330,WHITE,1); 00292 relay1_Button.x = 20; 00293 relay1_Button.y = 85; 00294 relay1_Button.w = 140; 00295 relay1_Button.h = 90; 00296 relay1_Button.textY = 85+30; 00297 relay1_Button.buttonName = " Relay 1"; 00298 relay1_Button.create(); 00299 00300 relay2_Button.x = 20; 00301 relay2_Button.y = 205; 00302 relay2_Button.w = 140; 00303 relay2_Button.h = 90; 00304 relay2_Button.textY = 205+30; 00305 relay2_Button.buttonName = " Relay 2"; 00306 relay2_Button.create(); 00307 00308 relay3_Button.x = 175; 00309 relay3_Button.y = 85; 00310 relay3_Button.w = 140; 00311 relay3_Button.h = 90; 00312 relay3_Button.textY = 85+30; 00313 relay3_Button.buttonName = " Relay 3"; 00314 relay3_Button.create(); 00315 00316 relay4_Button.x = 175; 00317 relay4_Button.y = 205; 00318 relay4_Button.w = 140; 00319 relay4_Button.h = 90; 00320 relay4_Button.textY = 205+30; 00321 relay4_Button.buttonName = " Relay 4"; 00322 relay4_Button.create(); 00323 00324 relay5_Button.x = 330; 00325 relay5_Button.y = 85; 00326 relay5_Button.w = 140; 00327 relay5_Button.h = 90; 00328 relay5_Button.textY = 85+30; 00329 relay5_Button.buttonName = " Relay 5"; 00330 relay5_Button.create(); 00331 00332 relay6_Button.x = 330; 00333 relay6_Button.y = 205; 00334 relay6_Button.w = 140; 00335 relay6_Button.h = 90; 00336 relay6_Button.textY = 205+30; 00337 relay6_Button.buttonName = " Relay 6"; 00338 relay6_Button.create(); 00339 00340 relay7_Button.x = 485; 00341 relay7_Button.y = 85; 00342 relay7_Button.w = 140; 00343 relay7_Button.h = 90; 00344 relay7_Button.textY = 85+30; 00345 relay7_Button.buttonName = " Relay 7"; 00346 relay7_Button.create(); 00347 00348 relay8_Button.x = 485; 00349 relay8_Button.y = 205; 00350 relay8_Button.w = 140; 00351 relay8_Button.h = 90; 00352 relay8_Button.textY = 205+30; 00353 relay8_Button.buttonName = " Relay 8"; 00354 relay8_Button.create(); 00355 00356 relay9_Button.x = 640; 00357 relay9_Button.y = 85; 00358 relay9_Button.w = 140; 00359 relay9_Button.h = 90; 00360 relay9_Button.textY = 85+30; 00361 relay9_Button.buttonName = " Relay 9"; 00362 relay9_Button.create(); 00363 00364 settings_Button.x = 640; 00365 settings_Button.y = 205; 00366 settings_Button.w = 140; 00367 settings_Button.h = 90; 00368 settings_Button.textY = 205+30; 00369 settings_Button.buttonName = " Ayarlar"; 00370 settings_Button.create(); 00371 00372 } 00373 00374 bool buttonState(uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax){ 00375 00376 float xScale = 1024.0F/lcd.width(); 00377 float yScale = 1024.0F/lcd.height(); 00378 if((uint16_t)(tx/xScale)>xMin && (uint16_t)(tx/xScale)<xMax){ 00379 if((uint16_t)(ty/yScale)>yMin && (uint16_t)(ty/yScale)<yMax){ 00380 return true; 00381 } 00382 } 00383 return false; 00384 00385 } 00386 00387 00388 00389
Generated on Thu Jul 21 2022 08:35:16 by 1.7.2