Emir Mujacic Hamdija Sinanovic

Dependencies:   N5110 mbed

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?

UserRevisionLine numberNew 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 }