tim004 tim004
/
LAB7_Tim004_zadatak1
Emir Mujacic Hamdija Sinanovic
main.cpp@0:635f9c10b413, 2014-04-24 (annotated)
- Committer:
- tim004
- Date:
- Thu Apr 24 14:06:53 2014 +0000
- Revision:
- 0:635f9c10b413
LAB7-PAI-Grupa5-Tim004-zadatak1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tim004 | 0:635f9c10b413 | 1 | #include "mbed.h" |
tim004 | 0:635f9c10b413 | 2 | #include "N5110.h" |
tim004 | 0:635f9c10b413 | 3 | |
tim004 | 0:635f9c10b413 | 4 | #define MAXWIDTH 84 |
tim004 | 0:635f9c10b413 | 5 | #define MAXHEIGHT 48 |
tim004 | 0:635f9c10b413 | 6 | |
tim004 | 0:635f9c10b413 | 7 | Timer deb; |
tim004 | 0:635f9c10b413 | 8 | DigitalOut enable(dp14); |
tim004 | 0:635f9c10b413 | 9 | InterruptIn taster(dp1); |
tim004 | 0:635f9c10b413 | 10 | int X=0;int Y=0; |
tim004 | 0:635f9c10b413 | 11 | int x1=90,y1=90,x2,y2; |
tim004 | 0:635f9c10b413 | 12 | AnalogIn VRx(dp11); |
tim004 | 0:635f9c10b413 | 13 | AnalogIn VRy(dp10); |
tim004 | 0:635f9c10b413 | 14 | DigitalIn SW(dp9); |
tim004 | 0:635f9c10b413 | 15 | |
tim004 | 0:635f9c10b413 | 16 | N5110 lcd (dp4, dp24, dp23, dp25, dp2, dp6, dp18); |
tim004 | 0:635f9c10b413 | 17 | |
tim004 | 0:635f9c10b413 | 18 | void cursor(int x, int y) |
tim004 | 0:635f9c10b413 | 19 | { |
tim004 | 0:635f9c10b413 | 20 | for(int i=x; i<=x+2; i++) |
tim004 | 0:635f9c10b413 | 21 | for(int j=y; j<=y+2; j++) |
tim004 | 0:635f9c10b413 | 22 | { |
tim004 | 0:635f9c10b413 | 23 | lcd.setPixel(i,j); |
tim004 | 0:635f9c10b413 | 24 | lcd.refresh(); |
tim004 | 0:635f9c10b413 | 25 | } |
tim004 | 0:635f9c10b413 | 26 | } |
tim004 | 0:635f9c10b413 | 27 | |
tim004 | 0:635f9c10b413 | 28 | void brisi(int x, int y) |
tim004 | 0:635f9c10b413 | 29 | { |
tim004 | 0:635f9c10b413 | 30 | for(int i=x; i<=x+2; i++) |
tim004 | 0:635f9c10b413 | 31 | for(int j=y; j<=y+2; j++) |
tim004 | 0:635f9c10b413 | 32 | { |
tim004 | 0:635f9c10b413 | 33 | lcd.clearPixel(i,j); |
tim004 | 0:635f9c10b413 | 34 | lcd.refresh(); |
tim004 | 0:635f9c10b413 | 35 | } |
tim004 | 0:635f9c10b413 | 36 | } |
tim004 | 0:635f9c10b413 | 37 | |
tim004 | 0:635f9c10b413 | 38 | void Lijevo(int &x, int &y) |
tim004 | 0:635f9c10b413 | 39 | { |
tim004 | 0:635f9c10b413 | 40 | if(x>0){ |
tim004 | 0:635f9c10b413 | 41 | brisi(x,y); |
tim004 | 0:635f9c10b413 | 42 | x=x-1; |
tim004 | 0:635f9c10b413 | 43 | cursor(x,y); |
tim004 | 0:635f9c10b413 | 44 | |
tim004 | 0:635f9c10b413 | 45 | } |
tim004 | 0:635f9c10b413 | 46 | } |
tim004 | 0:635f9c10b413 | 47 | |
tim004 | 0:635f9c10b413 | 48 | void Desno(int &x, int &y) |
tim004 | 0:635f9c10b413 | 49 | { |
tim004 | 0:635f9c10b413 | 50 | if(x<81){ |
tim004 | 0:635f9c10b413 | 51 | brisi(x,y); |
tim004 | 0:635f9c10b413 | 52 | x=x+1; |
tim004 | 0:635f9c10b413 | 53 | cursor(x,y); |
tim004 | 0:635f9c10b413 | 54 | } |
tim004 | 0:635f9c10b413 | 55 | } |
tim004 | 0:635f9c10b413 | 56 | |
tim004 | 0:635f9c10b413 | 57 | void Gore(int &x, int &y) |
tim004 | 0:635f9c10b413 | 58 | { |
tim004 | 0:635f9c10b413 | 59 | if(y>0){ |
tim004 | 0:635f9c10b413 | 60 | brisi(x,y); |
tim004 | 0:635f9c10b413 | 61 | y=y-1; |
tim004 | 0:635f9c10b413 | 62 | cursor(x,y); |
tim004 | 0:635f9c10b413 | 63 | } |
tim004 | 0:635f9c10b413 | 64 | } |
tim004 | 0:635f9c10b413 | 65 | |
tim004 | 0:635f9c10b413 | 66 | void Dolje(int &x, int &y) |
tim004 | 0:635f9c10b413 | 67 | { |
tim004 | 0:635f9c10b413 | 68 | if(y<45){ |
tim004 | 0:635f9c10b413 | 69 | brisi(x,y); |
tim004 | 0:635f9c10b413 | 70 | y=y+1; |
tim004 | 0:635f9c10b413 | 71 | cursor(x,y); |
tim004 | 0:635f9c10b413 | 72 | } |
tim004 | 0:635f9c10b413 | 73 | } |
tim004 | 0:635f9c10b413 | 74 | void line(int x0, int y0, int x3, int y3) { |
tim004 | 0:635f9c10b413 | 75 | lcd.setXYAddress(0,0); |
tim004 | 0:635f9c10b413 | 76 | int dx = abs(x3-x0), sx = x0<x3 ? 1 : -1; |
tim004 | 0:635f9c10b413 | 77 | int dy = abs(y3-y0), sy = y0<y3 ? 1 : -1; |
tim004 | 0:635f9c10b413 | 78 | int err = (dx>dy ? dx : -dy)/2, e2; |
tim004 | 0:635f9c10b413 | 79 | x0=x1; y0=y1; |
tim004 | 0:635f9c10b413 | 80 | for(;;){ |
tim004 | 0:635f9c10b413 | 81 | cursor(x0,y0); |
tim004 | 0:635f9c10b413 | 82 | if (x0==x2 && y0==y2) break; |
tim004 | 0:635f9c10b413 | 83 | e2 = err; |
tim004 | 0:635f9c10b413 | 84 | if (e2 >-dx) { err -= dy; x0 += sx; } |
tim004 | 0:635f9c10b413 | 85 | if (e2 < dy) { err += dx; y0 += sy; } |
tim004 | 0:635f9c10b413 | 86 | } |
tim004 | 0:635f9c10b413 | 87 | } |
tim004 | 0:635f9c10b413 | 88 | |
tim004 | 0:635f9c10b413 | 89 | static int nesto =1; |
tim004 | 0:635f9c10b413 | 90 | void tacka() |
tim004 | 0:635f9c10b413 | 91 | { |
tim004 | 0:635f9c10b413 | 92 | |
tim004 | 0:635f9c10b413 | 93 | if(deb.read_ms() > 400) |
tim004 | 0:635f9c10b413 | 94 | if(nesto%2!=0) {x1=X; y1=Y;nesto++;} |
tim004 | 0:635f9c10b413 | 95 | else{ |
tim004 | 0:635f9c10b413 | 96 | x2=X; y2=Y; |
tim004 | 0:635f9c10b413 | 97 | line(x1,y1,x2,y2); |
tim004 | 0:635f9c10b413 | 98 | wait(5); |
tim004 | 0:635f9c10b413 | 99 | lcd.clear(); |
tim004 | 0:635f9c10b413 | 100 | x1=90; y1=90; lcd.setXYAddress(0,0); X=0; Y=0; nesto=1; |
tim004 | 0:635f9c10b413 | 101 | } |
tim004 | 0:635f9c10b413 | 102 | |
tim004 | 0:635f9c10b413 | 103 | deb.reset(); |
tim004 | 0:635f9c10b413 | 104 | } |
tim004 | 0:635f9c10b413 | 105 | |
tim004 | 0:635f9c10b413 | 106 | int main(){ |
tim004 | 0:635f9c10b413 | 107 | |
tim004 | 0:635f9c10b413 | 108 | enable = 1; |
tim004 | 0:635f9c10b413 | 109 | SW.mode(PullUp); |
tim004 | 0:635f9c10b413 | 110 | deb.start(); |
tim004 | 0:635f9c10b413 | 111 | lcd.init(); |
tim004 | 0:635f9c10b413 | 112 | |
tim004 | 0:635f9c10b413 | 113 | |
tim004 | 0:635f9c10b413 | 114 | lcd.setXYAddress(X,Y); |
tim004 | 0:635f9c10b413 | 115 | cursor(X,Y); |
tim004 | 0:635f9c10b413 | 116 | taster.rise(&tacka); |
tim004 | 0:635f9c10b413 | 117 | while(1){ |
tim004 | 0:635f9c10b413 | 118 | if(VRx < 1.0/3.0) Lijevo(X,Y); |
tim004 | 0:635f9c10b413 | 119 | else if(VRx > 2.0/3.0) Desno(X,Y); |
tim004 | 0:635f9c10b413 | 120 | |
tim004 | 0:635f9c10b413 | 121 | if(VRy < 1.0/3.0) Gore(X,Y); |
tim004 | 0:635f9c10b413 | 122 | else if(VRy > 2.0/3.0) Dolje(X,Y); |
tim004 | 0:635f9c10b413 | 123 | |
tim004 | 0:635f9c10b413 | 124 | cursor(x1,y1); |
tim004 | 0:635f9c10b413 | 125 | |
tim004 | 0:635f9c10b413 | 126 | } |
tim004 | 0:635f9c10b413 | 127 | } |