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

Dependencies:   mbed mbed-rtos UTouch_vyrobek UniGraphic

display.cpp

Committer:
smejky
Date:
2021-12-08
Revision:
2:0629f1ddaa92
Parent:
1:4dd546219e30
Child:
3:dadb214885c1

File content as of revision 2:0629f1ddaa92:

#include "mbed.h"
#include "ILI9341.h"
#include "UTouch.h"


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

*/

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
}  
}

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 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;

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




main(){
    spi.background(White);
    spi.cls(); 
    spi.circle(240, 320, 20, Black);
    touch.InitTouch();
    touch.SetPrecision(PREC_EXTREME);
    grafika();
    
    Button(0,0,180,70,Blue);
    
}