Toto je má konečná verze maturitního projektu

Dependencies:   mbed mbed-rtos UTouch_vyrobek UniGraphic

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();
+    
     
 }