tim004 tim004
/
ZADATAK
haris semic haris spahic
main.cpp@0:c6ee7bb88fed, 2014-04-24 (annotated)
- Committer:
- tim004
- Date:
- Thu Apr 24 16:03:04 2014 +0000
- Revision:
- 0:c6ee7bb88fed
LV7-zad1-tim004-grupa6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tim004 | 0:c6ee7bb88fed | 1 | #include "mbed.h" |
tim004 | 0:c6ee7bb88fed | 2 | #include "N5110.h" |
tim004 | 0:c6ee7bb88fed | 3 | #include "math.h" |
tim004 | 0:c6ee7bb88fed | 4 | |
tim004 | 0:c6ee7bb88fed | 5 | #define MAXWIDTH 84 |
tim004 | 0:c6ee7bb88fed | 6 | #define MAXHEIGHT 48 |
tim004 | 0:c6ee7bb88fed | 7 | |
tim004 | 0:c6ee7bb88fed | 8 | Timer deb; |
tim004 | 0:c6ee7bb88fed | 9 | DigitalOut enable(dp14); |
tim004 | 0:c6ee7bb88fed | 10 | InterruptIn taster(dp1); |
tim004 | 0:c6ee7bb88fed | 11 | int X=0;int Y=0; |
tim004 | 0:c6ee7bb88fed | 12 | int xpoc=90,ypoc=90,x,y; |
tim004 | 0:c6ee7bb88fed | 13 | AnalogIn VRx(dp11); |
tim004 | 0:c6ee7bb88fed | 14 | AnalogIn VRy(dp10); |
tim004 | 0:c6ee7bb88fed | 15 | DigitalIn SW(dp9); |
tim004 | 0:c6ee7bb88fed | 16 | DigitalIn mytaster (dp1); |
tim004 | 0:c6ee7bb88fed | 17 | |
tim004 | 0:c6ee7bb88fed | 18 | N5110 lcd (dp4, dp24, dp23, dp25, dp2, dp6, dp18); |
tim004 | 0:c6ee7bb88fed | 19 | |
tim004 | 0:c6ee7bb88fed | 20 | void setCursor (int x, int y) |
tim004 | 0:c6ee7bb88fed | 21 | { |
tim004 | 0:c6ee7bb88fed | 22 | for (int i=x; i<=x+2; i++) |
tim004 | 0:c6ee7bb88fed | 23 | { |
tim004 | 0:c6ee7bb88fed | 24 | for (int j=y; j<=y+2; j++) |
tim004 | 0:c6ee7bb88fed | 25 | { |
tim004 | 0:c6ee7bb88fed | 26 | lcd.setPixel(i, j); |
tim004 | 0:c6ee7bb88fed | 27 | lcd.refresh(); |
tim004 | 0:c6ee7bb88fed | 28 | } |
tim004 | 0:c6ee7bb88fed | 29 | } |
tim004 | 0:c6ee7bb88fed | 30 | } |
tim004 | 0:c6ee7bb88fed | 31 | |
tim004 | 0:c6ee7bb88fed | 32 | void obrisi (int x, int y) |
tim004 | 0:c6ee7bb88fed | 33 | { |
tim004 | 0:c6ee7bb88fed | 34 | for (int i=x; i<=x+2; i++) |
tim004 | 0:c6ee7bb88fed | 35 | { |
tim004 | 0:c6ee7bb88fed | 36 | for (int j=y; j<=y+2; j++) |
tim004 | 0:c6ee7bb88fed | 37 | { |
tim004 | 0:c6ee7bb88fed | 38 | lcd.clearPixel(i, j); |
tim004 | 0:c6ee7bb88fed | 39 | lcd.refresh(); |
tim004 | 0:c6ee7bb88fed | 40 | } |
tim004 | 0:c6ee7bb88fed | 41 | } |
tim004 | 0:c6ee7bb88fed | 42 | } |
tim004 | 0:c6ee7bb88fed | 43 | |
tim004 | 0:c6ee7bb88fed | 44 | void pomjeriDesno (int &x, int &y) |
tim004 | 0:c6ee7bb88fed | 45 | { |
tim004 | 0:c6ee7bb88fed | 46 | if (x>75) |
tim004 | 0:c6ee7bb88fed | 47 | { |
tim004 | 0:c6ee7bb88fed | 48 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 49 | x=0; |
tim004 | 0:c6ee7bb88fed | 50 | |
tim004 | 0:c6ee7bb88fed | 51 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 52 | } |
tim004 | 0:c6ee7bb88fed | 53 | else { |
tim004 | 0:c6ee7bb88fed | 54 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 55 | x=x+1; |
tim004 | 0:c6ee7bb88fed | 56 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 57 | } |
tim004 | 0:c6ee7bb88fed | 58 | } |
tim004 | 0:c6ee7bb88fed | 59 | |
tim004 | 0:c6ee7bb88fed | 60 | void pomjeriLijevo (int &x, int &y) |
tim004 | 0:c6ee7bb88fed | 61 | { |
tim004 | 0:c6ee7bb88fed | 62 | if (x<5) |
tim004 | 0:c6ee7bb88fed | 63 | { |
tim004 | 0:c6ee7bb88fed | 64 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 65 | x=75; |
tim004 | 0:c6ee7bb88fed | 66 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 67 | } |
tim004 | 0:c6ee7bb88fed | 68 | else { |
tim004 | 0:c6ee7bb88fed | 69 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 70 | x=x-1; |
tim004 | 0:c6ee7bb88fed | 71 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 72 | } |
tim004 | 0:c6ee7bb88fed | 73 | } |
tim004 | 0:c6ee7bb88fed | 74 | |
tim004 | 0:c6ee7bb88fed | 75 | void pomjeriGore (int &x, int &y) |
tim004 | 0:c6ee7bb88fed | 76 | { |
tim004 | 0:c6ee7bb88fed | 77 | if (y>43) |
tim004 | 0:c6ee7bb88fed | 78 | { |
tim004 | 0:c6ee7bb88fed | 79 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 80 | y=0; |
tim004 | 0:c6ee7bb88fed | 81 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 82 | } |
tim004 | 0:c6ee7bb88fed | 83 | else { |
tim004 | 0:c6ee7bb88fed | 84 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 85 | y=y+1; |
tim004 | 0:c6ee7bb88fed | 86 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 87 | } |
tim004 | 0:c6ee7bb88fed | 88 | } |
tim004 | 0:c6ee7bb88fed | 89 | |
tim004 | 0:c6ee7bb88fed | 90 | void pomjeriDole (int &x, int &y) |
tim004 | 0:c6ee7bb88fed | 91 | { |
tim004 | 0:c6ee7bb88fed | 92 | if (y<5) |
tim004 | 0:c6ee7bb88fed | 93 | { |
tim004 | 0:c6ee7bb88fed | 94 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 95 | y=75; |
tim004 | 0:c6ee7bb88fed | 96 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 97 | } |
tim004 | 0:c6ee7bb88fed | 98 | else { |
tim004 | 0:c6ee7bb88fed | 99 | obrisi(x, y); |
tim004 | 0:c6ee7bb88fed | 100 | y=y-1; |
tim004 | 0:c6ee7bb88fed | 101 | setCursor(x, y); |
tim004 | 0:c6ee7bb88fed | 102 | } |
tim004 | 0:c6ee7bb88fed | 103 | } |
tim004 | 0:c6ee7bb88fed | 104 | |
tim004 | 0:c6ee7bb88fed | 105 | void iscrtajLiniju(int x1, int y1, int x2, int y2) |
tim004 | 0:c6ee7bb88fed | 106 | { |
tim004 | 0:c6ee7bb88fed | 107 | lcd.setXYAddress(0,0); |
tim004 | 0:c6ee7bb88fed | 108 | int dx = abs(x2-x1), sx = x1<x2 ? 1 : -1; |
tim004 | 0:c6ee7bb88fed | 109 | int dy = abs(y2-y1), sy = y1<y2 ? 1 : -1; |
tim004 | 0:c6ee7bb88fed | 110 | int err = (dx>dy ? dx : -dy)/2, e2; |
tim004 | 0:c6ee7bb88fed | 111 | x1=x2; y1=y2; |
tim004 | 0:c6ee7bb88fed | 112 | for(;;){ |
tim004 | 0:c6ee7bb88fed | 113 | setCursor(x1,y1); |
tim004 | 0:c6ee7bb88fed | 114 | if (x1==x2 && y1==y2) break; |
tim004 | 0:c6ee7bb88fed | 115 | e2 = err; |
tim004 | 0:c6ee7bb88fed | 116 | if (e2 >-dx) { err -= dy; x1 += sx; } |
tim004 | 0:c6ee7bb88fed | 117 | if (e2 < dy) { err += dx; y1 += sy; } |
tim004 | 0:c6ee7bb88fed | 118 | } |
tim004 | 0:c6ee7bb88fed | 119 | } |
tim004 | 0:c6ee7bb88fed | 120 | |
tim004 | 0:c6ee7bb88fed | 121 | static int nesto =1; |
tim004 | 0:c6ee7bb88fed | 122 | void tacka() |
tim004 | 0:c6ee7bb88fed | 123 | { |
tim004 | 0:c6ee7bb88fed | 124 | |
tim004 | 0:c6ee7bb88fed | 125 | if(deb.read_ms() > 400) |
tim004 | 0:c6ee7bb88fed | 126 | if(nesto%2!=0) {xpoc=X; ypoc=Y;nesto++;} |
tim004 | 0:c6ee7bb88fed | 127 | else{ |
tim004 | 0:c6ee7bb88fed | 128 | x=X; y=Y; |
tim004 | 0:c6ee7bb88fed | 129 | iscrtajLiniju(xpoc,ypoc,x,y); |
tim004 | 0:c6ee7bb88fed | 130 | wait(5); |
tim004 | 0:c6ee7bb88fed | 131 | lcd.clear(); |
tim004 | 0:c6ee7bb88fed | 132 | xpoc=90; ypoc=90; lcd.setXYAddress(0,0); X=0; Y=0; nesto=1; |
tim004 | 0:c6ee7bb88fed | 133 | } |
tim004 | 0:c6ee7bb88fed | 134 | |
tim004 | 0:c6ee7bb88fed | 135 | deb.reset(); |
tim004 | 0:c6ee7bb88fed | 136 | } |
tim004 | 0:c6ee7bb88fed | 137 | |
tim004 | 0:c6ee7bb88fed | 138 | |
tim004 | 0:c6ee7bb88fed | 139 | |
tim004 | 0:c6ee7bb88fed | 140 | |
tim004 | 0:c6ee7bb88fed | 141 | |
tim004 | 0:c6ee7bb88fed | 142 | |
tim004 | 0:c6ee7bb88fed | 143 | |
tim004 | 0:c6ee7bb88fed | 144 | int main() |
tim004 | 0:c6ee7bb88fed | 145 | { |
tim004 | 0:c6ee7bb88fed | 146 | |
tim004 | 0:c6ee7bb88fed | 147 | enable=1; |
tim004 | 0:c6ee7bb88fed | 148 | |
tim004 | 0:c6ee7bb88fed | 149 | SW.mode(PullUp); |
tim004 | 0:c6ee7bb88fed | 150 | deb.start(); |
tim004 | 0:c6ee7bb88fed | 151 | |
tim004 | 0:c6ee7bb88fed | 152 | // inicijalizacija displeja |
tim004 | 0:c6ee7bb88fed | 153 | lcd.init(); |
tim004 | 0:c6ee7bb88fed | 154 | lcd.setXYAddress(X,Y); |
tim004 | 0:c6ee7bb88fed | 155 | |
tim004 | 0:c6ee7bb88fed | 156 | int x1=-1, y1=-1, x2, y2; |
tim004 | 0:c6ee7bb88fed | 157 | |
tim004 | 0:c6ee7bb88fed | 158 | setCursor(X,Y); |
tim004 | 0:c6ee7bb88fed | 159 | while (1) |
tim004 | 0:c6ee7bb88fed | 160 | { |
tim004 | 0:c6ee7bb88fed | 161 | if(VRx < 1.0/3.0) pomjeriDesno(X,Y); |
tim004 | 0:c6ee7bb88fed | 162 | else if(VRx > 2.0/3.0) pomjeriLijevo(X,Y); |
tim004 | 0:c6ee7bb88fed | 163 | |
tim004 | 0:c6ee7bb88fed | 164 | if(VRy < 1.0/3.0) pomjeriGore(X,Y); |
tim004 | 0:c6ee7bb88fed | 165 | else if(VRy > 2.0/3.0) pomjeriDole(X,Y); |
tim004 | 0:c6ee7bb88fed | 166 | |
tim004 | 0:c6ee7bb88fed | 167 | setCursor(xpoc,ypoc); |
tim004 | 0:c6ee7bb88fed | 168 | if (mytaster) |
tim004 | 0:c6ee7bb88fed | 169 | { |
tim004 | 0:c6ee7bb88fed | 170 | if (x1==-1 && y1==-1) |
tim004 | 0:c6ee7bb88fed | 171 | { |
tim004 | 0:c6ee7bb88fed | 172 | x1=X, y1=Y; |
tim004 | 0:c6ee7bb88fed | 173 | lcd.setXYAddress(X,Y); |
tim004 | 0:c6ee7bb88fed | 174 | lcd.setPixel(x1, y1); |
tim004 | 0:c6ee7bb88fed | 175 | } |
tim004 | 0:c6ee7bb88fed | 176 | else |
tim004 | 0:c6ee7bb88fed | 177 | { |
tim004 | 0:c6ee7bb88fed | 178 | x2=X, y2=Y; |
tim004 | 0:c6ee7bb88fed | 179 | lcd.setXYAddress(X,Y); |
tim004 | 0:c6ee7bb88fed | 180 | lcd.setPixel(x2, y2); |
tim004 | 0:c6ee7bb88fed | 181 | } |
tim004 | 0:c6ee7bb88fed | 182 | } |
tim004 | 0:c6ee7bb88fed | 183 | |
tim004 | 0:c6ee7bb88fed | 184 | } |
tim004 | 0:c6ee7bb88fed | 185 | |
tim004 | 0:c6ee7bb88fed | 186 | } |
tim004 | 0:c6ee7bb88fed | 187 |