受け取りのコントローラのプログラム
Dependencies: TextLCD mbed MultiSerial Pswitch_Lib
Diff: main.cpp
- Revision:
- 5:a5c324942570
- Parent:
- 4:39edc16ee5c3
- Child:
- 6:08b5c5bdace9
diff -r 39edc16ee5c3 -r a5c324942570 main.cpp --- a/main.cpp Tue Sep 23 08:47:33 2014 +0000 +++ b/main.cpp Thu Sep 25 08:20:34 2014 +0000 @@ -1,22 +1,29 @@ #include "mbed.h" #include "TextLCD.h" #include "MultiSerial.h" -#include "Pswitch.h" #define DATA_NUM 2 +#define LINKCODE 0xCC +#define LINK_INTERVAL 100 #define KEYCODE 0xAA -#define INTERVAL 12 +#define INTERVAL .5 //12 enum HAND{RIGHT=0, LEFT}; enum FINGER{INDEX=0, MIDDLE}; enum COMPASS{NORTH=0, EAST, SOUTH, WEST}; enum COLOR{YELLOW=0, RED, GREEN, BLUE}; -uint8_t INdata[DATA_NUM]={0}, EXdata[DATA_NUM]={0}; +uint8_t TXdata[DATA_NUM]={0}; +uint8_t RXdata[DATA_NUM]={0}; + +uint8_t INdata[DATA_NUM]={0}; +uint8_t EXdata[DATA_NUM]={0}; + volatile uint8_t count=0; bool SW; void SetUp(); +void connect_check(); uint8_t LinkBit(bool eight, bool seven, bool six, bool five, bool fore, bool three, bool two, bool one); void illumination(); @@ -27,25 +34,40 @@ DigitalIn CrossKey[4][2]={{p8, p30}, {p11, p29}, {p15, p28}, {p16, p27}};//p7, p12=reserve DigitalIn SideKey[2][2]={{p17, p20}, {p18, p19}}; -Pswitch Toggle(p5); +DigitalIn Toggle(p5); -MultiSerial Xbee(p9, p10, write);//or p13, p14 -Serial pc(USBTX, USBRX); +MultiSerial Xbee(p9, p10); +Serial pc(USBTX,USBRX); + -TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD16x2); // rs, e, d4-d7 - -int main() { +int main() +{ + SetUp(); + + Toggle.mode(PullUp); + + connect_check(); + + TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD16x2); // rs, e, d4-d7 - SetUp(); - + if(TXdata[0]==LINKCODE) lcd.cls(), lcd.printf("3SecondsLater,\n YouCanRun"); + + wait(3); + + YLED=!Toggle; + if(YLED) lcd.cls(), lcd.printf("Pause Mode\n"), SW=0; + if(!YLED) lcd.cls(), lcd.printf("Run Mode\n"), SW=1; + + Xbee.write_data(EXdata, KEYCODE); + while(1) { - YLED=!Toggle.read(); + YLED=!Toggle; if(YLED&&SW) lcd.cls(), lcd.printf("Pause Mode\n"), SW=0; if((!YLED)&&(!SW)) lcd.cls(), lcd.printf("Run Mode\n"), SW=1; - if(Toggle.read()){ + if(Toggle){ EXdata[0] = LinkBit(!CrossKey[YELLOW][LEFT], !CrossKey[RED][LEFT], !CrossKey[GREEN][LEFT], !CrossKey[BLUE][LEFT], !CrossKey[YELLOW][RIGHT], !CrossKey[RED][RIGHT], !CrossKey[GREEN][RIGHT], !CrossKey[BLUE][RIGHT]); @@ -56,15 +78,11 @@ } } + } void SetUp(void){ - Xbee.write_data(EXdata, KEYCODE); - - if(!Toggle.read()) lcd.cls(), lcd.printf("Pause Mode\n"), SW=0; - if(Toggle.read()) lcd.cls(), lcd.printf("Run Mode\n"), SW=1; - CrossKey[NORTH][RIGHT].mode(PullUp); CrossKey[EAST][RIGHT].mode(PullUp); CrossKey[WEST][RIGHT].mode(PullUp); @@ -80,6 +98,30 @@ SideKey[MIDDLE][LEFT].mode(PullUp); flick.attach(illumination, INTERVAL); + flick.detach(); +} +void connect_check(void){ + + while(1){ + + //YLED = !Toggle; + //LED = 12; + Xbee.start_write(); + TXdata[0]=LINKCODE; + Xbee.write_data(TXdata,KEYCODE); + wait_ms(100); + Xbee.stop_write(); + + Xbee.start_read(); + Xbee.read_data(RXdata,KEYCODE); + LED = 3; + wait_ms(100); + if(RXdata[0]==LINKCODE) break; + + Xbee.stop_read(); + + } + } uint8_t LinkBit(bool eight, bool seven, bool six, bool five, bool fore, bool three, bool two, bool one){//0と1を集めて整数を作る return 0x80*eight + 0x40*seven + 0x20*six + 0x10*five + 0x08*fore + 0x04*three + 0x02*two + 0x01*one;