tim003 tim003
/
LV7-PAI-Grupa2-Zad1-Tim003
Granulo Eldar Halilović Almin
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Tue Jul 19 2022 00:24:55 by 1.7.2