Dino Dizdarević Ensar Sarajčić Projekat

Dependencies:   N5110 mbed

Revision:
0:868c0c4c5ec5
Child:
1:97f83061d929
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jun 04 19:24:38 2015 +0000
@@ -0,0 +1,1022 @@
+#include "mbed.h"
+#include "N5110.h"
+#define dp23 P0_0
+#define XMAX 16
+#define YMAX 9
+
+N5110 lcd(dp4, dp24, dp23, dp25, dp2, dp6, dp18);
+
+AnalogIn Ox(dp11);
+AnalogIn Oy(dp10);
+DigitalIn SW(dp1);
+
+char mapa[9][16][4]={
+    { {'1','0','1','1'},{'0','1','1','0'},{'0','0','1','1'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','1','1'},{'0','0','1','1'},{'1','0','1','0'},{'1','1','1','0'},{'0','0','1','1'},{'0','1','1','0'},{'0','0','1','1'},{'0','0','1','0'},{'1','1','1','0'} },
+    { {'0','1','1','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','1','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'},{'1','0','1','0'},{'1','1','0','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'} },
+    { {'0','0','0','1'},{'1','0','0','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'0','0','0','0'},{'0','0','0','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'} },
+    { {'0','1','0','1'},{'0','0','1','1'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'0','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'},{'0','1','0','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'} },
+    { {'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','1','0','0'},{'1','0','0','1'},{'1','0','0','0'},{'1','1','1','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','1','0','1'},{'0','1','0','1'} },
+    { {'0','1','0','1'},{'0','0','0','1'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','0','1','1'},{'0','1','0','0'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','0','0','0'},{'1','0','0','0'},{'1','1','0','0'} },
+    { {'0','1','0','1'},{'0','0','0','1'},{'0','0','1','0'},{'1','0','1','0'},{'0','1','1','0'},{'0','1','0','1'},{'1','1','0','1'},{'0','1','0','1'},{'1','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','1','0','1'},{'0','0','1','1'},{'1','0','1','0'},{'1','0','1','0'},{'0','1','1','0'} },
+    { {'1','1','0','1'},{'0','1','0','1'},{'1','0','0','1'},{'1','1','1','0'},{'0','1','0','1'},{'1','0','0','1'},{'1','0','1','0'},{'1','0','0','0'},{'1','0','1','0'},{'1','1','0','0'},{'1','0','0','1'},{'1','1','0','0'},{'0','1','0','1'},{'0','0','1','1'},{'1','1','1','0'},{'0','1','0','1'} },
+    { {'1','0','1','0'},{'1','0','0','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','0','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','1','0'},{'1','0','0','1'},{'1','0','0','1'},{'1','0','1','0'},{'1','1','0','0'} }
+    };
+
+char x = 0, y = 8; // donji lijevi cosak, pocetak - char zbog memorije
+char orijentacija = 1; // 0 - gore, 1 - desno, 2 - dole, 3 - lijevo - char zbog memorije
+
+void crtaj2D()
+{
+    lcd.clear();
+    for(int i=0;i<9;i++)
+        for(int j=0;j<16;j++)
+        {
+            
+            if(mapa[i][j][0]=='1')
+            {
+                for(int k=0;k<5;k++)
+                    lcd.setPixel(j*5+k,(i+1)*5);
+                }
+            if(mapa[i][j][1]=='1')
+            {
+                for(int k=0;k<5;k++)
+                    lcd.setPixel((j+1)*5,i*5+k);
+                }
+            if(mapa[i][j][2]=='1')
+            {
+                for(int k=0;k<5;k++)
+                    lcd.setPixel(j*5+k,i*5);
+                }
+            if(mapa[i][j][3]=='1')
+            {
+                for(int k=0;k<5;k++)
+                    lcd.setPixel(j*5,i*5+k);
+                }
+            }
+            for(int i=2; i<4; i++)
+                for(int j = 2; j < 4; j++)
+                        lcd.setPixel(x*5+i, y*5+j);
+            lcd.refresh();
+    }
+    
+
+void rotirajDesno()
+{
+    orijentacija++;
+    if(orijentacija > 3)
+        orijentacija = 0;
+}
+
+void rotirajLijevo()
+{
+    if(orijentacija == 0)
+        orijentacija = 3;
+    else
+        orijentacija--;
+}
+
+bool mozePravo()
+{
+    switch (orijentacija)
+    {
+        case 0:
+            if(y==YMAX)
+                return false;
+            if(mapa[y][x][0] == '0' && mapa[y+1][x][2] == '0')
+                return true;
+            break;
+        case 1:
+            if(x==XMAX)
+                return false;
+            if(mapa[y][x][1] == '0' && mapa[y][x+1][3] == '0')
+                return true;
+            break;
+        case 2:
+            if(y==0)
+                return false;
+            if(mapa[y][x][2] == '0' && mapa[y-1][x][0] == '0')
+                return true;
+            break;
+        case 3:
+            if(y==YMAX)
+                return false;
+            if(mapa[y][x][3] == '0' && mapa[y][x-1][1] == '0')
+                return true;
+            break;
+    }
+    return true;
+}
+
+void pravo()
+{
+    switch (orijentacija)
+    {
+        case 0:
+            if(y==YMAX)
+                break;
+            if(mapa[y][x][0] == '0' && mapa[y+1][x][2] == '0')
+                y++;
+            break;
+        case 1:
+            if(x==XMAX)
+                break;
+            if(mapa[y][x][1] == '0' && mapa[y][x+1][3] == '0')
+                x++;
+            break;
+        case 2:
+            if(y==0)
+                break;
+            if(mapa[y][x][2] == '0' && mapa[y-1][x][0] == '0')
+                y--;
+        case 3:
+            if(x==0)
+                break;
+            if(mapa[y][x][3] == '0' && mapa[y][x-1][1] == '0')
+                x--;
+            break;
+    }
+}
+
+void linije()
+{
+    for(int i=0; i<28;i++)
+        for(int j = 0; j < 36; j++)
+            if(36.0/28.0*i - j < 1 && 36.0/28.0*i - j > -1)
+                lcd.setPixel(i,j);
+    for(int i = 0; i < 28; i++)
+        for(int j = 0; j < 36; j++)
+            if(-36.0/28.0*(i-28) - j < 1 && -36.0/28.0*(i-28) - j > -1)
+                lcd.setPixel(i+56, j);
+    for(int i = 0; i < 84; i++)
+        lcd.setPixel(i, 24);
+    for(int j = 24; j<48; j++)
+    {
+        lcd.setPixel(18, j); 
+        lcd.setPixel(66, j);
+    }       
+    for(int j = 36; j < 48; j++)
+    {
+        lcd.setPixel(28, j);
+        lcd.setPixel(56, j);
+    }
+    for(int i = 28; i < 56; i++)
+        lcd.setPixel(i, 36);       
+}
+
+void desni()
+{
+    for(int i = 0; i < 18; i++)
+        for(int j = 0; j < 24; j++)
+            if(36.0/28.0*i - j < 1)
+                lcd.setPixel(i, j);
+    for(int j = 24; j<48; j++)
+        for(int i = 0; i < 18; i++) 
+            lcd.setPixel(i, j);
+}
+
+void lijevi()
+{
+    for(int i = 0; i < 28; i++)
+        for(int j = 0; j < 24; j++)
+            if(-36.0/28.0*(i-28) - j < 1)
+                lcd.setPixel(i+56, j);
+    for(int j = 24; j<48; j++)
+        for(int i = 0; i < 18; i++) 
+            lcd.setPixel(i+66, j);
+}
+
+void skriveniDesni()
+{
+    for(int j = 24; j<48; j++)
+        for(int i = 0; i < 18; i++) 
+            lcd.setPixel(i, j);
+}
+
+void skriveniLijevi()
+{
+    for(int j = 24; j<48; j++)
+        for(int i = 0; i < 18; i++) 
+            lcd.setPixel(i+66, j);
+}
+
+void daljiDesni()
+{
+    for(int i=18; i<28;i++)
+        for(int j = 24; j < 36; j++)
+            if(36.0/28.0*i - j < 1)
+                lcd.setPixel(i,j);
+    for(int j = 36; j<48; j++)
+        for(int i = 18; i < 28; i++) 
+            lcd.setPixel(i, j);
+}
+
+void daljiLijevi()
+{
+    for(int i = 0; i < 10; i++)
+        for(int j = 24; j < 36; j++)
+            if(-36.0/28.0*(i-28) - j < 1)
+                lcd.setPixel(i+56, j);
+    for(int j = 36; j<48; j++)
+        for(int i = 0; i < 10; i++) 
+            lcd.setPixel(i+56, j);
+}
+
+void blizi()
+{
+    for(int i = 18; i < 66; i++)
+        for(int j = 24; j < 48; j++)
+            lcd.setPixel(i, j);
+}
+
+void dalji()
+{
+    for(int i = 28; i < 56; i++)
+        for(int j = 36; j < 48; j++)
+            lcd.setPixel(i, j); 
+}
+
+void linijeSkretanje()
+{
+    for(int i=0; i<74;i++)
+        for(int j = 6; j < 32; j++)
+            if(24.0/74.0*i + 6 - j < 1 && 24.0/74.0*i + 6 - j > -1)
+                lcd.setPixel(i,j);
+    for(int i = 0; i < 74; i++)
+        for(int j = 6; j < 32; j++)
+            if(-24.0/74.0*(i-74) + 6 - j < 1 && -24.0/74.0*(i-74) + 6 - j > -1)
+                lcd.setPixel(i+10, j);
+    for(int i = 0; i < 42; i++)
+        for(int j = 28; j < 42; j++)
+            if(14.0/42.0*i + 28 - j < 1 && 14.0/42.0*i + 28 - j > -1)
+                lcd.setPixel(i, j);
+    for(int i = 0; i < 42; i++)
+        for(int j = 28; j < 42; j++)
+            if(-14.0/42.0*(i-42) + 28 - j < 1 && -14.0/42.0*(i-42) + 28 - j > -1)
+                lcd.setPixel(i+42, j);
+    for(int j = 30; j < 48; j++)
+    {
+        lcd.setPixel(10, j);
+        lcd.setPixel(74, j);
+    }
+    for(int j = 20; j < 48; j++)
+        lcd.setPixel(42, j);
+}
+
+void daljaDesno()
+{
+    for(int i=0; i<10;i++)
+        for(int j = 6; j < 48; j++)
+            if(14.0/48.0*i + 28 - j <1)
+                lcd.setPixel(i,j);
+}
+
+void daljaLijevo()
+{
+    for(int i = 74; i < 84; i++)
+        for(int j = 6; j < 48; j++)
+            if(-14.0/48.0*(i-48) + 28 - j <1)
+                lcd.setPixel(i, j+12);
+}
+
+void blizaDesno()
+{
+    for(int i=0; i<42;i++)
+        for(int j = 6; j < 48; j++)
+            if(24.0/74.0*i + 6 - j <1)
+                lcd.setPixel(i,j);
+}
+
+void blizaLijevo()
+{
+    for(int i = 42; i < 84; i++)
+        for(int j = 0; j < 48; j++)
+            if(-24.0/74.0*(i-74) + 6 - j < 1)
+                lcd.setPixel(i, j+4);
+}
+
+void drugaDesno()
+{
+    for(int i = 10; i < 42; i++)
+        for(int j = 10; j < 48; j++)
+            if(-24.0/74.0*(i-74) + 6 - j < 1)
+                lcd.setPixel(i, j+4);
+}
+
+void drugaLijevo()
+{
+    for(int i=42; i<74;i++)
+        for(int j = 10; j < 48; j++)
+            if(24.0/74.0*i + 6 - j <1)
+                lcd.setPixel(i,j);
+}
+
+void izaDesno()
+{
+    for(int i=10; i<42;i++)
+        for(int j = 6; j < 48; j++)
+            if(14.0/42.0*i + 28 - j <1)
+                lcd.setPixel(i,j);
+}
+
+void izaLijevo()
+{
+    for(int i = 42; i < 74; i++)
+        for(int j = 6; j < 48; j++)
+            if(-14.0/42.0*(i-42) + 28 - j <1)
+                lcd.setPixel(i, j+14);
+}
+
+void linijeNaprijed()
+{
+    for(int i = 0; i < 30; i++)
+        for(int j = 0; j < 30; j++)
+            if(i-j<1 && i-j>-1)
+                lcd.setPixel(i,j);
+    for(int i = 54; i < 84; i++)
+        for(int j = 0; j < 30; j++)
+            if(-(i-84) - j < 1 && -(i-84) - j > -1)
+                lcd.setPixel(i,j);
+    for(int i = 30; i < 54; i++)
+        lcd.setPixel(i,30);
+    for(int i = 0; i < 84; i++)
+        lcd.setPixel(i, 8);
+    for(int j = 30; j < 48; j++)
+    {
+        lcd.setPixel(30, j);
+        lcd.setPixel(54, j);
+    }
+    for(int j = 8; j < 48; j++)
+    {
+        lcd.setPixel(8, j);
+        lcd.setPixel(76, j);
+    }
+}
+
+void naprijedDalji()
+{
+    for(int i = 30; i < 54; i++)
+        for(int j = 30; j < 48; j++)
+            lcd.setPixel(i,j);
+}
+
+void naprijedLijevi()
+{
+    for(int i = 76; i < 84; i++)
+        for(int j = 0; j < 48; j++)
+            if(-(i-84) - j < 1)
+                lcd.setPixel(i,j);
+}
+
+
+void naprijedDesni()
+{
+    for(int i = 0; i < 8; i++)
+        for(int j = 0; j < 48; j++)
+            if(i-j<1)
+                lcd.setPixel(i,j);
+}
+
+void naprijedDaljiLijevi()
+{
+    for(int i = 54; i < 76; i++)
+        for(int j = 8; j < 48; j++)
+            if(-(i-84) - j <1)
+                lcd.setPixel(i,j);
+}
+
+void naprijedDaljiDesni()
+{
+    for(int i = 8; i < 30; i++)
+        for(int j = 8; j < 48; j++)
+            if(i-j<1)
+                lcd.setPixel(i,j);
+}
+
+void naprijedSkriveniLijevi()
+{
+    for(int i = 76; i<84; i++)
+        for(int j = 8; j < 48; j++)
+            lcd.setPixel(i,j);
+}
+
+void naprijedSkriveniDesni()
+{
+    for(int i = 0; i<8; i++)
+        for(int j = 8; j < 48; j++)
+            lcd.setPixel(i,j);
+}
+
+void crtaj()
+{
+    lcd.clear();
+    linije();
+    switch (orijentacija)
+    {
+        case 0:
+            if(y<YMAX)
+            {
+                if(mapa[y+1][x][0] == '1')
+                    dalji();
+                if(mapa[y+1][x][3] == '1')
+                    daljiLijevi();
+                if(mapa[y+1][x][1] == '1')
+                    daljiDesni();
+                if(mapa[y+1][x][2] == '1' || mapa[y][x][0] == '1')
+                    blizi();
+                if(x>0)
+                {
+                    if(mapa[y+1][x-1][2] == '1' || mapa[y][x-1][0] == '1')
+                        skriveniLijevi();
+                }
+                if(x<XMAX)
+                {
+                    if(mapa[y+1][x+1][2] == '1' || mapa[y][x+1][0] == '1')
+                        skriveniDesni();
+                }
+            }
+            else
+            {
+                if(mapa[y][x][0] == '1')
+                    blizi(); 
+                if(x<XMAX)
+                    if(mapa[y][x+1][0] == '1')
+                        skriveniDesni();
+                if(x>0)
+                    if(mapa[y][x-1][0] == '1')
+                        skriveniLijevi();
+            }
+            if(mapa[y][x][1] == '1')
+                desni();
+            if(mapa[y][x][3] == '1')
+                lijevi();
+            break;            
+        case 1:
+            if(x<XMAX)
+            {
+                if(mapa[y][x+1][1] == '1')
+                    dalji();
+                if(mapa[y][x+1][0] == '1')
+                    daljiLijevi();
+                if(mapa[y][x+1][2] == '1')
+                    daljiDesni();
+                if(mapa[y][x+1][3] == '1' || mapa[y][x][1] == '1')
+                    blizi();
+                if(y>0)
+                {
+                    if(mapa[y-1][x+1][3] == '1' || mapa[y-1][x][1] == '1')
+                        skriveniDesni();
+                }
+                if(y<YMAX)
+                {
+                    if(mapa[y+1][x+1][3] == '1' || mapa[y+1][x][1] == '1')
+                        skriveniLijevi();
+                }
+            }
+            else
+            {
+                if(mapa[y][x][1] == '1')
+                    blizi(); 
+                if(y>0)
+                    if(mapa[y-1][x][1] == '1')
+                        skriveniDesni();
+                if(y<YMAX)
+                    if(mapa[y+1][x][1] == '1')
+                        skriveniLijevi();
+            }
+            if(mapa[y][x][2] == '1')
+                desni();
+            if(mapa[y][x][0] == '1')
+                lijevi();
+            break; 
+        case 2:
+            if(y>0)
+            {
+                if(mapa[y-1][x][2] == '1')
+                    dalji();
+                if(mapa[y-1][x][1] == '1')
+                    daljiLijevi();
+                if(mapa[y-1][x][3] == '1')
+                    daljiDesni();
+                if(mapa[y-1][x][0] == '1' || mapa[y][x][2] == '1')
+                    blizi();
+                if(x>0)
+                {
+                    if(mapa[y-1][x-1][0] == '1' || mapa[y][x-1][2] == '1')
+                        skriveniDesni();
+                }
+                if(x<XMAX)
+                {
+                    if(mapa[y-1][x+1][0] == '1' || mapa[y][x+1][2] == '1')
+                        skriveniLijevi();
+                }
+            }
+            else
+            {
+                if(mapa[y][x][2] == '1')
+                    blizi(); 
+                if(x>0)
+                    if(mapa[y][x-1][2] == '1')
+                        skriveniDesni();
+                if(x<XMAX)
+                    if(mapa[y][x+1][2] == '1')
+                        skriveniLijevi();
+            }
+            if(mapa[y][x][3] == '1')
+                desni();
+            if(mapa[y][x][1] == '1')
+                lijevi();
+            break;
+        case 3:
+            if(x>0)
+            {
+                if(mapa[y][x-1][3] == '1')
+                    dalji();
+                if(mapa[y][x-1][2] == '1')
+                    daljiLijevi();
+                if(mapa[y][x-1][0] == '1')
+                    daljiDesni();
+                if(mapa[y][x-1][1] == '1' || mapa[y][x][3] == '1')
+                    blizi();
+                if(y<YMAX)
+                {
+                    if(mapa[y+1][x-1][1] == '1' || mapa[y+1][x][3] == '1')
+                        skriveniDesni();
+                }
+                if(y>0)
+                {
+                    if(mapa[y-1][x-1][1] == '1' || mapa[y-1][x][3] == '1')
+                        skriveniLijevi();
+                }
+            }
+            else
+            {
+                if(mapa[y][x][3] == '1')
+                    blizi(); 
+                if(y>0)
+                    if(mapa[y-1][x][3] == '1')
+                        skriveniLijevi();
+                if(y<YMAX)
+                    if(mapa[y+1][x][3] == '1')
+                        skriveniDesni();
+            }
+            if(mapa[y][x][0] == '1')
+                desni();
+            if(mapa[y][x][2] == '1')
+                lijevi();
+            break;           
+    }
+    lcd.refresh();
+}
+
+void crtajRotacijaDesno()
+{
+    lcd.clear();
+    linijeSkretanje();
+    switch (orijentacija)
+    {
+        case 0:
+            if(y<YMAX)
+            {
+                if(mapa[y+1][x][3] == '1')
+                    drugaDesno();
+                if(mapa[y+1][x][0] == '1')
+                    daljaDesno();
+                if(x>0)
+                {
+                    if(mapa[y+1][x-1][0] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][3] == '1')
+                blizaLijevo();
+            if(x>0)
+            {
+                if(mapa[y][x-1][0] == '1')
+                    drugaLijevo();
+                if(mapa[y][x-1][3] == '1')
+                    daljaLijevo();
+                if(y<YMAX)
+                {
+                    if(mapa[y+1][x-1][3] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][0] == '1')
+                blizaDesno();
+            break;            
+        case 1:
+            if(x<XMAX)
+            {
+                if(mapa[y][x+1][0] == '1')
+                    drugaDesno();
+                if(mapa[y][x+1][1] == '1')
+                    daljaDesno();
+                if(y<YMAX)
+                {
+                    if(mapa[y+1][x+1][1] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][0] == '1')
+                blizaLijevo(); 
+            if(y<YMAX)
+            {
+                if(mapa[y+1][x][1] == '1')
+                    drugaLijevo();
+                if(mapa[y+1][x][0] == '1')
+                    daljaLijevo();
+                if(x<XMAX)
+                {
+                    if(mapa[y+1][x+1][0] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][1] == '1')
+                blizaDesno();
+            break;        
+        case 2:
+            if(y>0)
+            {
+                if(mapa[y-1][x][1] == '1')
+                    drugaDesno();
+                if(mapa[y-1][x][2] == '1')
+                    daljaDesno();
+                if(x<XMAX)
+                {
+                    if(mapa[y-1][x+1][2] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][1] == '1')
+                blizaLijevo();
+            if(x<XMAX)
+            {
+                if(mapa[y][x+1][2] == '1')
+                    drugaLijevo();
+                if(mapa[y][x+1][1] == '1')
+                    daljaLijevo();
+                if(y>0)
+                {
+                    if(mapa[y-1][x+1][1] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][2] == '1')
+                blizaDesno();
+            break;        
+        case 3:
+            if(x>0)
+            {
+                if(mapa[y][x-1][2] == '1')
+                    drugaDesno();
+                if(mapa[y][x-1][3] == '1')
+                    daljaDesno();
+                if(y>0)
+                {
+                    if(mapa[y-1][x-1][3] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][2] == '1')
+                blizaLijevo(); 
+            if(y>0)
+            {
+                if(mapa[y-1][x][3] == '1')
+                    drugaLijevo();
+                if(mapa[y-1][x][2] == '1')
+                    daljaLijevo();
+                if(x>0)
+                {
+                    if(mapa[y-1][x-1][2] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][3] == '1')
+                blizaDesno();
+            break;                
+    }
+    lcd.refresh();
+}
+
+void crtajRotacijaLijevo()
+{
+    lcd.clear();
+    linijeSkretanje();
+    switch (orijentacija)
+    {
+        case 0:
+            if(y<YMAX)
+            {
+                if(mapa[y+1][x][1] == '1')
+                    drugaLijevo();
+                if(mapa[y+1][x][0] == '1')
+                    daljaLijevo();
+                if(x<XMAX)
+                {
+                    if(mapa[y+1][x+1][0] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][1] == '1')
+                blizaDesno();
+            if(x<XMAX)
+            {
+                if(mapa[y][x+1][0] == '1')
+                    drugaDesno();
+                if(mapa[y][x+1][1] == '1')
+                    daljaDesno();
+                if(y<YMAX)
+                {
+                    if(mapa[y+1][x+1][1] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][0] == '1')
+                blizaLijevo();
+            break;            
+        case 1:
+            if(x<XMAX)
+            {
+                if(mapa[y][x+1][2] == '1')
+                    drugaLijevo();
+                if(mapa[y][x+1][1] == '1')
+                    daljaLijevo();
+                if(y>0)
+                {
+                    if(mapa[y-1][x+1][1] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][2] == '1')
+                blizaDesno(); 
+            if(y>0)
+            {
+                if(mapa[y-1][x][1] == '1')
+                    drugaDesno();
+                if(mapa[y-1][x][2] == '1')
+                    daljaDesno();
+                if(x<XMAX)
+                {
+                    if(mapa[y-1][x+1][2] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][1] == '1')
+                blizaLijevo();
+            break;        
+        case 2:
+            if(y>0)
+            {
+                if(mapa[y-1][x][3] == '1')
+                    drugaLijevo();
+                if(mapa[y-1][x][2] == '1')
+                    daljaLijevo();
+                if(x>0)
+                {
+                    if(mapa[y-1][x-1][2] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][3] == '1')
+                blizaDesno();
+            if(x>0)
+            {
+                if(mapa[y][x-1][2] == '1')
+                    drugaDesno();
+                if(mapa[y][x-1][3] == '1')
+                    daljaDesno();
+                if(y>0)
+                {
+                    if(mapa[y-1][x-1][3] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][2] == '1')
+                blizaLijevo();
+            break;        
+        case 3:
+            if(x>0)
+            {
+                if(mapa[y][x-1][0] == '1')
+                    drugaLijevo();
+                if(mapa[y][x-1][3] == '1')
+                    daljaLijevo();
+                if(y<YMAX)
+                {
+                    if(mapa[y+1][x-1][3] == '1')
+                        izaLijevo();
+                }
+            }
+            if(mapa[y][x][0] == '1')
+                blizaDesno(); 
+            if(y<YMAX)
+            {
+                if(mapa[y+1][x][3] == '1')
+                    drugaDesno();
+                if(mapa[y+1][x][0] == '1')
+                    daljaDesno();
+                if(x>0)
+                {
+                    if(mapa[y+1][x-1][0] == '1')
+                        izaDesno();
+                }
+            }
+            if(mapa[y][x][3] == '1')
+                blizaLijevo();
+            break;                
+    }
+    lcd.refresh();
+}
+
+void crtajNaprijed()
+{
+    lcd.clear();
+    linijeNaprijed();
+    switch (orijentacija)
+    {
+        case 0:
+            if(mapa[y][x][0] == '1')
+                naprijedDalji();
+            if(mapa[y][x][3] == '1')
+                naprijedDaljiLijevi();
+            if(mapa[y][x][1] == '1')
+                naprijedDaljiDesni();
+            if(y>0)
+            {
+                if(mapa[y-1][x][3] == '1')
+                    naprijedLijevi();
+                if(mapa[y-1][x][1] == '1')
+                    naprijedDesni();
+                if(x>0)
+                    if(mapa[y-1][x-1][0] == '1')
+                        naprijedSkriveniLijevi();
+                if(x<XMAX)
+                    if(mapa[y-1][x+1][0] == '1')
+                        naprijedSkriveniDesni();
+            }
+            break;            
+        case 1:
+            if(mapa[y][x][1] == '1')
+                naprijedDalji();
+            if(mapa[y][x][0] == '1')
+                naprijedDaljiLijevi();
+            if(mapa[y][x][2] == '1')
+                naprijedDaljiDesni();
+            if(x>0)
+            {
+                if(mapa[y][x-1][0] == '1')
+                    naprijedLijevi();
+                if(mapa[y][x-1][2] == '1')
+                    naprijedDesni();
+                if(y>0)
+                    if(mapa[y-1][x-1][1] == '1')
+                        naprijedSkriveniDesni();
+                if(y<YMAX)
+                    if(mapa[y+1][x-1][1] == '1')
+                        naprijedSkriveniLijevi();
+            }
+            break;
+        case 2:
+            if(mapa[y][x][2] == '1')
+                naprijedDalji();
+            if(mapa[y][x][1] == '1')
+                naprijedDaljiLijevi();
+            if(mapa[y][x][3] == '1')
+                naprijedDaljiDesni();
+            if(y<YMAX)
+            {
+                if(mapa[y+1][x][3] == '1')
+                    naprijedLijevi();
+                if(mapa[y+1][x][1] == '1')
+                    naprijedDesni();
+                if(x>0)
+                    if(mapa[y+1][x-1][2] == '1')
+                        naprijedSkriveniDesni();
+                if(x<XMAX)
+                    if(mapa[y+1][x+1][2] == '1')
+                        naprijedSkriveniLijevi();
+            }
+            break;
+        case 3:
+            if(mapa[y][x][3] == '1')
+                naprijedDalji();
+            if(mapa[y][x][2] == '1')
+                naprijedDaljiLijevi();
+            if(mapa[y][x][0] == '1')
+                naprijedDaljiDesni();
+            if(x<XMAX)
+            {
+                if(mapa[y][x+1][2] == '1')
+                    naprijedLijevi();
+                if(mapa[y][x+1][0] == '1')
+                    naprijedDesni();
+                if(y>0)
+                    if(mapa[y-1][x+1][3] == '1')
+                        naprijedSkriveniLijevi();
+                if(y<YMAX)
+                    if(mapa[y+1][x+1][3] == '1')
+                        naprijedSkriveniDesni();
+            }
+            break;          
+    }
+    lcd.refresh();
+}
+Timer t;
+void citajJoystick()
+{
+    t.start();
+    crtaj();
+    while(1)
+    {  
+        if(Ox>0.75)
+        {
+            rotirajLijevo();
+            crtajRotacijaLijevo();
+            wait(0.49);
+            crtaj();
+            }
+        else if(Ox<0.25)
+        {
+            rotirajDesno();
+            crtajRotacijaDesno();
+            wait(0.49);
+            crtaj();
+            }
+        else if(Oy<0.25)
+        {
+            crtaj2D();
+             wait(0.49);  
+            }
+        else if(Oy>0.75)
+        {
+            pravo();
+            if(mozePravo())
+                crtajNaprijed();
+            wait(0.49);
+            crtaj();
+            }
+            wait(0.25);
+        if(x==15 && y==1) break;
+       
+        }
+        t.stop();
+        lcd.clear();
+        
+               
+}
+
+int main() {
+    lcd.init();
+    int i = 0;
+    while(1) {
+        lcd.clear();
+        linije();
+        switch(i)
+        {
+            case 0:
+                desni();
+                break;
+            case 1:
+                lijevi();
+                break;
+            case 2:
+                daljiDesni();
+                break;
+            case 3:
+                daljiLijevi();
+                break;
+            case 4:
+                skriveniDesni();
+                break;
+            case 5:
+                skriveniLijevi();
+                break;
+            case 6:
+                dalji();
+                break;
+            case 7:
+                blizi();
+                break;
+            case 8:
+                desni();
+                lijevi();
+                break;
+            case 9:
+                daljiDesni();
+                daljiLijevi();
+                break;
+            case 10:
+                blizi();
+                skriveniDesni();
+                skriveniLijevi();
+                break;
+            case 11:
+                i = 0;
+        }
+        lcd.refresh();
+        if(SW==true)
+        citajJoystick();
+        i++;
+        wait(0.5);
+    }
+}