![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
LV7 Zad01 priprema Sumejja Porca
main.cpp@0:b7c72ff94dc1, 2014-04-28 (annotated)
- Committer:
- tim008
- Date:
- Mon Apr 28 10:45:20 2014 +0000
- Revision:
- 0:b7c72ff94dc1
- Child:
- 1:0d0b41d5ac80
priprema
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tim008 | 0:b7c72ff94dc1 | 1 | #include "mbed.h" |
tim008 | 0:b7c72ff94dc1 | 2 | #include "N5110.h" |
tim008 | 0:b7c72ff94dc1 | 3 | |
tim008 | 0:b7c72ff94dc1 | 4 | //Analogni ulazi sa dzojstika |
tim008 | 0:b7c72ff94dc1 | 5 | AnalogIn VRx(dp11); |
tim008 | 0:b7c72ff94dc1 | 6 | AnalogIn VRy(dp10); |
tim008 | 0:b7c72ff94dc1 | 7 | //Taster sa dzojstika |
tim008 | 0:b7c72ff94dc1 | 8 | DigitalIn SW(dp9); |
tim008 | 0:b7c72ff94dc1 | 9 | |
tim008 | 0:b7c72ff94dc1 | 10 | //Deklaracija LCD objekta |
tim008 | 0:b7c72ff94dc1 | 11 | //N5110 lcd(VCC,SCE,RST,D/C,MOSI,SCLK,LED) |
tim008 | 0:b7c72ff94dc1 | 12 | N5110 lcd(dp4,dp24,dp23,dp25,dp2,dp6,dp18); |
tim008 | 0:b7c72ff94dc1 | 13 | |
tim008 | 0:b7c72ff94dc1 | 14 | |
tim008 | 0:b7c72ff94dc1 | 15 | //Digitalni izlaz za deaktivaciju LED buffera |
tim008 | 0:b7c72ff94dc1 | 16 | DigitalOut enable(dp14); |
tim008 | 0:b7c72ff94dc1 | 17 | |
tim008 | 0:b7c72ff94dc1 | 18 | //koordinate crosshair kursora / na sredini ekrana |
tim008 | 0:b7c72ff94dc1 | 19 | int x1(40), y1(23), x2(41), y2(22), x3(42), y3(23), x4(41), y4(24); |
tim008 | 0:b7c72ff94dc1 | 20 | |
tim008 | 0:b7c72ff94dc1 | 21 | //koordinate tacaka dijagonala |
tim008 | 0:b7c72ff94dc1 | 22 | int xd1(-1), yd1(-1), xd2(-1), yd2(-1); |
tim008 | 0:b7c72ff94dc1 | 23 | |
tim008 | 0:b7c72ff94dc1 | 24 | //taster za dodavanje tacke/ brisanje svih tacaka |
tim008 | 0:b7c72ff94dc1 | 25 | InterruptIn taster1(dp1); |
tim008 | 0:b7c72ff94dc1 | 26 | |
tim008 | 0:b7c72ff94dc1 | 27 | // timer koji mjeri vrijeme izmedju dva tastera |
tim008 | 0:b7c72ff94dc1 | 28 | Timer timer; |
tim008 | 0:b7c72ff94dc1 | 29 | |
tim008 | 0:b7c72ff94dc1 | 30 | //funkcija za pravljenje pravougaonika kad vec imamo tacke dijagonale |
tim008 | 0:b7c72ff94dc1 | 31 | void makeRectangle() |
tim008 | 0:b7c72ff94dc1 | 32 | { |
tim008 | 0:b7c72ff94dc1 | 33 | int Ax, Ay, Bx, By, Cx, Cy, Dx, Dy; |
tim008 | 0:b7c72ff94dc1 | 34 | if( xd1 <= xd2 && yd1 > yd2 ) |
tim008 | 0:b7c72ff94dc1 | 35 | { |
tim008 | 0:b7c72ff94dc1 | 36 | Bx = xd2; |
tim008 | 0:b7c72ff94dc1 | 37 | By = yd2; |
tim008 | 0:b7c72ff94dc1 | 38 | Dx = xd1; |
tim008 | 0:b7c72ff94dc1 | 39 | Dy = yd1; |
tim008 | 0:b7c72ff94dc1 | 40 | |
tim008 | 0:b7c72ff94dc1 | 41 | Ax = Dx; |
tim008 | 0:b7c72ff94dc1 | 42 | Ay = By; |
tim008 | 0:b7c72ff94dc1 | 43 | Cx = Bx; |
tim008 | 0:b7c72ff94dc1 | 44 | Cy = Dy; |
tim008 | 0:b7c72ff94dc1 | 45 | } |
tim008 | 0:b7c72ff94dc1 | 46 | else if( xd2 <= xd1 && yd2 > yd1 ) |
tim008 | 0:b7c72ff94dc1 | 47 | { |
tim008 | 0:b7c72ff94dc1 | 48 | Bx = xd1; |
tim008 | 0:b7c72ff94dc1 | 49 | By = yd1; |
tim008 | 0:b7c72ff94dc1 | 50 | Dx = xd2; |
tim008 | 0:b7c72ff94dc1 | 51 | Dy = yd2; |
tim008 | 0:b7c72ff94dc1 | 52 | |
tim008 | 0:b7c72ff94dc1 | 53 | Ax = Dx; |
tim008 | 0:b7c72ff94dc1 | 54 | Ay = By; |
tim008 | 0:b7c72ff94dc1 | 55 | Cx = Bx; |
tim008 | 0:b7c72ff94dc1 | 56 | Cy = Dy; |
tim008 | 0:b7c72ff94dc1 | 57 | } |
tim008 | 0:b7c72ff94dc1 | 58 | else if ( xd1 < xd2 && yd1 <= yd2 ) |
tim008 | 0:b7c72ff94dc1 | 59 | { |
tim008 | 0:b7c72ff94dc1 | 60 | Ax = xd1; |
tim008 | 0:b7c72ff94dc1 | 61 | Ay = yd1; |
tim008 | 0:b7c72ff94dc1 | 62 | Cx = xd2; |
tim008 | 0:b7c72ff94dc1 | 63 | Cy = yd2; |
tim008 | 0:b7c72ff94dc1 | 64 | |
tim008 | 0:b7c72ff94dc1 | 65 | Bx = Cx; |
tim008 | 0:b7c72ff94dc1 | 66 | By = Ay; |
tim008 | 0:b7c72ff94dc1 | 67 | Dx = Ax; |
tim008 | 0:b7c72ff94dc1 | 68 | Dy = Cy; |
tim008 | 0:b7c72ff94dc1 | 69 | } |
tim008 | 0:b7c72ff94dc1 | 70 | else if ( xd2 < xd1 && yd2 <= yd1 ) |
tim008 | 0:b7c72ff94dc1 | 71 | { |
tim008 | 0:b7c72ff94dc1 | 72 | Ax = xd2; |
tim008 | 0:b7c72ff94dc1 | 73 | Ay = yd2; |
tim008 | 0:b7c72ff94dc1 | 74 | Cx = xd1; |
tim008 | 0:b7c72ff94dc1 | 75 | Cy = yd1; |
tim008 | 0:b7c72ff94dc1 | 76 | |
tim008 | 0:b7c72ff94dc1 | 77 | |
tim008 | 0:b7c72ff94dc1 | 78 | Bx = Cx; |
tim008 | 0:b7c72ff94dc1 | 79 | By = Ay; |
tim008 | 0:b7c72ff94dc1 | 80 | Dx = Ax; |
tim008 | 0:b7c72ff94dc1 | 81 | Dy = Cy; |
tim008 | 0:b7c72ff94dc1 | 82 | } |
tim008 | 0:b7c72ff94dc1 | 83 | |
tim008 | 0:b7c72ff94dc1 | 84 | int i, j; |
tim008 | 0:b7c72ff94dc1 | 85 | // crtamo pravougaonik |
tim008 | 0:b7c72ff94dc1 | 86 | for( i = Ay; i <= Dy; i++) |
tim008 | 0:b7c72ff94dc1 | 87 | for( j = Ax; j <= Cx; j++) |
tim008 | 0:b7c72ff94dc1 | 88 | { |
tim008 | 0:b7c72ff94dc1 | 89 | lcd.setPixel(j,i); |
tim008 | 0:b7c72ff94dc1 | 90 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 91 | } |
tim008 | 0:b7c72ff94dc1 | 92 | } |
tim008 | 0:b7c72ff94dc1 | 93 | |
tim008 | 0:b7c72ff94dc1 | 94 | // funkcija za dodavanje tacke dijagonale/ pravljenje pravougaonika |
tim008 | 0:b7c72ff94dc1 | 95 | void setPoint() |
tim008 | 0:b7c72ff94dc1 | 96 | { |
tim008 | 0:b7c72ff94dc1 | 97 | if(timer.read() <= 0.001) |
tim008 | 0:b7c72ff94dc1 | 98 | { |
tim008 | 0:b7c72ff94dc1 | 99 | lcd.clear(); |
tim008 | 0:b7c72ff94dc1 | 100 | xd1 = -1; |
tim008 | 0:b7c72ff94dc1 | 101 | yd1 = -1; |
tim008 | 0:b7c72ff94dc1 | 102 | xd2 = -1; |
tim008 | 0:b7c72ff94dc1 | 103 | yd2 = -1; |
tim008 | 0:b7c72ff94dc1 | 104 | x1 = 40; |
tim008 | 0:b7c72ff94dc1 | 105 | y1 = 23; |
tim008 | 0:b7c72ff94dc1 | 106 | x2 = 41; |
tim008 | 0:b7c72ff94dc1 | 107 | y2 = 22; |
tim008 | 0:b7c72ff94dc1 | 108 | x3 = 42; |
tim008 | 0:b7c72ff94dc1 | 109 | y3 = 23; |
tim008 | 0:b7c72ff94dc1 | 110 | x4 = 41; |
tim008 | 0:b7c72ff94dc1 | 111 | y4 = 24; |
tim008 | 0:b7c72ff94dc1 | 112 | lcd.setPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 113 | lcd.setPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 114 | lcd.setPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 115 | lcd.setPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 116 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 117 | timer.reset(); |
tim008 | 0:b7c72ff94dc1 | 118 | return; |
tim008 | 0:b7c72ff94dc1 | 119 | } |
tim008 | 0:b7c72ff94dc1 | 120 | timer.reset(); |
tim008 | 0:b7c72ff94dc1 | 121 | if( xd1 < 0 ) |
tim008 | 0:b7c72ff94dc1 | 122 | { |
tim008 | 0:b7c72ff94dc1 | 123 | xd1 = x2; |
tim008 | 0:b7c72ff94dc1 | 124 | yd1 = y1; |
tim008 | 0:b7c72ff94dc1 | 125 | lcd.setPixel(xd1, yd1); |
tim008 | 0:b7c72ff94dc1 | 126 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 127 | } |
tim008 | 0:b7c72ff94dc1 | 128 | else |
tim008 | 0:b7c72ff94dc1 | 129 | { |
tim008 | 0:b7c72ff94dc1 | 130 | xd2 = x2; |
tim008 | 0:b7c72ff94dc1 | 131 | yd2 = y1; |
tim008 | 0:b7c72ff94dc1 | 132 | makeRectangle(); |
tim008 | 0:b7c72ff94dc1 | 133 | xd1 = -1; |
tim008 | 0:b7c72ff94dc1 | 134 | yd1 = -1; |
tim008 | 0:b7c72ff94dc1 | 135 | xd2 = -1; |
tim008 | 0:b7c72ff94dc1 | 136 | yd2 = -1; |
tim008 | 0:b7c72ff94dc1 | 137 | |
tim008 | 0:b7c72ff94dc1 | 138 | } |
tim008 | 0:b7c72ff94dc1 | 139 | } |
tim008 | 0:b7c72ff94dc1 | 140 | |
tim008 | 0:b7c72ff94dc1 | 141 | int main() |
tim008 | 0:b7c72ff94dc1 | 142 | { |
tim008 | 0:b7c72ff94dc1 | 143 | timer.start(); |
tim008 | 0:b7c72ff94dc1 | 144 | enable=1; |
tim008 | 0:b7c72ff94dc1 | 145 | |
tim008 | 0:b7c72ff94dc1 | 146 | // inicijalizacija displaya |
tim008 | 0:b7c72ff94dc1 | 147 | lcd.init(); |
tim008 | 0:b7c72ff94dc1 | 148 | |
tim008 | 0:b7c72ff94dc1 | 149 | while(1) { |
tim008 | 0:b7c72ff94dc1 | 150 | if (VRx < 1.0/3.0 && x1 > 0 ) |
tim008 | 0:b7c72ff94dc1 | 151 | { |
tim008 | 0:b7c72ff94dc1 | 152 | lcd.clearPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 153 | lcd.clearPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 154 | lcd.clearPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 155 | lcd.clearPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 156 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 157 | |
tim008 | 0:b7c72ff94dc1 | 158 | x1--; |
tim008 | 0:b7c72ff94dc1 | 159 | x2--; |
tim008 | 0:b7c72ff94dc1 | 160 | x3--; |
tim008 | 0:b7c72ff94dc1 | 161 | x4--; |
tim008 | 0:b7c72ff94dc1 | 162 | |
tim008 | 0:b7c72ff94dc1 | 163 | lcd.setPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 164 | lcd.setPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 165 | lcd.setPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 166 | lcd.setPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 167 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 168 | |
tim008 | 0:b7c72ff94dc1 | 169 | } |
tim008 | 0:b7c72ff94dc1 | 170 | else if (VRx > 2.0/3.0 && x3 < 47) |
tim008 | 0:b7c72ff94dc1 | 171 | { |
tim008 | 0:b7c72ff94dc1 | 172 | lcd.clearPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 173 | lcd.clearPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 174 | lcd.clearPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 175 | lcd.clearPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 176 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 177 | |
tim008 | 0:b7c72ff94dc1 | 178 | x1++; |
tim008 | 0:b7c72ff94dc1 | 179 | x2++; |
tim008 | 0:b7c72ff94dc1 | 180 | x3++; |
tim008 | 0:b7c72ff94dc1 | 181 | x4++; |
tim008 | 0:b7c72ff94dc1 | 182 | |
tim008 | 0:b7c72ff94dc1 | 183 | lcd.setPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 184 | lcd.setPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 185 | lcd.setPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 186 | lcd.setPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 187 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 188 | } |
tim008 | 0:b7c72ff94dc1 | 189 | |
tim008 | 0:b7c72ff94dc1 | 190 | if ( VRy < 1.0/3.0 && y2 > 0) |
tim008 | 0:b7c72ff94dc1 | 191 | { |
tim008 | 0:b7c72ff94dc1 | 192 | lcd.clearPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 193 | lcd.clearPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 194 | lcd.clearPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 195 | lcd.clearPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 196 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 197 | |
tim008 | 0:b7c72ff94dc1 | 198 | y1--; |
tim008 | 0:b7c72ff94dc1 | 199 | y2--; |
tim008 | 0:b7c72ff94dc1 | 200 | y3--; |
tim008 | 0:b7c72ff94dc1 | 201 | y4--; |
tim008 | 0:b7c72ff94dc1 | 202 | |
tim008 | 0:b7c72ff94dc1 | 203 | lcd.setPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 204 | lcd.setPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 205 | lcd.setPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 206 | lcd.setPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 207 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 208 | } |
tim008 | 0:b7c72ff94dc1 | 209 | else if (VRy > 2.0/3.0 && y4 < 83) |
tim008 | 0:b7c72ff94dc1 | 210 | { |
tim008 | 0:b7c72ff94dc1 | 211 | lcd.clearPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 212 | lcd.clearPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 213 | lcd.clearPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 214 | lcd.clearPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 215 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 216 | |
tim008 | 0:b7c72ff94dc1 | 217 | y1++; |
tim008 | 0:b7c72ff94dc1 | 218 | y2++; |
tim008 | 0:b7c72ff94dc1 | 219 | y3++; |
tim008 | 0:b7c72ff94dc1 | 220 | y4++; |
tim008 | 0:b7c72ff94dc1 | 221 | |
tim008 | 0:b7c72ff94dc1 | 222 | lcd.setPixel(x1,y1); |
tim008 | 0:b7c72ff94dc1 | 223 | lcd.setPixel(x2,y2); |
tim008 | 0:b7c72ff94dc1 | 224 | lcd.setPixel(x3,y3); |
tim008 | 0:b7c72ff94dc1 | 225 | lcd.setPixel(x4,y4); |
tim008 | 0:b7c72ff94dc1 | 226 | lcd.refresh(); |
tim008 | 0:b7c72ff94dc1 | 227 | |
tim008 | 0:b7c72ff94dc1 | 228 | } |
tim008 | 0:b7c72ff94dc1 | 229 | |
tim008 | 0:b7c72ff94dc1 | 230 | wait(0.01); |
tim008 | 0:b7c72ff94dc1 | 231 | |
tim008 | 0:b7c72ff94dc1 | 232 | } |
tim008 | 0:b7c72ff94dc1 | 233 | } |