Granulo Eldar Halilović Almin

Dependencies:   N5110 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "N5110.h"
00003 #include <vector>
00004 
00005 //koordinate
00006 int X = 0;
00007 int Y = 0;
00008 
00009 //lcd
00010 N5110 lcd(dp4, dp24, dp23, dp25, dp2, dp6, dp18);
00011 DigitalOut enable(dp14);
00012 
00013 //dzojstik
00014 AnalogIn VRx(dp11);
00015 AnalogIn VRy(dp10);
00016 
00017 struct Koordinate
00018 {
00019     int x;int y;
00020     Koordinate(int a,int b){x=a;y=b;}
00021     };
00022 vector<Koordinate> koordinate;
00023 
00024 //LAFO CRTA CROSSHAIR U OBLIKU OBICNOG PLUSA
00025 void drawCrosshair(int x, int y){
00026     
00027     int i = x - 3;
00028     int j = y;
00029     
00030     while( i <= x + 3){
00031             
00032         lcd.setPixel(i, j);
00033        
00034         i++;
00035     }  
00036     lcd.refresh();
00037     
00038     i = x;
00039     j = y - 3;
00040     
00041     while(j <= y + 3){
00042         
00043         lcd.setPixel(i, j);
00044         
00045         j++;
00046         
00047     }  
00048     lcd.refresh();
00049 }
00050 
00051 
00052 //brise crosshair na koordinatama
00053 
00054 void clearCrosshair(int x, int y){
00055       
00056     int i = x - 3;
00057     int j = y;
00058     
00059     while( i <= x + 3){
00060             
00061         lcd.clearPixel(i, j);
00062        
00063         i++;
00064     }  
00065     lcd.refresh();
00066     
00067     i = x;
00068     j = y - 3;
00069     
00070     while(j <= y + 3){
00071         
00072         lcd.clearPixel(i, j);
00073         j++;
00074     }    
00075     for(int i=0;i<koordinate.size();i++)
00076     {
00077       lcd.setPixel(koordinate[i].x,koordinate[i].y);    
00078     }
00079     
00080     lcd.refresh();
00081 }
00082 
00083 //ako je dzojstik lijevo poMAKET
00084 
00085 void LEFT(int &x, int &y){
00086 
00087     if(x > 0){
00088         
00089         clearCrosshair(x, y);
00090         x = x - 1;
00091         drawCrosshair(x, y);
00092         lcd.refresh();
00093     } 
00094 
00095 }
00096 
00097 //ako je desno poMAKET
00098 
00099 void RIGHT(int &x, int &y){
00100 
00101     if(x < 84){
00102         
00103         clearCrosshair(x, y);
00104         x = x + 1;
00105         drawCrosshair(x, y);
00106         lcd.refresh();
00107     } 
00108 
00109 }
00110 
00111 void DOWN(int &x, int &y){
00112     
00113     if(y < 45){
00114     
00115         clearCrosshair(x, y);
00116         y = y + 1;// ili minus dont nouuuuuuuu
00117         drawCrosshair(x, y);
00118         lcd.refresh();
00119     }    
00120 
00121 }
00122 
00123 void UP(int &x, int &y){
00124     
00125     if(y > 0){
00126         
00127         clearCrosshair(x, y);
00128         y = y - 1;//ili plus dont nouuuuuuuuuuuu
00129         drawCrosshair(x, y);
00130         lcd.refresh();
00131     }
00132 }
00133 Timer t;
00134 InterruptIn taster(dp1);
00135 static int kliknut=1;
00136 Timer t1;
00137 void tacka()
00138 {
00139  if(t.read_ms() > 400){ 
00140             if(kliknut%2!=0) {lcd.setPixel(X,Y); lcd.refresh(); kliknut++; koordinate.push_back(Koordinate(X,Y));}
00141         else{
00142             t1.reset();
00143             if(t1.read_ms()>400){
00144         lcd.clear();
00145         
00146         for(int i=0;i<koordinate.size();i++) koordinate.pop_back();
00147         
00148         lcd.refresh();
00149         
00150         }
00151         kliknut=1;
00152         
00153     }
00154     
00155     t.reset();
00156     
00157      }
00158 }
00159 
00160 
00161 
00162 int main() {
00163   
00164     enable = 1;
00165     t.start();
00166     t1.start();
00167     lcd.init();
00168     lcd.setXYAddress(X, Y);
00169     lcd.refresh();
00170     taster.rise(&tacka);
00171     taster.enable_irq();
00172     while(1){
00173         
00174         if(VRx < 1.0/3.0) LEFT(X,Y);
00175       else if(VRx > 2.0/3.0) RIGHT(X,Y);
00176  
00177       if(VRy < 1.0/3.0) UP(X,Y);
00178       else if(VRy > 2.0/3.0) DOWN(X,Y);
00179        
00180     }
00181     
00182   
00183 }