Toto je má konečná verze maturitního projektu
Dependencies: mbed mbed-rtos UTouch_vyrobek UniGraphic
display.cpp
- Committer:
- smejky
- Date:
- 2021-12-09
- Revision:
- 3:dadb214885c1
- Parent:
- 2:0629f1ddaa92
- Child:
- 4:c7ca936cdd1f
File content as of revision 3:dadb214885c1:
#include "mbed.h" #include "UTouch.h" #include "ILI9341.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 /* 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 */ void grafika(unsigned short int press = 0){ switch(press) { case 1: spi.fillrect(0,0,180,70,Blue);// pravy break; 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); } } void malovani(){ while(1==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; touch_y = touch_y + 10; spi.pixel(touch_x,touch_y,Blue); } } } } /* 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]; 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)); } //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(); // 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); 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 } } } } main(){ spi.FastWindow(true); touch.InitTouch(); touch.SetPrecision(PREC_EXTREME); spi.background(White); spi.cls(); spi.circle(240,320,20,Black); grafika(); Button(); }