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

Dependencies:   mbed mbed-rtos UTouch_vyrobek UniGraphic

Committer:
smejky
Date:
Sun Dec 12 10:02:41 2021 +0000
Revision:
5:7c757a7c97c5
Parent:
4:c7ca936cdd1f
Child:
6:8b186158b2a3
f

Who changed what in which revision?

UserRevisionLine numberNew contents of line
smejky 0:6abf63b83992 1 #include "mbed.h"
smejky 3:dadb214885c1 2 #include "UTouch.h"
smejky 0:6abf63b83992 3 #include "ILI9341.h"
smejky 0:6abf63b83992 4
smejky 3:dadb214885c1 5 UTouch touch(D4,D9,D3,D2,D5);//clk,chip_select,MOSI,miso,irq(pripojeno je ale nevim co to dela)
smejky 0:6abf63b83992 6 ILI9341 spi(SPI_8,320000000,PTD2,PTD3,PTD1,PTC12, PTC3, PTC2, "TFT",240,320);// mosi, miso, sclk, chip_select, reset, dc
smejky 3:dadb214885c1 7
smejky 0:6abf63b83992 8
smejky 0:6abf63b83992 9
smejky 0:6abf63b83992 10 /*
smejky 0:6abf63b83992 11 v ILI9341.cpp zmeneny framerate ze 70 na 100, toto pomohlo problemu blikání displeje
smejky 3:dadb214885c1 12 velikost fotky pro čudlik 180x70
smejky 3:dadb214885c1 13 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
smejky 0:6abf63b83992 14
smejky 0:6abf63b83992 15 */
smejky 0:6abf63b83992 16
smejky 4:c7ca936cdd1f 17 void grafika(unsigned short int press = 0){
smejky 5:7c757a7c97c5 18 int pozadi[] = {0,0,200,320,White}; //pozadi
smejky 5:7c757a7c97c5 19 int pravy[] = {0,0,199,70,Blue};
smejky 4:c7ca936cdd1f 20 int levy[] = {0,250,199,320,Blue};
smejky 5:7c757a7c97c5 21 // int cudlik[] = {20,80,38,130,Red};
smejky 4:c7ca936cdd1f 22 int spodni_levy[] = {200,240,240,320,Green};
smejky 4:c7ca936cdd1f 23 int stredni_levy[] = {200,159,240,239,Red};
smejky 4:c7ca936cdd1f 24 int stredni_pravy[] = {200,78,240,158,Purple};
smejky 5:7c757a7c97c5 25 int spodni_pravy[] = {200,0,240,77,Yellow};
smejky 5:7c757a7c97c5 26
smejky 4:c7ca936cdd1f 27
smejky 2:0629f1ddaa92 28 switch(press)
smejky 2:0629f1ddaa92 29 {
smejky 2:0629f1ddaa92 30 case 1:
smejky 4:c7ca936cdd1f 31 spi.fillrect(pravy[0],pravy[1],pravy[2],pravy[3],pravy[4]);// pravy
smejky 2:0629f1ddaa92 32 break;
smejky 4:c7ca936cdd1f 33 case 2:
smejky 4:c7ca936cdd1f 34 spi.fillrect(levy[0],levy[1],levy[2],levy[3],levy[4]);// levy
smejky 4:c7ca936cdd1f 35 break;
smejky 4:c7ca936cdd1f 36 case 3:
smejky 4:c7ca936cdd1f 37 spi.fillrect(spodni_levy[0],spodni_levy[1],spodni_levy[2],spodni_levy[3],spodni_levy[4]);// levy kraj spodni
smejky 2:0629f1ddaa92 38 break;
smejky 4:c7ca936cdd1f 39 case 4:
smejky 4:c7ca936cdd1f 40 spi.fillrect(stredni_levy[0],stredni_levy[1],stredni_levy[2],stredni_levy[3],stredni_levy[4]);// stred levy spodni
smejky 4:c7ca936cdd1f 41 break;
smejky 4:c7ca936cdd1f 42 case 5:
smejky 4:c7ca936cdd1f 43 spi.fillrect(stredni_pravy[0],stredni_pravy[1],stredni_pravy[2],stredni_pravy[3],stredni_pravy[4]);//stred pravy spodni
smejky 4:c7ca936cdd1f 44 break;
smejky 4:c7ca936cdd1f 45 case 6:
smejky 4:c7ca936cdd1f 46 spi.fillrect(spodni_pravy[0],spodni_pravy[1],spodni_pravy[2],spodni_pravy[3],spodni_pravy[4]); //pravy kraj spodni
smejky 4:c7ca936cdd1f 47 break;
smejky 4:c7ca936cdd1f 48
smejky 4:c7ca936cdd1f 49
smejky 4:c7ca936cdd1f 50 default:
smejky 5:7c757a7c97c5 51 spi.fillrect(pozadi[0],pozadi[1],pozadi[2],pozadi[3],pozadi[4]); //pozadi
smejky 5:7c757a7c97c5 52 spi.fillrect(pravy[0],pravy[1],pravy[2],pravy[3],pravy[4]); //pravy
smejky 4:c7ca936cdd1f 53 spi.fillrect(levy[0],levy[1],levy[2],levy[3],levy[4]); //levy
smejky 4:c7ca936cdd1f 54 spi.fillrect(spodni_levy[0],spodni_levy[1],spodni_levy[2],spodni_levy[3],spodni_levy[4]); //levy kraj spodni
smejky 4:c7ca936cdd1f 55 spi.fillrect(stredni_levy[0],stredni_levy[1],stredni_levy[2],stredni_levy[3],stredni_levy[4]); //stred levy spodni
smejky 4:c7ca936cdd1f 56 spi.fillrect(stredni_pravy[0],stredni_pravy[1],stredni_pravy[2],stredni_pravy[3],stredni_pravy[4]); //stred pravy spodni
smejky 4:c7ca936cdd1f 57 spi.fillrect(spodni_pravy[0],spodni_pravy[1],spodni_pravy[2],spodni_pravy[3],spodni_pravy[4]); //pravy kraj spodni
smejky 2:0629f1ddaa92 58 }
smejky 2:0629f1ddaa92 59 }
smejky 2:0629f1ddaa92 60
smejky 2:0629f1ddaa92 61 void malovani(){
smejky 2:0629f1ddaa92 62
smejky 1:4dd546219e30 63 while(1==1)
smejky 1:4dd546219e30 64 {
smejky 0:6abf63b83992 65 if (touch.DataAvailable())
smejky 0:6abf63b83992 66 {
smejky 0:6abf63b83992 67 if(touch.Read())
smejky 0:6abf63b83992 68 {
smejky 0:6abf63b83992 69 unsigned short int touch_y = touch.GetX();
smejky 1:4dd546219e30 70 unsigned short int touch_x = touch.GetY();
smejky 0:6abf63b83992 71 touch_x = touch_x - 10;
smejky 2:0629f1ddaa92 72 touch_y = touch_y + 10;
smejky 2:0629f1ddaa92 73 spi.pixel(touch_x,touch_y,Blue);
smejky 2:0629f1ddaa92 74 }
smejky 2:0629f1ddaa92 75 }
smejky 2:0629f1ddaa92 76 }
smejky 2:0629f1ddaa92 77 }
smejky 2:0629f1ddaa92 78
smejky 5:7c757a7c97c5 79 /*
smejky 5:7c757a7c97c5 80 else if ((touch_x > pravy[0]) && (touch_x < pravy[2]) && (touch_y < pravy[3]) && (touch_y > pravy [1])){
smejky 5:7c757a7c97c5 81 R_is_pressed = 1;
smejky 5:7c757a7c97c5 82 spi.fillrect(pravy[0],pravy[1],pravy[2],pravy[3],pravy[4]);
smejky 5:7c757a7c97c5 83 wait(0.1);
smejky 5:7c757a7c97c5 84 }
smejky 5:7c757a7c97c5 85
smejky 5:7c757a7c97c5 86 */
smejky 5:7c757a7c97c5 87
smejky 5:7c757a7c97c5 88
smejky 5:7c757a7c97c5 89
smejky 5:7c757a7c97c5 90 void Button(){
smejky 4:c7ca936cdd1f 91 int pravy[] = {0,0,200,70,Black}; //pravý čudlík
smejky 5:7c757a7c97c5 92 int levy[] = {0,250,200,320,Black}; //levý čudlík
smejky 4:c7ca936cdd1f 93 //int cudlik[] = {20,80,42,130,Orange}; //slider nepovedeny projekt
smejky 4:c7ca936cdd1f 94 //int stred_cudliku[] = {30,105,Blue}; //střed čudliku
smejky 4:c7ca936cdd1f 95 int spodni_levy[] = {200,240,240,320,Red}; // levy spodni cudlik
smejky 4:c7ca936cdd1f 96 int stredni_levy[] = {200,159,240,239,Green}; //stred levy spodni cudlik
smejky 4:c7ca936cdd1f 97 int stredni_pravy[] = {200,78,240,158,Yellow}; //stred pravy spodni cudlik
smejky 5:7c757a7c97c5 98 int spodni_pravy[] = {200,0,240,77,Purple}; // pravy spodni cudlik
smejky 3:dadb214885c1 99 while(1)
smejky 2:0629f1ddaa92 100 {
smejky 2:0629f1ddaa92 101 if (touch.DataAvailable())
smejky 2:0629f1ddaa92 102 {
smejky 2:0629f1ddaa92 103 if(touch.Read())
smejky 2:0629f1ddaa92 104 {
smejky 5:7c757a7c97c5 105
smejky 5:7c757a7c97c5 106
smejky 3:dadb214885c1 107 unsigned short int touch_y = touch.GetX(); // 0-320
smejky 3:dadb214885c1 108 unsigned short int touch_x = touch.GetY(); // 0-240
smejky 3:dadb214885c1 109 touch_x = touch_x - 5;
smejky 2:0629f1ddaa92 110 touch_y = touch_y + 10;
smejky 3:dadb214885c1 111 //spi.pixel(touch_x,touch_y,Blue);
smejky 5:7c757a7c97c5 112 //printf("x %d ,y %d\r\n",touch_x,touch_y);
smejky 3:dadb214885c1 113
smejky 3:dadb214885c1 114 //pravý čudlik
smejky 5:7c757a7c97c5 115 if ((touch_x > pravy[0]) && (touch_x < pravy[2]) && (touch_y < pravy[3]) && (touch_y > pravy[1])){
smejky 5:7c757a7c97c5 116 int i = touch.DataAvailable();
smejky 5:7c757a7c97c5 117 while (i){
smejky 3:dadb214885c1 118 spi.fillrect(pravy[0],pravy[1],pravy[2],pravy[3],pravy[4]);
smejky 5:7c757a7c97c5 119 i = touch.DataAvailable();
smejky 5:7c757a7c97c5 120 }
smejky 5:7c757a7c97c5 121 grafika(1);
smejky 5:7c757a7c97c5 122 wait(0.2);
smejky 5:7c757a7c97c5 123 }
smejky 5:7c757a7c97c5 124
smejky 3:dadb214885c1 125 //pravý čudlik
smejky 3:dadb214885c1 126
smejky 4:c7ca936cdd1f 127 //levý čudlik
smejky 5:7c757a7c97c5 128 if ((touch_x > levy[0]) && (touch_x < levy[2]) && (touch_y < levy[3]) && (touch_y > levy[1])){
smejky 5:7c757a7c97c5 129 int i = touch.DataAvailable();
smejky 5:7c757a7c97c5 130 while (i){
smejky 3:dadb214885c1 131 spi.fillrect(levy[0],levy[1],levy[2],levy[3],levy[4]);
smejky 5:7c757a7c97c5 132 i = touch.DataAvailable();
smejky 5:7c757a7c97c5 133 }
smejky 5:7c757a7c97c5 134 grafika(2);
smejky 5:7c757a7c97c5 135 wait(0.2);
smejky 5:7c757a7c97c5 136 }
smejky 3:dadb214885c1 137 //levý čudlik
smejky 4:c7ca936cdd1f 138
smejky 4:c7ca936cdd1f 139 //levý spodni čudlik
smejky 5:7c757a7c97c5 140 if ((touch_x > spodni_levy[0]) && (touch_x < spodni_levy[2]) && (touch_y < spodni_levy[3]) && (touch_y > spodni_levy[1])){
smejky 5:7c757a7c97c5 141 int i = touch.DataAvailable();
smejky 5:7c757a7c97c5 142 int e = 0;
smejky 5:7c757a7c97c5 143 while (i){
smejky 4:c7ca936cdd1f 144 spi.fillrect(spodni_levy[0],spodni_levy[1],spodni_levy[2],spodni_levy[3],spodni_levy[4]);
smejky 5:7c757a7c97c5 145 i = touch.DataAvailable();
smejky 5:7c757a7c97c5 146 e++;
smejky 5:7c757a7c97c5 147 }
smejky 5:7c757a7c97c5 148 printf("%d",e);
smejky 5:7c757a7c97c5 149 grafika(3);
smejky 5:7c757a7c97c5 150 wait(0.2);
smejky 5:7c757a7c97c5 151 }
smejky 4:c7ca936cdd1f 152 //levý spodni čudlik
smejky 3:dadb214885c1 153
smejky 4:c7ca936cdd1f 154
smejky 4:c7ca936cdd1f 155 //stred levy spodni cudlik
smejky 5:7c757a7c97c5 156 if ((touch_x > stredni_levy[0]) && (touch_x < stredni_levy[2]) && (touch_y < stredni_levy[3]) && (touch_y > stredni_levy[1])){
smejky 5:7c757a7c97c5 157 int i = touch.DataAvailable();
smejky 5:7c757a7c97c5 158 while (i){
smejky 4:c7ca936cdd1f 159 spi.fillrect(stredni_levy[0],stredni_levy[1],stredni_levy[2],stredni_levy[3],stredni_levy[4]);
smejky 5:7c757a7c97c5 160 i = touch.DataAvailable();
smejky 5:7c757a7c97c5 161 }
smejky 5:7c757a7c97c5 162 grafika(4);
smejky 5:7c757a7c97c5 163 wait(0.2);
smejky 5:7c757a7c97c5 164 }
smejky 4:c7ca936cdd1f 165 //stred levy spodni cudlik
smejky 4:c7ca936cdd1f 166
smejky 4:c7ca936cdd1f 167
smejky 4:c7ca936cdd1f 168 //stred pravy spodni cudlik
smejky 5:7c757a7c97c5 169 if ((touch_x > stredni_pravy[0]) && (touch_x < stredni_pravy[2]) && (touch_y < stredni_pravy[3]) && (touch_y > stredni_pravy[1])){
smejky 5:7c757a7c97c5 170 int i = touch.DataAvailable();
smejky 5:7c757a7c97c5 171 while (i){
smejky 4:c7ca936cdd1f 172 spi.fillrect(stredni_pravy[0],stredni_pravy[1],stredni_pravy[2],stredni_pravy[3],stredni_pravy[4]);
smejky 5:7c757a7c97c5 173 i = touch.DataAvailable();
smejky 5:7c757a7c97c5 174 }
smejky 5:7c757a7c97c5 175 grafika(5);
smejky 5:7c757a7c97c5 176 wait(0.2);
smejky 5:7c757a7c97c5 177 }
smejky 4:c7ca936cdd1f 178 //stred pravy spodni cudlik
smejky 4:c7ca936cdd1f 179
smejky 4:c7ca936cdd1f 180 //kraj pravy spodni cudlik
smejky 5:7c757a7c97c5 181 if ((touch_x > spodni_pravy[0]) && (touch_x < spodni_pravy[2]) && (touch_y < spodni_pravy[3]) && (touch_y > spodni_pravy[1])){
smejky 5:7c757a7c97c5 182 int i = touch.DataAvailable();
smejky 5:7c757a7c97c5 183 while (i){
smejky 4:c7ca936cdd1f 184 spi.fillrect(spodni_pravy[0],spodni_pravy[1],spodni_pravy[2],spodni_pravy[3],spodni_pravy[4]);
smejky 5:7c757a7c97c5 185 i = touch.DataAvailable();
smejky 5:7c757a7c97c5 186 }
smejky 5:7c757a7c97c5 187 grafika(6);
smejky 5:7c757a7c97c5 188 wait(0.2);
smejky 4:c7ca936cdd1f 189 }
smejky 4:c7ca936cdd1f 190 //kraj pravy spodni cudlik
smejky 3:dadb214885c1 191
smejky 1:4dd546219e30 192 }
smejky 1:4dd546219e30 193 }
smejky 1:4dd546219e30 194 }
smejky 1:4dd546219e30 195 }
smejky 0:6abf63b83992 196
smejky 0:6abf63b83992 197
smejky 0:6abf63b83992 198
smejky 2:0629f1ddaa92 199
smejky 0:6abf63b83992 200 main(){
smejky 3:dadb214885c1 201 spi.FastWindow(true);
smejky 0:6abf63b83992 202 touch.InitTouch();
smejky 0:6abf63b83992 203 touch.SetPrecision(PREC_EXTREME);
smejky 3:dadb214885c1 204 spi.background(White);
smejky 3:dadb214885c1 205 spi.cls();
smejky 4:c7ca936cdd1f 206 //spi.circle(240,320,20,Black);
smejky 0:6abf63b83992 207
smejky 3:dadb214885c1 208 grafika();
smejky 3:dadb214885c1 209 Button();
smejky 3:dadb214885c1 210
smejky 2:0629f1ddaa92 211
smejky 0:6abf63b83992 212 }
smejky 4:c7ca936cdd1f 213
smejky 4:c7ca936cdd1f 214
smejky 4:c7ca936cdd1f 215
smejky 4:c7ca936cdd1f 216
smejky 4:c7ca936cdd1f 217 /* fail projekty
smejky 4:c7ca936cdd1f 218
smejky 4:c7ca936cdd1f 219
smejky 4:c7ca936cdd1f 220
smejky 4:c7ca936cdd1f 221
smejky 4:c7ca936cdd1f 222
smejky 4:c7ca936cdd1f 223
smejky 4:c7ca936cdd1f 224
smejky 4:c7ca936cdd1f 225
smejky 4:c7ca936cdd1f 226
smejky 4:c7ca936cdd1f 227
smejky 4:c7ca936cdd1f 228
smejky 4:c7ca936cdd1f 229
smejky 4:c7ca936cdd1f 230
smejky 4:c7ca936cdd1f 231 //slider
smejky 4:c7ca936cdd1f 232 if ((touch_x > cudlik[0]) && (touch_x < cudlik[2]) && (touch_y > cudlik[1]) && (touch_y < cudlik[3]) && (pressure > 0)){
smejky 4:c7ca936cdd1f 233
smejky 4:c7ca936cdd1f 234
smejky 4:c7ca936cdd1f 235 //if je udelany tady pro nastavení minima a maxima
smejky 4:c7ca936cdd1f 236 if ((touch_x > 25) && (touch_x < 140)){
smejky 4:c7ca936cdd1f 237
smejky 4:c7ca936cdd1f 238 unsigned short int y0 = cudlik[1];
smejky 4:c7ca936cdd1f 239 unsigned short int y1 = cudlik[3];
smejky 4:c7ca936cdd1f 240 unsigned short int x_zadelavani_chyby = cudlik[0];
smejky 4:c7ca936cdd1f 241 unsigned short int x0 = x_zadelavani_chyby - 8;
smejky 4:c7ca936cdd1f 242
smejky 4:c7ca936cdd1f 243 //printf("%d\r\n",touch_x);
smejky 4:c7ca936cdd1f 244 stred_cudliku[0] = touch_x;
smejky 4:c7ca936cdd1f 245
smejky 4:c7ca936cdd1f 246 cudlik[0] = stred_cudliku[0] - 10;
smejky 4:c7ca936cdd1f 247 cudlik[1] = stred_cudliku[1] - 25;
smejky 4:c7ca936cdd1f 248 cudlik[2] = stred_cudliku[0] + 10;
smejky 4:c7ca936cdd1f 249 cudlik[3] = stred_cudliku[1] + 25;
smejky 4:c7ca936cdd1f 250
smejky 4:c7ca936cdd1f 251
smejky 4:c7ca936cdd1f 252
smejky 4:c7ca936cdd1f 253 if (touch_x > 34){
smejky 4:c7ca936cdd1f 254 x0 = x_zadelavani_chyby + 8;
smejky 4:c7ca936cdd1f 255 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Green);
smejky 4:c7ca936cdd1f 256
smejky 4:c7ca936cdd1f 257 }else{
smejky 4:c7ca936cdd1f 258 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Black);
smejky 4:c7ca936cdd1f 259 }
smejky 4:c7ca936cdd1f 260
smejky 4:c7ca936cdd1f 261 if (touch_x < 34){
smejky 4:c7ca936cdd1f 262 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Black);
smejky 4:c7ca936cdd1f 263
smejky 4:c7ca936cdd1f 264 }else{
smejky 4:c7ca936cdd1f 265 x0 = x_zadelavani_chyby + 8;
smejky 4:c7ca936cdd1f 266 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Green);
smejky 4:c7ca936cdd1f 267 }
smejky 4:c7ca936cdd1f 268 spi.fillrect(cudlik[0],cudlik[1],cudlik[2],cudlik[3],cudlik[4]);
smejky 4:c7ca936cdd1f 269
smejky 4:c7ca936cdd1f 270
smejky 4:c7ca936cdd1f 271
smejky 4:c7ca936cdd1f 272 }
smejky 4:c7ca936cdd1f 273 }
smejky 4:c7ca936cdd1f 274
smejky 4:c7ca936cdd1f 275 //slider */
smejky 4:c7ca936cdd1f 276
smejky 4:c7ca936cdd1f 277