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

Dependencies:   mbed mbed-rtos UTouch_vyrobek UniGraphic

Committer:
smejky
Date:
Sun Dec 12 10:04:44 2021 +0000
Revision:
6:8b186158b2a3
Parent:
5:7c757a7c97c5
Child:
7:91b982ccf255
kaslu na aj do te doby nez se pustim cudliku tak je tam porad stejna barva jakmile se pustim prejde to zpatky na svou barvu

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 //slider
smejky 4:c7ca936cdd1f 231 if ((touch_x > cudlik[0]) && (touch_x < cudlik[2]) && (touch_y > cudlik[1]) && (touch_y < cudlik[3]) && (pressure > 0)){
smejky 4:c7ca936cdd1f 232
smejky 4:c7ca936cdd1f 233
smejky 4:c7ca936cdd1f 234 //if je udelany tady pro nastavení minima a maxima
smejky 4:c7ca936cdd1f 235 if ((touch_x > 25) && (touch_x < 140)){
smejky 4:c7ca936cdd1f 236
smejky 4:c7ca936cdd1f 237 unsigned short int y0 = cudlik[1];
smejky 4:c7ca936cdd1f 238 unsigned short int y1 = cudlik[3];
smejky 4:c7ca936cdd1f 239 unsigned short int x_zadelavani_chyby = cudlik[0];
smejky 4:c7ca936cdd1f 240 unsigned short int x0 = x_zadelavani_chyby - 8;
smejky 4:c7ca936cdd1f 241
smejky 4:c7ca936cdd1f 242 //printf("%d\r\n",touch_x);
smejky 4:c7ca936cdd1f 243 stred_cudliku[0] = touch_x;
smejky 4:c7ca936cdd1f 244
smejky 4:c7ca936cdd1f 245 cudlik[0] = stred_cudliku[0] - 10;
smejky 4:c7ca936cdd1f 246 cudlik[1] = stred_cudliku[1] - 25;
smejky 4:c7ca936cdd1f 247 cudlik[2] = stred_cudliku[0] + 10;
smejky 4:c7ca936cdd1f 248 cudlik[3] = stred_cudliku[1] + 25;
smejky 4:c7ca936cdd1f 249
smejky 4:c7ca936cdd1f 250
smejky 4:c7ca936cdd1f 251
smejky 4:c7ca936cdd1f 252 if (touch_x > 34){
smejky 4:c7ca936cdd1f 253 x0 = x_zadelavani_chyby + 8;
smejky 4:c7ca936cdd1f 254 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Green);
smejky 4:c7ca936cdd1f 255
smejky 4:c7ca936cdd1f 256 }else{
smejky 4:c7ca936cdd1f 257 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Black);
smejky 4:c7ca936cdd1f 258 }
smejky 4:c7ca936cdd1f 259
smejky 4:c7ca936cdd1f 260 if (touch_x < 34){
smejky 4:c7ca936cdd1f 261 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Black);
smejky 4:c7ca936cdd1f 262
smejky 4:c7ca936cdd1f 263 }else{
smejky 4:c7ca936cdd1f 264 x0 = x_zadelavani_chyby + 8;
smejky 4:c7ca936cdd1f 265 spi.fillrect(x0,y0,x_zadelavani_chyby,y1,Green);
smejky 4:c7ca936cdd1f 266 }
smejky 4:c7ca936cdd1f 267 spi.fillrect(cudlik[0],cudlik[1],cudlik[2],cudlik[3],cudlik[4]);
smejky 4:c7ca936cdd1f 268
smejky 4:c7ca936cdd1f 269
smejky 4:c7ca936cdd1f 270
smejky 4:c7ca936cdd1f 271 }
smejky 4:c7ca936cdd1f 272 }
smejky 4:c7ca936cdd1f 273
smejky 4:c7ca936cdd1f 274 //slider */
smejky 4:c7ca936cdd1f 275
smejky 4:c7ca936cdd1f 276