LV7 Zad01 priprema Sumejja Porca

Dependencies:   N5110 mbed

Revision:
0:b7c72ff94dc1
Child:
1:0d0b41d5ac80
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 28 10:45:20 2014 +0000
@@ -0,0 +1,233 @@
+#include "mbed.h"
+#include "N5110.h"
+ 
+//Analogni ulazi sa dzojstika
+AnalogIn    VRx(dp11);
+AnalogIn    VRy(dp10);
+//Taster sa dzojstika
+DigitalIn   SW(dp9);
+
+//Deklaracija LCD objekta
+//N5110 lcd(VCC,SCE,RST,D/C,MOSI,SCLK,LED)
+N5110 lcd(dp4,dp24,dp23,dp25,dp2,dp6,dp18);
+
+
+//Digitalni izlaz za deaktivaciju LED buffera
+DigitalOut enable(dp14);
+
+//koordinate crosshair kursora / na sredini ekrana
+int x1(40), y1(23), x2(41), y2(22), x3(42), y3(23), x4(41), y4(24);
+ 
+//koordinate tacaka dijagonala 
+int xd1(-1), yd1(-1), xd2(-1), yd2(-1);
+
+//taster za dodavanje tacke/ brisanje svih tacaka
+InterruptIn taster1(dp1);
+
+// timer koji mjeri vrijeme izmedju dva tastera
+Timer timer; 
+
+//funkcija za pravljenje pravougaonika kad vec imamo tacke dijagonale
+void makeRectangle()
+{
+    int Ax, Ay, Bx, By, Cx, Cy, Dx, Dy;
+    if( xd1  <= xd2 && yd1 > yd2 )
+    {
+        Bx = xd2;
+        By = yd2;
+        Dx = xd1;
+        Dy = yd1;
+        
+        Ax = Dx;
+        Ay = By;
+        Cx = Bx;
+        Cy = Dy;
+    }
+    else if(  xd2  <= xd1 && yd2 > yd1 ) 
+    {
+        Bx = xd1;
+        By = yd1;
+        Dx = xd2;
+        Dy = yd2;
+    
+        Ax = Dx;
+        Ay = By;
+        Cx = Bx;
+        Cy = Dy;    
+    }
+    else if ( xd1 < xd2 && yd1 <= yd2 )
+    {
+        Ax = xd1;
+        Ay = yd1;
+        Cx = xd2;
+        Cy = yd2;
+        
+        Bx = Cx;
+        By = Ay;
+        Dx = Ax;
+        Dy = Cy;
+    }
+    else if ( xd2 < xd1 && yd2 <= yd1 )
+    {
+        Ax = xd2;
+        Ay = yd2;
+        Cx = xd1;
+        Cy = yd1;
+        
+        
+        Bx = Cx;
+        By = Ay;
+        Dx = Ax;
+        Dy = Cy; 
+    }
+    
+    int i, j;
+    // crtamo pravougaonik
+    for( i = Ay; i <= Dy; i++)
+    for( j = Ax; j <= Cx; j++)
+    {
+        lcd.setPixel(j,i);
+        lcd.refresh();
+    }
+}
+
+// funkcija za dodavanje tacke dijagonale/ pravljenje pravougaonika
+void setPoint()
+{
+ if(timer.read() <= 0.001)
+ {
+     lcd.clear();
+     xd1 = -1;
+     yd1 = -1;
+     xd2 = -1;
+     yd2 = -1;
+     x1 = 40;
+     y1 = 23; 
+     x2 = 41;
+     y2 = 22;
+     x3 = 42;
+     y3 = 23;
+     x4 = 41;
+     y4 = 24;
+     lcd.setPixel(x1,y1);
+     lcd.setPixel(x2,y2);
+     lcd.setPixel(x3,y3);
+     lcd.setPixel(x4,y4);
+     lcd.refresh();
+     timer.reset();
+     return;
+ }  
+ timer.reset();
+ if( xd1 < 0 )
+ {
+     xd1 = x2;
+     yd1 = y1;
+     lcd.setPixel(xd1, yd1);
+     lcd.refresh();
+ }
+ else 
+ {
+     xd2 = x2;
+     yd2 = y1;
+     makeRectangle();
+     xd1 = -1;
+     yd1 = -1;
+     xd2 = -1;
+     yd2 = -1;
+
+ }
+ }
+ 
+int main()
+{
+    timer.start();
+     enable=1;
+ 
+    // inicijalizacija displaya
+    lcd.init();
+ 
+    while(1) {
+        if (VRx < 1.0/3.0 && x1 > 0 ) 
+        {
+            lcd.clearPixel(x1,y1);
+            lcd.clearPixel(x2,y2);
+            lcd.clearPixel(x3,y3);
+            lcd.clearPixel(x4,y4);
+            lcd.refresh();
+            
+            x1--;
+            x2--;
+            x3--;
+            x4--;
+            
+            lcd.setPixel(x1,y1);
+            lcd.setPixel(x2,y2);
+            lcd.setPixel(x3,y3);
+            lcd.setPixel(x4,y4);
+            lcd.refresh();
+            
+        }
+        else if (VRx > 2.0/3.0 && x3 < 47)
+        {
+            lcd.clearPixel(x1,y1);
+            lcd.clearPixel(x2,y2);
+            lcd.clearPixel(x3,y3);
+            lcd.clearPixel(x4,y4);
+            lcd.refresh();
+            
+            x1++;
+            x2++;
+            x3++;
+            x4++;
+            
+            lcd.setPixel(x1,y1);
+            lcd.setPixel(x2,y2);
+            lcd.setPixel(x3,y3);
+            lcd.setPixel(x4,y4);
+            lcd.refresh();            
+        }
+ 
+        if ( VRy < 1.0/3.0 && y2 > 0) 
+         {
+            lcd.clearPixel(x1,y1);
+            lcd.clearPixel(x2,y2);
+            lcd.clearPixel(x3,y3);
+            lcd.clearPixel(x4,y4);
+            lcd.refresh();
+            
+            y1--;
+            y2--;
+            y3--;
+            y4--;
+            
+            lcd.setPixel(x1,y1);
+            lcd.setPixel(x2,y2);
+            lcd.setPixel(x3,y3);
+            lcd.setPixel(x4,y4);
+            lcd.refresh();            
+        }
+        else if (VRy > 2.0/3.0 && y4 < 83) 
+         {
+            lcd.clearPixel(x1,y1);
+            lcd.clearPixel(x2,y2);
+            lcd.clearPixel(x3,y3);
+            lcd.clearPixel(x4,y4);
+            lcd.refresh();
+            
+            y1++;
+            y2++;
+            y3++;
+            y4++;
+            
+            lcd.setPixel(x1,y1);
+            lcd.setPixel(x2,y2);
+            lcd.setPixel(x3,y3);
+            lcd.setPixel(x4,y4);
+            lcd.refresh();
+            
+        }
+ 
+        wait(0.01);
+ 
+     }
+}
\ No newline at end of file