受け取りのコントローラのプログラム

Dependencies:   TextLCD mbed MultiSerial Pswitch_Lib

Committer:
lilac0112_1
Date:
Sat Oct 04 02:27:25 2014 +0000
Revision:
8:b43fbaf46e0e
Parent:
7:8c15316bdba6

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:d3702a4e32ea 1 #include "mbed.h"
lilac0112_1 0:d3702a4e32ea 2 #include "TextLCD.h"
lilac0112_1 1:84625a611c5f 3 #include "MultiSerial.h"
lilac0112_1 8:b43fbaf46e0e 4
lilac0112_1 2:7820849bf534 5 #define DATA_NUM 2
lilac0112_1 5:a5c324942570 6 #define LINKCODE 0xCC
lilac0112_1 8:b43fbaf46e0e 7 #define PULSE 500
lilac0112_1 2:7820849bf534 8 #define KEYCODE 0xAA
lilac0112_1 7:8c15316bdba6 9 #define INTERVAL .5 //12
lilac0112_1 0:d3702a4e32ea 10
lilac0112_1 0:d3702a4e32ea 11 enum HAND{RIGHT=0, LEFT};
lilac0112_1 0:d3702a4e32ea 12 enum FINGER{INDEX=0, MIDDLE};
lilac0112_1 0:d3702a4e32ea 13 enum COMPASS{NORTH=0, EAST, SOUTH, WEST};
lilac0112_1 7:8c15316bdba6 14 enum COLOR{YELLOW=0, RED, GREEN, BLUE};
lilac0112_1 0:d3702a4e32ea 15
lilac0112_1 8:b43fbaf46e0e 16 uint8_t TXdata[DATA_NUM]={0}, RXdata[DATA_NUM]={0};
lilac0112_1 8:b43fbaf46e0e 17 uint8_t INdata[DATA_NUM]={0}, EXdata[DATA_NUM]={0};
lilac0112_1 8:b43fbaf46e0e 18 uint8_t count=0;
lilac0112_1 7:8c15316bdba6 19 bool SW;
lilac0112_1 0:d3702a4e32ea 20
lilac0112_1 7:8c15316bdba6 21 void SetUp();
lilac0112_1 5:a5c324942570 22 void connect_check();
lilac0112_1 7:8c15316bdba6 23 uint8_t LinkBit(bool eight, bool seven, bool six, bool five, bool fore, bool three, bool two, bool one);
lilac0112_1 7:8c15316bdba6 24 void illumination();
lilac0112_1 0:d3702a4e32ea 25
lilac0112_1 7:8c15316bdba6 26 Ticker flick;
lilac0112_1 7:8c15316bdba6 27 BusOut LED(LED1, LED2, LED3, LED4);
lilac0112_1 7:8c15316bdba6 28
lilac0112_1 0:d3702a4e32ea 29 DigitalOut YLED(p6);
lilac0112_1 8:b43fbaf46e0e 30 DigitalIn Toggle(p5);
lilac0112_1 0:d3702a4e32ea 31
lilac0112_1 7:8c15316bdba6 32 DigitalIn CrossKey[4][2]={{p8, p30}, {p11, p29}, {p15, p28}, {p16, p27}};//p7, p12=reserve
lilac0112_1 7:8c15316bdba6 33 DigitalIn SideKey[2][2]={{p17, p20}, {p18, p19}};
lilac0112_1 0:d3702a4e32ea 34
lilac0112_1 5:a5c324942570 35 MultiSerial Xbee(p9, p10);
lilac0112_1 8:b43fbaf46e0e 36 RawSerial pc(USBTX,USBRX);
lilac0112_1 4:39edc16ee5c3 37
lilac0112_1 5:a5c324942570 38 int main()
lilac0112_1 5:a5c324942570 39 {
lilac0112_1 7:8c15316bdba6 40 SetUp();
lilac0112_1 7:8c15316bdba6 41
lilac0112_1 8:b43fbaf46e0e 42 TXdata[0]=LINKCODE;
lilac0112_1 8:b43fbaf46e0e 43 Xbee.start_write();
lilac0112_1 8:b43fbaf46e0e 44 Xbee.write_data(TXdata,KEYCODE);
lilac0112_1 8:b43fbaf46e0e 45
lilac0112_1 8:b43fbaf46e0e 46 Xbee.start_read();
lilac0112_1 8:b43fbaf46e0e 47 Xbee.read_data(RXdata,KEYCODE);
lilac0112_1 5:a5c324942570 48
lilac0112_1 8:b43fbaf46e0e 49 connect_check();
lilac0112_1 0:d3702a4e32ea 50
lilac0112_1 8:b43fbaf46e0e 51 //flick.attach(illumination, INTERVAL);
lilac0112_1 7:8c15316bdba6 52 TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD16x2); // rs, e, d4-d7
lilac0112_1 7:8c15316bdba6 53
lilac0112_1 7:8c15316bdba6 54 if(TXdata[0]==LINKCODE) lcd.cls(), lcd.printf("3SecondsLater,\n YouCanRun");
lilac0112_1 5:a5c324942570 55
lilac0112_1 5:a5c324942570 56 wait(3);
lilac0112_1 5:a5c324942570 57
lilac0112_1 7:8c15316bdba6 58 SW = Toggle;
lilac0112_1 5:a5c324942570 59
lilac0112_1 6:08b5c5bdace9 60 Xbee.start_write();
lilac0112_1 5:a5c324942570 61 Xbee.write_data(EXdata, KEYCODE);
lilac0112_1 5:a5c324942570 62
lilac0112_1 0:d3702a4e32ea 63 while(1) {
lilac0112_1 0:d3702a4e32ea 64
lilac0112_1 7:8c15316bdba6 65 YLED=!Toggle;
lilac0112_1 4:39edc16ee5c3 66
lilac0112_1 8:b43fbaf46e0e 67 /*if(!Toggle){
lilac0112_1 8:b43fbaf46e0e 68 flick.detach();
lilac0112_1 8:b43fbaf46e0e 69 LED=0;
lilac0112_1 8:b43fbaf46e0e 70 }else{
lilac0112_1 8:b43fbaf46e0e 71 flick.attach(illumination, INTERVAL);
lilac0112_1 8:b43fbaf46e0e 72 }*/
lilac0112_1 8:b43fbaf46e0e 73
lilac0112_1 8:b43fbaf46e0e 74 if(E)
lilac0112_1 8:b43fbaf46e0e 75
lilac0112_1 7:8c15316bdba6 76 if(YLED&&SW) lcd.cls(), lcd.printf("Pause Mode\n"), SW=0;
lilac0112_1 7:8c15316bdba6 77 if((!YLED)&&(!SW)) lcd.cls(), lcd.printf("Run Mode\n"), SW=1;
lilac0112_1 4:39edc16ee5c3 78
lilac0112_1 8:b43fbaf46e0e 79 /*if(Toggle){
lilac0112_1 3:cfd7cd361088 80
lilac0112_1 3:cfd7cd361088 81 EXdata[0] = LinkBit(!CrossKey[YELLOW][LEFT], !CrossKey[RED][LEFT], !CrossKey[GREEN][LEFT], !CrossKey[BLUE][LEFT],
lilac0112_1 3:cfd7cd361088 82 !CrossKey[YELLOW][RIGHT], !CrossKey[RED][RIGHT], !CrossKey[GREEN][RIGHT], !CrossKey[BLUE][RIGHT]);
lilac0112_1 3:cfd7cd361088 83 EXdata[1] = LinkBit(0, 0, 0, 0, !SideKey[INDEX][LEFT], !SideKey[MIDDLE][LEFT], !SideKey[INDEX][RIGHT], !SideKey[MIDDLE][RIGHT]);
lilac0112_1 3:cfd7cd361088 84 }else{
lilac0112_1 3:cfd7cd361088 85
lilac0112_1 3:cfd7cd361088 86 EXdata[0] = EXdata[1] = 0x00;
lilac0112_1 7:8c15316bdba6 87 }
lilac0112_1 0:d3702a4e32ea 88
lilac0112_1 0:d3702a4e32ea 89 }
lilac0112_1 5:a5c324942570 90
lilac0112_1 0:d3702a4e32ea 91 }
lilac0112_1 7:8c15316bdba6 92 void SetUp(void){
lilac0112_1 0:d3702a4e32ea 93
lilac0112_1 0:d3702a4e32ea 94 CrossKey[NORTH][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 95 CrossKey[EAST][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 96 CrossKey[WEST][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 97 CrossKey[SOUTH][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 98 CrossKey[NORTH][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 99 CrossKey[EAST][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 100 CrossKey[WEST][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 101 CrossKey[SOUTH][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 102
lilac0112_1 0:d3702a4e32ea 103 SideKey[INDEX][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 104 SideKey[MIDDLE][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 105 SideKey[INDEX][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 106 SideKey[MIDDLE][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 107
lilac0112_1 8:b43fbaf46e0e 108 Toggle.mode(PullUp);
lilac0112_1 7:8c15316bdba6 109 }
lilac0112_1 5:a5c324942570 110 void connect_check(void){
lilac0112_1 5:a5c324942570 111
lilac0112_1 5:a5c324942570 112 while(1){
lilac0112_1 7:8c15316bdba6 113
lilac0112_1 6:08b5c5bdace9 114 YLED = !Toggle;
lilac0112_1 7:8c15316bdba6 115
lilac0112_1 5:a5c324942570 116 Xbee.start_write();
lilac0112_1 5:a5c324942570 117 TXdata[0]=LINKCODE;
lilac0112_1 5:a5c324942570 118 Xbee.write_data(TXdata,KEYCODE);
lilac0112_1 8:b43fbaf46e0e 119 LED=15;
lilac0112_1 8:b43fbaf46e0e 120 wait_ms(PULSE);
lilac0112_1 5:a5c324942570 121 Xbee.stop_write();
lilac0112_1 8:b43fbaf46e0e 122 LED=0;
lilac0112_1 8:b43fbaf46e0e 123 wait_ms(PULSE);
lilac0112_1 6:08b5c5bdace9 124
lilac0112_1 6:08b5c5bdace9 125 if(RXdata[0]==LINKCODE) break;
lilac0112_1 7:8c15316bdba6 126
lilac0112_1 8:b43fbaf46e0e 127 }
lilac0112_1 6:08b5c5bdace9 128 }
lilac0112_1 7:8c15316bdba6 129 uint8_t LinkBit(bool eight, bool seven, bool six, bool five, bool fore, bool three, bool two, bool one){//0と1を集めて整数を作る
lilac0112_1 0:d3702a4e32ea 130 return 0x80*eight + 0x40*seven + 0x20*six + 0x10*five + 0x08*fore + 0x04*three + 0x02*two + 0x01*one;
lilac0112_1 0:d3702a4e32ea 131 }
lilac0112_1 0:d3702a4e32ea 132 void illumination(void){//literally
lilac0112_1 0:d3702a4e32ea 133 count++;
lilac0112_1 0:d3702a4e32ea 134 LED = count;
lilac0112_1 7:8c15316bdba6 135 }