Toto je má konečná verze maturitního projektu
Dependencies: mbed mbed-rtos UTouch_vyrobek UniGraphic
Revision 3:dadb214885c1, committed 2021-12-09
- Comitter:
- smejky
- Date:
- Thu Dec 09 22:15:04 2021 +0000
- Parent:
- 2:0629f1ddaa92
- Child:
- 4:c7ca936cdd1f
- Commit message:
- working slider;
Changed in this revision
| display.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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();
+
}