hahaha
Dependencies: mbed
main2.h
- Committer:
- arthicha
- Date:
- 2016-12-06
- Revision:
- 1:d8ce226c8c2e
File content as of revision 1:d8ce226c8c2e:
#include "mbed.h" #include "bmu.h" InterruptIn lim(D3); InterruptIn rotate(D4); InterruptIn choose(D5); Ticker flipper; Ticker Update; bmuimu imu; Serial pc(USBTX,USBRX); Serial mas(D8,D2); Serial duino(PA_11, PA_12); Timer t; Timer timer; //********************************************************************************************************************************* //********************************************************************************************************************************* //********************************************************************************************************************************* // variable //********************************************************************************************************************************* //********************************************************************************************************************************* //********************************************************************************************************************************* bool anach = false; bool buttonState[3] = {0,0,0}; // button limit switchm rotate and choose state respectively. unsigned int county = 10; // county down. char data[50]; char elem; int yyaaww; bool errorie = false; // store error in ambigous imu data. int helperRoll = 0, helperPitch=0,helperYaw=0; unsigned int indx = 0; unsigned int state = 0; int dete[50]; int lis[50] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; // state 0 = initial / start. // 1 = waiting for limit switch. unsigned int turn = 0; // turn. unsigned int x = 0, y = 0, z = 0,lx=0,ly=0,lz=0; int winStatus = 0; int A , B , C , player , button; int countDown = 9; int WMbox[6]; int map[5][5][5],rmap[5][5][5]; //store map. int Check1[5][5][5] , Check2[5][5][5]; //convert to x or o map. void Rise(int but) { buttonState[but-3] = 1; } void Fall(int but) { buttonState[but-3] = 0; } void Sent(char arrayi[],float it,int siz) { for (int i = 0;i<siz;i++) { mas.putc(arrayi[i]); wait(it); } } void LInitial(){ //ลงค่าเสร็จ if (timer.read() > 1) { duino.putc(lis[20]); timer.reset(); } if (duino.readable()){ } } void getStr() { while (mas.readable()) { elem = mas.getc(); pc.printf("char is %d\n\r",elem); if ((elem == '\n')) { pc.printf("string is %s\n\r",data); for(int i=0;i<indx;i++) { if (indx > 2) { dete[i] = data[i]; } } for(int i=0;i<30;i++) { data[i] = '\0'; } indx = 0; break; }else { data[indx] = elem; indx += 1; } } } bool chooseAnother() { Sent("cho\n",0.1,4); while(1) { if ((dete[0]=='c')&&(dete[1]=='h')&&(dete[2]=='0')) { return true; }else if ((dete[0]=='c')&&(dete[1]=='h')&&(dete[2]=='x')) { return false; } } } void Rise1() { buttonState[0] = 1; } void Fall1() { buttonState[0] = 0; } void Rise2() { buttonState[1] = 1; } void Fall2() { buttonState[1] = 0; } void LLose(){ //แพ้ if ( t.read() > 1) { //pc.printf("Writing!\n\r"); duino.putc( lis[3]); duino.putc( lis[4]); duino.putc( lis[5]); duino.putc( lis[6]); t.reset(); } if ( duino.readable()) { //pc.printf("recieving %c",duino.getc()); } } void Lose() { LLose(); Sent("los\n",0.1,4); } void LWin(){ //ชนะ if ( timer.read() > 1) { //pc.printf("Writing!\n\r"); duino.putc( lis[0]); duino.putc( lis[1]); duino.putc( lis[2]); timer.reset(); } } void Win() { LWin(); Sent("lwin\n",0.1,4); } void Rise3() { buttonState[2] = 1; } void Fall3() { buttonState[2] = 0; } bool anotherRotate() { Sent("rot\n",0.1,4); while(1) { if ((dete[0]=='r')&&(dete[1]=='o')&&(dete[2]=='t')) { return true; }else if ((dete[0]=='r')&&(dete[1]=='o')&&(dete[2]=='x')) { return false; } } } void LCountDown(int ixxii){ //นับเวลา if ( timer.read() > 1) { duino.putc(ixxii); timer.reset(); } } void LMapComplete(){ //ลงค่าเสร็จ if ( timer.read() > 1) { //pc.printf("Writing!\n\r"); duino.putc( lis[20]); timer.reset();}} int GetCoordinateX() { if ( WMbox[0] != -1) { return WMbox[0]; }else { return WMbox[3]; } } int GetCoordinateY() { if ( WMbox[1] != -1) { return WMbox[1]; }else { return WMbox[4]; } } int GetCoordinateZ() { if ( WMbox[2] != -1) { return WMbox[2]; }else { return WMbox[5]; } } void Choose(int box) { if (box) { WMbox[0] = -1; WMbox[1] = -1; WMbox[2] = -1; }else { WMbox[3] = -1; WMbox[4] = -1; WMbox[5] = -1; } } int main() { lim.rise(&Rise1); lim.fall(&Fall1); rotate.rise(&Rise2); rotate.fall(&Fall2); choose.rise(&Rise3); choose.fall(&Fall3); flipper.attach(&getStr,1.0); //timer interrupt for recieving bluetooth. LInitial(); // set initial pattern in led matrix. wait(5); // wait 5 second for putting the box down to set initial position of imu. while(1){ if ((dete[0]=='l')&&(dete[1]=='o')&&(dete[2]=='s')){ Lose(); break; } else if ((dete[0]=='l')&&(dete[1]=='w')&&(dete[2]=='i')&&(dete[3]=='n')){ Win(); break; } else if ((dete[0]=='c')&&(dete[1]=='h')&&(dete[2]=='o')){ chooseAnother(); } else if ((dete[0]=='r')&&(dete[1]=='o')&&(dete[2]=='t')){ anotherRotate(); } else if ((dete[0]=='h')&&(dete[1]=='e')&&(dete[2]=='l')&&(dete[3]=='r')){ GetCoordinateX(); } else if ((dete[0]=='h')&&(dete[1]=='e')&&(dete[2]=='l')&&(dete[3]=='p')){ GetCoordinateY(); } else if ((dete[0]=='h')&&(dete[1]=='e')&&(dete[2]=='l')&&(dete[3]=='y')){ GetCoordinateZ(); } else if ((dete[0]=='o')&&(dete[1]=='k')){ LMapComplete(); } else if ((dete[0]=='m')&&(dete[1]=='a')&&(dete[2]=='p')&&(dete[3]=='c')){ LMapComplete(); } else if ((dete[0]=='T')&&(dete[1]=='+')&&(dete[2]=='+')){ turn += 1; } else if ((dete[0]=='c')&&(dete[1]=='h')&&(dete[2]=='1')){ Choose(1); } else if ((dete[0]=='T')&&(dete[1]=='u')&&(dete[2]=='r')){ LCountDown(turn); } } }