Lejla Agić Zlatan Čilić

Dependencies:   N5110 mbed

Committer:
tim004
Date:
Mon May 05 07:44:21 2014 +0000
Revision:
0:62dd18b63866
LV7_grupa1_PAI_tim004

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tim004 0:62dd18b63866 1 #include "mbed.h"
tim004 0:62dd18b63866 2 #include "N5110.h"
tim004 0:62dd18b63866 3
tim004 0:62dd18b63866 4 InterruptIn taster1(dp1);
tim004 0:62dd18b63866 5 AnalogIn VRx(dp11);
tim004 0:62dd18b63866 6 AnalogIn VRy(dp10);
tim004 0:62dd18b63866 7 N5110 lcd(dp4,dp24,dp23,dp25,dp2,dp6,dp18);
tim004 0:62dd18b63866 8 const double unitX(3.3/84.0);
tim004 0:62dd18b63866 9 const double unitY(3.3/48.0);
tim004 0:62dd18b63866 10 int brojac(0);
tim004 0:62dd18b63866 11 int trenX(42);
tim004 0:62dd18b63866 12 int trenY(24);
tim004 0:62dd18b63866 13 Timer debounce;
tim004 0:62dd18b63866 14 int prvaX(0);
tim004 0:62dd18b63866 15 int prvaY(0);
tim004 0:62dd18b63866 16 bool postavljena(false);
tim004 0:62dd18b63866 17
tim004 0:62dd18b63866 18 void postaviKockicu(int x, int y)
tim004 0:62dd18b63866 19 {
tim004 0:62dd18b63866 20 //if(x > 47 || x < 1 || y < 1 || y > 83) return;
tim004 0:62dd18b63866 21 //else
tim004 0:62dd18b63866 22 //{
tim004 0:62dd18b63866 23
tim004 0:62dd18b63866 24 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 25 lcd.setPixel(x-1, y-1);
tim004 0:62dd18b63866 26 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 27 //lcd.refresh();
tim004 0:62dd18b63866 28 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 29 lcd.setPixel(x-1, y);
tim004 0:62dd18b63866 30 //lcd.refresh();
tim004 0:62dd18b63866 31 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 32 lcd.setPixel(x-1, y+1);
tim004 0:62dd18b63866 33 //lcd.refresh();
tim004 0:62dd18b63866 34 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 35 lcd.setPixel(x, y-1);
tim004 0:62dd18b63866 36 //lcd.refresh();
tim004 0:62dd18b63866 37 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 38 lcd.setPixel(x, y);
tim004 0:62dd18b63866 39 // lcd.refresh();
tim004 0:62dd18b63866 40 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 41 lcd.setPixel(x, y+1);
tim004 0:62dd18b63866 42 // lcd.refresh();
tim004 0:62dd18b63866 43 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 44 lcd.setPixel(x+1, y-1);
tim004 0:62dd18b63866 45 //lcd.refresh();
tim004 0:62dd18b63866 46 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 47 lcd.setPixel(x+1, y);
tim004 0:62dd18b63866 48 // lcd.refresh();
tim004 0:62dd18b63866 49 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 50 lcd.setPixel(x+1, y+1);
tim004 0:62dd18b63866 51 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 52 lcd.refresh();
tim004 0:62dd18b63866 53 //}
tim004 0:62dd18b63866 54 }
tim004 0:62dd18b63866 55
tim004 0:62dd18b63866 56 void ocitajDzojstik()
tim004 0:62dd18b63866 57 {
tim004 0:62dd18b63866 58
tim004 0:62dd18b63866 59 //float a = VRx / unitX;
tim004 0:62dd18b63866 60 //float b = VRy / unitY;
tim004 0:62dd18b63866 61 //setXYAdress(0,0);
tim004 0:62dd18b63866 62 if(VRx > 2.0/3.0)
tim004 0:62dd18b63866 63 {
tim004 0:62dd18b63866 64 if(trenX >= 83) return;
tim004 0:62dd18b63866 65 trenX++;
tim004 0:62dd18b63866 66 }
tim004 0:62dd18b63866 67 if(VRx < 1.0/2.0)
tim004 0:62dd18b63866 68 {
tim004 0:62dd18b63866 69 if(trenX <= 1) return;
tim004 0:62dd18b63866 70 trenX--;
tim004 0:62dd18b63866 71 }
tim004 0:62dd18b63866 72
tim004 0:62dd18b63866 73 if(VRy > 2.0/3.0)
tim004 0:62dd18b63866 74 {
tim004 0:62dd18b63866 75 if(trenY >= 47) return;
tim004 0:62dd18b63866 76 trenY++;
tim004 0:62dd18b63866 77 }
tim004 0:62dd18b63866 78 if(VRy < 1.0/3.0)
tim004 0:62dd18b63866 79 {
tim004 0:62dd18b63866 80 if(trenY <= 1) return;
tim004 0:62dd18b63866 81 trenY--;
tim004 0:62dd18b63866 82 }
tim004 0:62dd18b63866 83 }
tim004 0:62dd18b63866 84
tim004 0:62dd18b63866 85 void iscrtajLiniju(int x0, int y0, int x1, int y1)
tim004 0:62dd18b63866 86 {
tim004 0:62dd18b63866 87
tim004 0:62dd18b63866 88 int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
tim004 0:62dd18b63866 89 int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1;
tim004 0:62dd18b63866 90 int err = (dx>dy ? dx : -dy)/2, e2;
tim004 0:62dd18b63866 91
tim004 0:62dd18b63866 92 for(;;){
tim004 0:62dd18b63866 93 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 94 lcd.setPixel(x0,y0);
tim004 0:62dd18b63866 95 lcd.setXYAddress(0,0);
tim004 0:62dd18b63866 96 lcd.refresh();
tim004 0:62dd18b63866 97 if (x0==x1 && y0==y1) break;
tim004 0:62dd18b63866 98 e2 = err;
tim004 0:62dd18b63866 99 if (e2 >-dx) { err -= dy; x0 += sx; }
tim004 0:62dd18b63866 100 if (e2 < dy) { err += dx; y0 += sy; }
tim004 0:62dd18b63866 101 }
tim004 0:62dd18b63866 102
tim004 0:62dd18b63866 103 /* int dx, dy, sx, sy;
tim004 0:62dd18b63866 104 if(x0 < x1)
tim004 0:62dd18b63866 105 {
tim004 0:62dd18b63866 106 dx = x1 - x0;
tim004 0:62dd18b63866 107 sx = 1;
tim004 0:62dd18b63866 108 }
tim004 0:62dd18b63866 109 else
tim004 0:62dd18b63866 110 {
tim004 0:62dd18b63866 111 dx = x0 - x1;
tim004 0:62dd18b63866 112 sx = -1;
tim004 0:62dd18b63866 113 }
tim004 0:62dd18b63866 114 if(y0 < y1)
tim004 0:62dd18b63866 115 {
tim004 0:62dd18b63866 116 dy = y1 - y0;
tim004 0:62dd18b63866 117 sy = 1;
tim004 0:62dd18b63866 118 }
tim004 0:62dd18b63866 119 else
tim004 0:62dd18b63866 120 {
tim004 0:62dd18b63866 121 dy = y0 - y1;
tim004 0:62dd18b63866 122 sy = -1;
tim004 0:62dd18b63866 123 }
tim004 0:62dd18b63866 124
tim004 0:62dd18b63866 125 double error = dx - dy;
tim004 0:62dd18b63866 126 double e2;
tim004 0:62dd18b63866 127 while(1)
tim004 0:62dd18b63866 128 {
tim004 0:62dd18b63866 129 lcd.setPixel(x0, y0);
tim004 0:62dd18b63866 130 lcd.refresh();
tim004 0:62dd18b63866 131 if(x0 == x1 && y0 == y1) break;
tim004 0:62dd18b63866 132 e2 = 2 * error;
tim004 0:62dd18b63866 133 if(e2 > -dy)
tim004 0:62dd18b63866 134 {
tim004 0:62dd18b63866 135 error -=dy;
tim004 0:62dd18b63866 136 x0 += dx;
tim004 0:62dd18b63866 137 }
tim004 0:62dd18b63866 138 if(e2 < dx)
tim004 0:62dd18b63866 139 {
tim004 0:62dd18b63866 140 error += dx;
tim004 0:62dd18b63866 141 y0 += dy;
tim004 0:62dd18b63866 142 }
tim004 0:62dd18b63866 143 }*/
tim004 0:62dd18b63866 144
tim004 0:62dd18b63866 145
tim004 0:62dd18b63866 146
tim004 0:62dd18b63866 147
tim004 0:62dd18b63866 148 }
tim004 0:62dd18b63866 149
tim004 0:62dd18b63866 150 void postaviTacku()
tim004 0:62dd18b63866 151 {
tim004 0:62dd18b63866 152 if(debounce.read_ms() > 400)
tim004 0:62dd18b63866 153 {
tim004 0:62dd18b63866 154 if(false == postavljena)
tim004 0:62dd18b63866 155 {
tim004 0:62dd18b63866 156 prvaX = trenX;
tim004 0:62dd18b63866 157 prvaY = trenY;
tim004 0:62dd18b63866 158 postavljena = true;
tim004 0:62dd18b63866 159 }
tim004 0:62dd18b63866 160 else
tim004 0:62dd18b63866 161 {
tim004 0:62dd18b63866 162 //ocitajDzojstik();
tim004 0:62dd18b63866 163 //lcd.clear();
tim004 0:62dd18b63866 164 //postaviKockicu(trenX, trenY);
tim004 0:62dd18b63866 165 //postaviKockicu(prvaX, prvaY);
tim004 0:62dd18b63866 166 //postaviKockicu(prvaX, prvaY);
tim004 0:62dd18b63866 167 iscrtajLiniju(trenX, trenY, prvaX, prvaY);
tim004 0:62dd18b63866 168 wait(5);
tim004 0:62dd18b63866 169 lcd.clear();
tim004 0:62dd18b63866 170 postavljena = false;
tim004 0:62dd18b63866 171 trenX = 42;
tim004 0:62dd18b63866 172 trenY = 24;
tim004 0:62dd18b63866 173 }
tim004 0:62dd18b63866 174 debounce.reset();
tim004 0:62dd18b63866 175 }
tim004 0:62dd18b63866 176 }
tim004 0:62dd18b63866 177
tim004 0:62dd18b63866 178
tim004 0:62dd18b63866 179
tim004 0:62dd18b63866 180 int main()
tim004 0:62dd18b63866 181 {
tim004 0:62dd18b63866 182 lcd.init();
tim004 0:62dd18b63866 183 postaviKockicu(42,24);
tim004 0:62dd18b63866 184 debounce.start();
tim004 0:62dd18b63866 185 taster1.rise(&postaviTacku);
tim004 0:62dd18b63866 186
tim004 0:62dd18b63866 187 while(1)
tim004 0:62dd18b63866 188 {
tim004 0:62dd18b63866 189 ocitajDzojstik();
tim004 0:62dd18b63866 190 if(postavljena == false)
tim004 0:62dd18b63866 191 {
tim004 0:62dd18b63866 192 lcd.clear();
tim004 0:62dd18b63866 193 postaviKockicu(trenX, trenY);
tim004 0:62dd18b63866 194 }
tim004 0:62dd18b63866 195 else
tim004 0:62dd18b63866 196 {
tim004 0:62dd18b63866 197 lcd.clear();
tim004 0:62dd18b63866 198 postaviKockicu(trenX, trenY);
tim004 0:62dd18b63866 199 postaviKockicu(prvaX, prvaY);
tim004 0:62dd18b63866 200 }
tim004 0:62dd18b63866 201 }
tim004 0:62dd18b63866 202
tim004 0:62dd18b63866 203 }