Haris Šemić, Emina Šarić

Dependencies:   N5110 mbed

Revision:
1:441a9c43ffda
Parent:
0:24887104b8f0
Child:
2:f923d0ef12ec
--- a/main.cpp	Thu May 29 16:08:42 2014 +0000
+++ b/main.cpp	Thu Jun 05 14:13:17 2014 +0000
@@ -5,21 +5,112 @@
 Serial pc(USBTX, USBRX);
 N5110 displej(dp4,dp24,dp23,dp25,dp2,dp6,dp18);
 
+AnalogIn VRx(dp11);
+AnalogIn VRy(dp10);
+
+DigitalIn taster1(dp1);
+DigitalIn taster2(dp2);
+
+DigitalIn SW(dp9);
+DigitalOut enable(dp14);
+
+char detektirajPozadinu(int x, int y) {
+    if(x>83 || x<0 || y>47 || y<0) return 'x';
+    int brRubnih(0), brCrnih(0);
+    unsigned char gore,dole,lijevo,desno;
+    if(x == 0) lijevo = 'x'; else lijevo = displej.getPixel(x-1,y);
+    if(x == 83) desno = 'x'; else desno = displej.getPixel(x+1,y);
+    if(y == 0) dole = 'x'; else dole = displej.getPixel(x,y-1);
+    if(y == 47) gore = 'x'; else gore = displej.getPixel(x,y+1);
+    if(lijevo == '0') brCrnih++; else if(lijevo == 'x') brRubnih++;
+    if(desno == '0') brCrnih++; else if(desno == 'x') brRubnih++;
+    if(gore == '0') brCrnih++; else if(gore == 'x') brRubnih++;
+    if(dole == '0') brCrnih++; else if(dole == 'x') brRubnih++;
+    int brBijelih(4-brCrnih-brRubnih);
+    if(brBijelih < brCrnih) return 'c';
+    return 'b';
+}
+
+void postaviKursor(int x, int y) {
+    for(int i(1);i<5;i++) {
+        char pozadina(detektirajPozadinu(x+i, y));
+        if(pozadina == 'b')
+            displej.setPixel(x+i,y);
+        else if(pozadina == 'c') displej.clearPixel(x+i,y);
+        pozadina=detektirajPozadinu(x, y+i);
+        if(pozadina == 'b')
+            displej.setPixel(x,y+i);
+        else if(pozadina == 'c') displej.clearPixel(x,y+i);
+        pozadina=detektirajPozadinu(x-i, y);
+        if(pozadina == 'b')
+            displej.setPixel(x-i,y);
+        else if(pozadina == 'c') displej.clearPixel(x-i,y);
+        pozadina=detektirajPozadinu(x, y-i);
+        if(pozadina == 'b')
+            displej.setPixel(x,y-i);
+        else if(pozadina == 'c') displej.clearPixel(x,y-i);
+    }
+}
+
 int main() {
-    displej.init();    
+    enable=1;
+    SW.mode(PullUp);
+    displej.init();
+    displej.setXYAddress(0,0);
+    int x(0),y(0);    
     pc.baud(115200);
     while(1) {                
-       for(int j=0;j<84;j++) {
-             for(int i=0;i<48;i++) {
-            
-                if(pc.getc()=='1') {
-                    displej.setXYAddress(0,0);
-                    displej.setPixel(j,i);
-                    
+        for(int i=0; i<84; i++) {
+         for(int j=0; j<48; j++) {            
+            if(pc.getc()=='1') {
+                displej.setXYAddress(0,0);
+                displej.setPixel(i,j);                              
                 }
             }
         }
+        
+        if(VRx<1.0/3.0) {    
+            if (x>0) {
+                x--;
+            }
+        }       
+        
+        else if (VRx>2.0/3.0) {
+            if(x<83) {
+                x++;  
+            }
+        }      
+        
+        if (VRy<1.0/3.0) {
+            if(y>0) {
+                y--;
+            }
+        }
+                
+        else if (VRy>2.0/3.0) {
+            if(y<47) {
+                y++;
+            }
+        }
+        
+        //saranje
+        postaviKursor(x,y);
+        if(taster1==1) {
+            if(displej.getPixel(x,y) == '0')
+                displej.setPixel(x,y);
+            else displej.clearPixel(x,y);
+        }
+        
+        //prenos na racunar
+        if(pc.getc() == 'x') {
+            for(int i=0; i<84; i++) {
+                for(int j=0; j<48; j++) {            
+                    if(displej.getPixel(i, j) == '0')
+                        pc.putc('0');
+                    else pc.putc('1');
+                }
+            }
+        }       
         displej.refresh();
-      
     }
-}
+}
\ No newline at end of file