Toto je má konečná verze maturitního projektu
Dependencies: mbed mbed-rtos UTouch_vyrobek UniGraphic
Diff: display.cpp
- Revision:
- 3:dadb214885c1
- Parent:
- 2:0629f1ddaa92
- Child:
- 4:c7ca936cdd1f
diff -r 0629f1ddaa92 -r dadb214885c1 display.cpp --- a/display.cpp Wed Dec 08 16:08:32 2021 +0000 +++ b/display.cpp Thu Dec 09 22:15:04 2021 +0000 @@ -1,14 +1,17 @@ #include "mbed.h" +#include "UTouch.h" #include "ILI9341.h" -#include "UTouch.h" +UTouch touch(D4,D9,D3,D2,D5);//clk,chip_select,MOSI,miso,irq(pripojeno je ale nevim co to dela) ILI9341 spi(SPI_8,320000000,PTD2,PTD3,PTD1,PTC12, PTC3, PTC2, "TFT",240,320);// mosi, miso, sclk, chip_select, reset, dc -UTouch touch(D4,D9,D3,D2,D5);//clk,chip_select,MOSI,miso,irq(pripojeno je ale nevim co to dela) + /* v ILI9341.cpp zmeneny framerate ze 70 na 100, toto pomohlo problemu blikání displeje + velikost fotky pro čudlik 180x70 +x0 = od leveho horniho rohu(240max) y=0 od leveho horniho rohu x1 = od pravého spodniho rohu(240max) mel by byt vetsi nez x0 y1 = od pravého spodniho rohu mel by byt vetsi nez y0 */ @@ -21,10 +24,14 @@ case 2 : spi.fillrect(0,320,180,250,Blue);// levy break; + default : + spi.fillrect(0,0,180,70,Blue); //pravy spi.fillrect(0,140,180,71,Black); //stred spi.fillrect(0,320,180,250,Blue); //levy + spi.fillrect(20,80,38,130,Red); //letajici cudlik + spi.pixel(30,105,Blue); } } @@ -45,33 +52,117 @@ } } } +/* +void Slider(int cudlik[],int stred_cudliku[]){ + int pressure= touch.GetPressure(); + while(pressure > 0){ + + printf("%d\r\n",pressure); + unsigned short int touch_x = touch.GetY(); // 0-240 + + + unsigned short int x0 = cudlik[0]; + unsigned short int x1 = cudlik[2]; + unsigned short int y0 = cudlik[1]; + unsigned short int y1 = cudlik[3]; -void Button(unsigned short int x0, unsigned short int y0,unsigned short int x1, unsigned short int y1,int color){ - spi.fillrect(x0,y0,x1,y1,color); - int is_pressed = 0; + if(touch_x > stred_cudliku[0]){ + + stred_cudliku[0] = touch_x - (stred_cudliku[0] + (stred_cudliku[0] + 1)); + }else if(touch_x < stred_cudliku[0]){ + + stred_cudliku[0] = touch_x + (stred_cudliku[0] - (stred_cudliku[0] - 1)); + } - while(1==1) + + //stred_cudliku[0] = ((x0-x1)/2); + + cudlik[0] = (touch_x*2) - x1; + cudlik[2] = (touch_x*2) - x0; + + //cudlik[1] = (touch_y*2) - y1; + //cudlik[3] = (touch_y*2) - y0; + + spi.fillrect(x0,y0,x1,y1,Black); + spi.fillrect(cudlik[0],cudlik[1],cudlik[2],cudlik[3],cudlik[4]); + spi.pixel(stred_cudliku[0],stred_cudliku[1],stred_cudliku[2]); + pressure = touch.GetPressure(); + + } + + } +*/ +void Button(){ + int R_is_pressed = 0; //pro pravy čudlik + int L_is_pressed = 0; //pro levy čudlik + + int pravy[] = {0,0,180,70,Black}; //pravý čudlík + int levy[] = {0,320,180,250,Black}; //levý čudlík + int cudlik[] = {20,80,42,130,Orange}; // čudlík + int stred_cudliku[] = {30,105,Blue}; + + + while(1) { if (touch.DataAvailable()) { if(touch.Read()) { - unsigned short int touch_y = touch.GetX(); - unsigned short int touch_x = touch.GetY(); - touch_x = touch_x - 10; + unsigned short int touch_y = touch.GetX(); // 0-320 + unsigned short int touch_x = touch.GetY(); // 0-240 + touch_x = touch_x - 5; touch_y = touch_y + 10; - spi.pixel(touch_x,touch_y,Blue); - if ((touch_x >= x0 && touch_x <= x1)&&(touch_y >= y0 && touch_y <= y1) && is_pressed == 1){ - spi.fillrect(x0,y0,x1,y1,Black); - is_pressed = 0; - wait(0.1); - }else if ((touch_x >= x0 && touch_x <= x1)&&(touch_y >= y0 && touch_y <= y1)){ - is_pressed = 1; - grafika(is_pressed); - wait(0.1); - + //spi.pixel(touch_x,touch_y,Blue); + int pressure = touch.GetPressure(); + + + //pravý čudlik + if ((touch_x > pravy[0]) && (touch_x < pravy[2]) && (touch_y < pravy [3]) && (touch_y > pravy [1]) && (R_is_pressed == 1)){ + grafika(R_is_pressed); + R_is_pressed = 0; + wait(0.3); + }else if ((touch_x > pravy[0]) && (touch_x < pravy[2]) && (touch_y < pravy [3]) && (touch_y > pravy [1])){ + R_is_pressed = 1; + spi.fillrect(pravy[0],pravy[1],pravy[2],pravy[3],pravy[4]); + wait(0.3); + } + //pravý čudlik + + //levý čudlik + if ((touch_x > levy[0]) && (touch_x < levy[2]) && (touch_y < levy [1]) && (touch_y > levy [3]) && (L_is_pressed == 2)){ + grafika(L_is_pressed); + L_is_pressed = 0; + wait(0.3); + }else if ((touch_x > levy[0]) && (touch_x < levy[2]) && (touch_y < levy [1]) && (touch_y > levy [3])){ + L_is_pressed = 2; + spi.fillrect(levy[0],levy[1],levy[2],levy[3],levy[4]); + wait(0.3); + } + //levý čudlik + + //cudlik + if ((touch_x > cudlik[0]) && (touch_x < cudlik[2]) && (touch_y > cudlik [1]) && (touch_y < cudlik [3]) && (pressure > 0)){ + + unsigned short int x0 = cudlik[0]; + unsigned short int x1 = cudlik[2]; + unsigned short int y0 = cudlik[1]; + unsigned short int y1 = cudlik[3]; + + stred_cudliku[0] = touch_x; - } + cudlik[0] = stred_cudliku[0] - 10; + cudlik[1] = stred_cudliku[1] - 25; + cudlik[2] = stred_cudliku[0] + 10; + cudlik[3] = stred_cudliku[1] + 25; + + spi.pixel(stred_cudliku[0],stred_cudliku[1],stred_cudliku[2]); + spi.fillrect(x0,y0,x1,y1,Black); + spi.fillrect(cudlik[0],cudlik[1],cudlik[2],cudlik[3],cudlik[4]); + printf("%d new \r\n",cudlik[1]); + } + + //cudlik + } } } @@ -81,13 +172,15 @@ main(){ - spi.background(White); - spi.cls(); - spi.circle(240, 320, 20, Black); + spi.FastWindow(true); touch.InitTouch(); touch.SetPrecision(PREC_EXTREME); - grafika(); + spi.background(White); + spi.cls(); + spi.circle(240,320,20,Black); - Button(0,0,180,70,Blue); + grafika(); + Button(); + }