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: mbed
Diff: main.cpp
- Revision:
- 4:3605c624b64f
- Parent:
- 3:054a677aca64
- Child:
- 5:7041c827932b
--- a/main.cpp Sat Dec 05 13:48:10 2015 +0000
+++ b/main.cpp Sat Dec 05 17:19:21 2015 +0000
@@ -1,9 +1,13 @@
#include "mbed.h"
+#include "time.h"
SPI DataPack(SPI_MOSI, SPI_MISO, SPI_SCK);
DigitalOut Latch(D10);
AnalogIn VR0(A0);
AnalogIn VR1(A1);
+AnalogIn ran(A2);
+DigitalIn UnderButton(D7);
+DigitalIn UpperButton(D6);
float VR_value0,VR_value1;
int Base[6][3][3]= {
@@ -269,190 +273,329 @@
}
}
+int UnderStart(int color)
+{
+ down=BaseUnder(color);
+ Latch=0;
+ DataPack.write(Col[down]);
+ wait_us(1);
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(Col[down]);
+ wait_us(1);
+ DataPack.write(Row[1]);
+ wait_us(1);
+ Latch=1;
+ if(UnderButton==1) {
+ x=down;
+ return 1;
+ } else return 0;
+}
+
+int UpperStart(int color)
+{
+ up=BaseUpper(color);
+ Latch=0;
+ DataPack.write(Col[up]);
+ wait_us(1);
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(Col[up]);
+ wait_us(1);
+ DataPack.write(Row[6]);
+ wait_us(1);
+ Latch=1;
+ if(UpperButton==1) {
+ x=up;
+ return 1;
+ } else return 0;
+}
+
+void uplose(int x)
+{
+ Latch=0;
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(Col[x]);
+ wait_us(1);
+ DataPack.write(0x80);
+ wait_us(1);
+ Latch=1;
+ wait_ms(500);
+
+}
+
+void downlose(int x)
+{
+ Latch=0;
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(Col[x]);
+ wait_us(1);
+ DataPack.write(0x01);
+ wait_us(1);
+ Latch=1;
+ wait_ms(500);
+}
+
int main()
{
DataPack.frequency(100000);
DataPack.format(8,0);
- x=2;
way=0;
-
- Count();
+ srand(time(NULL));
+ int chk,lifeup=2,lifeun=2;
- while(1) {
- for(y=2; y<7; y++) {
-
- if(x>6||x<1) {
- way=way*-1;
- }
+ chk=ran.read()*1000;
+ chk=chk%2;
- x=x+way;
- for(t=0; t<800; t++) {
- BaseUnder(2);
- up=BaseUpper(2);
-
- Latch=0;
- DataPack.write(Col[x]);
- wait_us(1);
- DataPack.write(0xFF);
- wait_us(1);
- DataPack.write(Col[x]);
- wait_us(1);
- DataPack.write(Row[y]);
- wait_us(1);
- Latch=1;
+ //Count();
+ while(1) {
+ while(1) {
+ if(chk==0) {
+ if(UnderStart(lifeun)==1) {
+ break;
+ }
+ BaseUpper(lifeup);
+ }
+ if(chk==1) {
+ if(UpperStart(lifeup)==1) {
+ break;
+ }
+ BaseUnder(lifeun);
}
}
+ while(1) {
+ if(chk==0) {
+ for(y=2; y<7; y++) {
+ if(x>6||x<1) {
+ way=way*-1;
+ }
- if(x==0) {
- if(up>1) {
- break;
+ x=x+way;
+ for(t=0; t<800; t++) {
+ BaseUnder(lifeun);
+ up=BaseUpper(lifeup);
+
+ Latch=0;
+ DataPack.write(Col[x]);
+ wait_us(1);
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(Col[x]);
+ wait_us(1);
+ DataPack.write(Row[y]);
+ wait_us(1);
+ Latch=1;
+ }
+ }
+ chk=1;
+ }
+
+ if(x==0) {
+ if(up>1) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ }
+ way=-1;
+ }
+ if(x==1) {
+ if(up>2) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ } else if(up==1) {
+ way=0;
+ } else way=-1;
}
- way=1;
- }
- if(x==1) {
- if(up>2) {
- break;
- } else if(up==1) {
- way=0;
- } else way=-1;
- }
- if(x==2) {
- if(up>3) {
- break;
- } else if(up==1) {
- way=1;
- } else if(up==2) {
- way=0;
- } else way=-1;
- }
- if(x==3) {
- if(up<2||up>4) {
- break;
- } else if(up==2) {
+ if(x==2) {
+ if(up>3) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ } else if(up==1) {
+ way=1;
+ } else if(up==2) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==3) {
+ if(up<2||up>4) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ } else if(up==2) {
+ way=1;
+ } else if(up==3) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==4) {
+ if(up<3||up>5) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ } else if(up==3) {
+ way=1;
+ } else if(up==4) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==5) {
+ if(up<4) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ } else if(up==4) {
+ way=1;
+ } else if(up==5) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==6) {
+ if(up<5) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ } else if(up==5) {
+ way=1;
+ } else way=0;
+ }
+ if(x==7) {
+ if(up<6) {
+ lifeup=lifeup-1;
+ uplose(x);
+ break;
+ }
way=1;
- } else if(up==3) {
- way=0;
- } else way=-1;
- }
- if(x==4) {
- if(up<3||up>5) {
- break;
- } else if(up==3) {
- way=1;
- } else if(up==4) {
- way=0;
- } else way=-1;
- }
- if(x==5) {
- if(up<4) {
- break;
- } else if(up==4) {
- way=1;
- } else if(up==5) {
- way=0;
- } else way=-1;
- }
- if(x==6) {
- if(up<5) {
- break;
- } else if(up==5) {
- way=1;
- } else way=0;
- }
- if(x==7) {
- if(up<6) {
- break;
- }
- way=1;
- }
-
- for(y=5; y>0; y--) {
-
- if(x>6||x<1) {
- way=way*-1;
}
- x=x+way;
- for(t=0; t<800; t++) {
- down=BaseUnder(2);
- BaseUpper(2);
+ if(chk==1) {
+ for(y=5; y>0; y--) {
+
+ if(x>6||x<1) {
+ way=way*-1;
+ }
+
+ x=x+way;
+ for(t=0; t<800; t++) {
+ down=BaseUnder(lifeun);
+ BaseUpper(lifeup);
- Latch=0;
- DataPack.write(Col[x]);
- wait_us(1);
- DataPack.write(0xFF);
- wait_us(1);
- DataPack.write(Col[x]);
- wait_us(1);
- DataPack.write(Row[y]);
- wait_us(1);
- Latch=1;
+ Latch=0;
+ DataPack.write(Col[x]);
+ wait_us(1);
+ DataPack.write(0xFF);
+ wait_us(1);
+ DataPack.write(Col[x]);
+ wait_us(1);
+ DataPack.write(Row[y]);
+ wait_us(1);
+ Latch=1;
+ }
+ }
+ chk=0;
}
- }
- if(x==0) {
- if(down>1) {
- break;
+ if(x==0) {
+ if(down>1) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ }
+ way=-1;
+ }
+ if(x==1) {
+ if(down>2) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ } else if(down==1) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==2) {
+ if(down>3) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ } else if(down==1) {
+ way=1;
+ } else if(down==2) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==3) {
+ if(down<2||down>4) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ } else if(down==2) {
+ way=1;
+ } else if(down==3) {
+ way=0;
+ } else way=-1;
}
- way=1;
- }
- if(x==1) {
- if(down>2) {
- break;
- } else if(down==1) {
- way=0;
- } else way=-1;
- }
- if(x==2) {
- if(down>3) {
- break;
- } else if(down==1) {
+ if(x==4) {
+ if(down<3||down>5) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ } else if(down==3) {
+ way=1;
+ } else if(down==4) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==5) {
+ if(down<4) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ } else if(down==4) {
+ way=1;
+ } else if(down==5) {
+ way=0;
+ } else way=-1;
+ }
+ if(x==6) {
+ if(down<5) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ } else if(down==5) {
+ way=1;
+ } else way=0;
+ }
+ if(x==7) {
+ if(down<6) {
+ lifeun=lifeun-1;
+ downlose(x);
+ break;
+ }
way=1;
- } else if(down==2) {
- way=0;
- } else way=-1;
+ }
+
}
- if(x==3) {
- if(down<2||down>4) {
- break;
- } else if(down==2) {
- way=1;
- } else if(down==3) {
- way=0;
- } else way=-1;
- }
- if(x==4) {
- if(down<3||down>5) {
- break;
- } else if(down==3) {
- way=1;
- } else if(down==4) {
- way=0;
- } else way=-1;
+ if(lifeup<0) {
+ while(UnderButton==0&&UpperButton==0) {
+
+ }
+ lifeup=2;
+ lifeun=2;
}
- if(x==5) {
- if(down<4) {
- break;
- } else if(down==4) {
- way=1;
- } else if(down==5) {
- way=0;
- } else way=-1;
+ if(lifeun<0) {
+ while(UnderButton==0&&UpperButton==0) {
+
+ }
+ lifeup=2;
+ lifeun=2;
}
- if(x==6) {
- if(down<5) {
- break;
- } else if(down==5) {
- way=1;
- } else way=0;
- }
- if(x==7) {
- if(down<6) {
- break;
- }
- way=1;
- }
-
}
}