Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MMA8451Q N5110 TSI mbed
Revision 0:347c6091fbff, committed 2014-06-09
- Comitter:
- tim008
- Date:
- Mon Jun 09 08:04:06 2014 +0000
- Commit message:
- Projekat: Labirint; Anesa Drakovac; Emir Muja?i?
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Mon Jun 09 08:04:06 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/JoKer/code/MMA8451Q/#2d14600116fc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/N5110.lib Mon Jun 09 08:04:06 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/tim008/code/N5110/#08bed723456e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TSI.lib Mon Jun 09 08:04:06 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/vsluiter/code/TSI/#4dc2f5a3a731
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Jun 09 08:04:06 2014 +0000
@@ -0,0 +1,311 @@
+#include "mbed.h"
+#include "N5110.h"
+#include "MMA8451Q.h"
+#include "TSISensor.h"
+
+#define MAXWIDTH 84
+#define MAXHEIGHT 48
+#define MMA8451_I2C_ADDRESS (0x1d<<1)
+
+Timer deb;
+ // VCC,SCE,RST,D/C,MOSI,SCLK,LED
+N5110 lcd (PTD0, PTA13, PTA12, PTD5, PTC6, PTC5, PTD4);
+// NC u PTC7 u N5110.cpp
+// SDA SCL Address
+MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
+
+TSISensor tsi;
+Ticker t;
+int X=0;
+int Y=0;
+
+bool Sredina=true, Gore=false, Desno=false;
+int BrzinaX=0, BrzinaY=0;
+
+void mapa()
+{
+ for(int i=0; i<84;i++)
+ for(int j=0; j<40;j++)
+ {
+ if(i==0 || i==83) lcd.setPixel(i,j);
+ if(j==0 || j==39) lcd.setPixel(i,j);
+ }
+ int y=5, i=0, x;
+ for(int i=5; i<79;i++) if(i<67 || i>70) lcd.setPixel(i,y); //1
+ y=10;
+ for(int i=5; i<79;i++) if(i<23 || i>26) lcd.setPixel(i,y); //2
+ y=15;
+ for(int i=5; i<79;i++) lcd.setPixel(i,y); //3
+ y=19;
+ for(int i=5; i<79; i++) if(i<14 || i>17) lcd.setPixel(i,y); //4
+ y=24;
+ for(int i=5; i<79; i++) if(i<32 || i>35) lcd.setPixel(i,y); //5
+ y=29;
+ for(int i=5; i<79; i++) if(i<56 || i>59) lcd.setPixel(i,y); //6
+ y=34;
+ for(int i=5; i<84; i++) if(i<10 || i>13) lcd.setPixel(i,y); //7
+ x=5;
+ for(int i=5; i<34; i++) lcd.setPixel(x,i);
+ x=78;
+ for(int i=5; i<34; i++) lcd.setPixel(x,i);
+ lcd.refresh();
+ lcd.printString("Nivo:1 Pauza",0,5);
+}
+
+void cilj()
+{
+ for(int i=24; i<28; i++)
+ for (int j=16; j<19; j++)
+ lcd.setPixel(i,j);
+
+ lcd.refresh();
+
+}
+
+void cursor(int x, int y)
+{
+ for(int i=x; i<x+3; i++)
+ for (int j=y; j<y+3; j++)
+ lcd.setPixel(i,j);
+
+ lcd.refresh();
+
+}
+
+void cursor_main_menua(int x, int y)
+{
+ for(int i=x; i<x+10; i++)
+ for(int j=y; j<y+5; j++)
+ {
+ lcd.setPixel(i,j);
+
+ }
+ lcd.refresh();
+}
+
+void cursor_nivoi(int x, int y)
+{
+ for(int i=x; i<x+14; i++)
+ for(int j=y; j<y+5; j++)
+ {
+ if(lcd.getPixel(i,j)==0) lcd.setPixel(i,j);
+ if(lcd.getPixel(i,j)==1) lcd.clearPixel(i,j);
+ }
+ lcd.refresh();
+}
+
+void brisi(int x, int y)
+{
+ for(int i=x; i<x+3; i++)
+ for (int j=y; j<y+3; j++)
+ lcd.clearPixel(i,j);
+ lcd.refresh();
+}
+
+void brzina(int n)
+{
+ switch(n)
+ {
+ case 0:{ wait(0.07); break;}
+ case 1:{ wait(0.06); break;}
+ case 2:{ wait(0.05); break;}
+ case 3:{ wait(0.04); break;}
+ case 4:{ wait(0.03); break;}
+ case 5:{ wait(0.02); break;}
+ }
+}
+
+void KLijevo(int &x, int &y)
+{
+ if(x>1 && lcd.getPixel(x-1,y)==0 && lcd.getPixel(x-1,y+1)==0 && lcd.getPixel(x-1,y+2)==0 ){
+ brisi(x,y);
+ x=x-1;
+ cursor(x,y);
+ brzina(BrzinaX);
+ }
+}
+
+void KDesno(int &x, int &y)
+{
+ if(x<80 && lcd.getPixel(x+3,y) ==0 && lcd.getPixel(x+3,y+1) ==0 && lcd.getPixel(x+3,y+2) ==0 || (x+3)==24 || (x+3)==25 || (x+3)==26){
+ brisi(x,y);
+ x=x+1;
+ cursor(x,y);
+ brzina(BrzinaX);
+ }
+}
+
+void KGore(int &x, int &y)
+{
+ if(y>1 && lcd.getPixel(x,y-1)==0 && lcd.getPixel(x+1,y-1)==0 && lcd.getPixel(x+2,y-1)==0){
+ brisi(x,y);
+ y=y-1;
+ cursor(x,y);
+ brzina(BrzinaY);
+ }
+}
+
+void KDolje(int &x, int &y)
+{
+ if(y<36 && lcd.getPixel(x,y+3)==0 && lcd.getPixel(x+1,y+3)==0 && lcd.getPixel(x+2,y+3)==0){
+ brisi(x,y);
+ y=y+1;
+ cursor(x,y);
+ brzina(BrzinaY);
+ }
+}
+
+void SDesno()
+{
+ if(Sredina || Desno)
+ {
+ Desno = true ; Sredina=false;
+ if(BrzinaX<5) BrzinaX++;
+ KDesno(X,Y);
+ }
+ if(!Sredina && !Desno)
+ {
+ if(BrzinaX>0) BrzinaX--;
+ if(BrzinaX==0) Sredina=true;
+ KLijevo(X,Y);
+ }
+}
+
+void SLijevo()
+{
+ if(Sredina || !Desno) {Desno = false ; Sredina=false; if(BrzinaX<5) BrzinaX++;KLijevo(X,Y); }
+ if(!Sredina && Desno)
+ {
+ if(BrzinaX>0) BrzinaX--;
+ if(BrzinaX==0) Sredina=true;
+ KDesno(X,Y);
+ }
+}
+
+void SGore()
+{
+ if(Sredina || Gore) {Gore = true ; Sredina=false; if(BrzinaY<5) BrzinaY++; KGore(X,Y);}
+ if(!Sredina && !Gore)
+ {
+ if(BrzinaY>0) BrzinaY--;
+ if(BrzinaY==0) Sredina=true;
+ KDolje(X,Y);
+ }
+}
+
+void SDole()
+{
+ if(Sredina || !Gore) {Gore = false ; Sredina=false; if(BrzinaY<5) BrzinaY++; KDolje(X,Y);}
+ if(!Sredina && Gore)
+
+ {
+ if(BrzinaY>0) BrzinaY--;
+ if(BrzinaY==0) Sredina=true;
+ KGore(X,Y);
+ }
+}
+
+void kretanje()
+{
+
+ float x, y;
+ x = (acc.getAccX());
+ y = (acc.getAccY());
+ if(y<-0.5) SLijevo();
+ if(y>0.5) SDesno();
+ if(x<-0.5) SGore();
+ if(x>0.5) SDole();
+ if((x<0.5 && x>-0.5) || (y<0.5 && y>-0.5)) Sredina=true;
+
+}
+
+void kreni()
+{
+ int n=0;
+ lcd.clear();
+ X=1; Y=1;
+ cursor(X,Y);
+ mapa();
+ cilj();
+ int a=0;
+ while(a==0)
+ {
+ kretanje();
+ if(X==24 && Y==16)
+ {
+ lcd.clear();
+ lcd.printString("Pobjeda", 20,3);
+ wait(3);
+ lcd.clear();
+ a=1;
+ }
+ if(tsi.readPercentage()>0.6) n=1;
+ while(n==1)
+ {
+ wait(0.001);
+ if(tsi.readPercentage()>0.4) n=2;
+ }
+ }
+}
+
+void menu()
+{
+ int n=1;
+ lcd.printString("New Game", 5,1);
+ lcd.printString("Level",5,2);
+ cursor_main_menua(54, 10);
+ lcd.refresh();
+ while(1)
+ {
+
+ float x;
+ x = (acc.getAccX());
+ if(x<-0.5) n=1;
+ if(x>0.5) n=2;
+ if(n==2)
+ {
+ lcd.clear();
+ lcd.printString("New Game", 5,1);
+ lcd.printString("Level",5,2);
+ cursor_main_menua(54, 17);
+
+ }
+ if(n==1)
+ {
+ lcd.clear();
+ lcd.printString("New Game", 5,1);
+ lcd.printString("Level",5,2);
+ cursor_main_menua(54, 10);
+
+ }
+ if(tsi.readPercentage()>0.0)
+ {
+ if(n==1)
+ {
+ kreni();
+ }
+ if(n==2)
+ {
+
+ lcd.clear();
+ lcd.printString("Level 1", 5,1);
+ lcd.printString("Touch to", 5,3);
+ lcd.printString("START", 5,4);
+ wait(1);
+ while(1)
+ if(tsi.readPercentage()>0.0) kreni();
+ }
+ }
+ }
+}
+
+int main(){
+ deb.start();
+ lcd.init();
+ lcd.setXYAddress(X,Y);
+ lcd.setBrightness(0.0);
+
+ menu();
+ while(1){
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Jun 09 08:04:06 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877 \ No newline at end of file