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

Dependencies:   TextLCD mbed MultiSerial Pswitch_Lib

Committer:
lilac0112_1
Date:
Thu Sep 25 10:28:28 2014 +0000
Revision:
6:08b5c5bdace9
Parent:
5:a5c324942570
Child:
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 0:d3702a4e32ea 4
lilac0112_1 2:7820849bf534 5 #define DATA_NUM 2
lilac0112_1 5:a5c324942570 6 #define LINKCODE 0xCC
lilac0112_1 5:a5c324942570 7 #define LINK_INTERVAL 100
lilac0112_1 2:7820849bf534 8 #define KEYCODE 0xAA
lilac0112_1 6:08b5c5bdace9 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 6:08b5c5bdace9 14 enum COLOR{YELLOW=0, RED, GREEN, BLUE};*/
lilac0112_1 0:d3702a4e32ea 15
lilac0112_1 5:a5c324942570 16 uint8_t TXdata[DATA_NUM]={0};
lilac0112_1 5:a5c324942570 17 uint8_t RXdata[DATA_NUM]={0};
lilac0112_1 5:a5c324942570 18
lilac0112_1 5:a5c324942570 19 uint8_t INdata[DATA_NUM]={0};
lilac0112_1 5:a5c324942570 20 uint8_t EXdata[DATA_NUM]={0};
lilac0112_1 5:a5c324942570 21
lilac0112_1 6:08b5c5bdace9 22 //volatile uint8_t count=0;
lilac0112_1 6:08b5c5bdace9 23 //bool SW;
lilac0112_1 6:08b5c5bdace9 24 bool GAT=1;
lilac0112_1 0:d3702a4e32ea 25
lilac0112_1 6:08b5c5bdace9 26 //void SetUp();
lilac0112_1 5:a5c324942570 27 void connect_check();
lilac0112_1 6:08b5c5bdace9 28 void GiveAndTake();
lilac0112_1 6:08b5c5bdace9 29 //uint8_t LinkBit(bool eight, bool seven, bool six, bool five, bool fore, bool three, bool two, bool one);
lilac0112_1 6:08b5c5bdace9 30 //void illumination();
lilac0112_1 0:d3702a4e32ea 31
lilac0112_1 6:08b5c5bdace9 32 //Ticker flick;
lilac0112_1 0:d3702a4e32ea 33 BusOut LED(LED1, LED2, LED3, LED4);
lilac0112_1 0:d3702a4e32ea 34
lilac0112_1 6:08b5c5bdace9 35 Ticker TAX;
lilac0112_1 6:08b5c5bdace9 36
lilac0112_1 0:d3702a4e32ea 37 DigitalOut YLED(p6);
lilac0112_1 0:d3702a4e32ea 38
lilac0112_1 6:08b5c5bdace9 39 //DigitalIn CrossKey[4][2]={{p8, p30}, {p11, p29}, {p15, p28}, {p16, p27}};//p7, p12=reserve
lilac0112_1 6:08b5c5bdace9 40 //DigitalIn SideKey[2][2]={{p17, p20}, {p18, p19}};
lilac0112_1 5:a5c324942570 41 DigitalIn Toggle(p5);
lilac0112_1 0:d3702a4e32ea 42
lilac0112_1 5:a5c324942570 43 MultiSerial Xbee(p9, p10);
lilac0112_1 6:08b5c5bdace9 44 //Serial pc(USBTX,USBRX);
lilac0112_1 5:a5c324942570 45
lilac0112_1 4:39edc16ee5c3 46
lilac0112_1 5:a5c324942570 47 int main()
lilac0112_1 5:a5c324942570 48 {
lilac0112_1 6:08b5c5bdace9 49 //SetUp();
lilac0112_1 5:a5c324942570 50
lilac0112_1 5:a5c324942570 51 Toggle.mode(PullUp);
lilac0112_1 6:08b5c5bdace9 52 TAX.attach(GiveAndTake, 0.1);
lilac0112_1 6:08b5c5bdace9 53 while(1);
lilac0112_1 5:a5c324942570 54 connect_check();
lilac0112_1 5:a5c324942570 55
lilac0112_1 6:08b5c5bdace9 56 //TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD16x2); // rs, e, d4-d7
lilac0112_1 0:d3702a4e32ea 57
lilac0112_1 6:08b5c5bdace9 58 //if(TXdata[0]==LINKCODE) lcd.cls(), lcd.printf("3SecondsLater,\n YouCanRun");
lilac0112_1 5:a5c324942570 59
lilac0112_1 5:a5c324942570 60 wait(3);
lilac0112_1 5:a5c324942570 61
lilac0112_1 6:08b5c5bdace9 62 //SW = Toggle;
lilac0112_1 5:a5c324942570 63
lilac0112_1 6:08b5c5bdace9 64 Xbee.start_write();
lilac0112_1 5:a5c324942570 65 Xbee.write_data(EXdata, KEYCODE);
lilac0112_1 5:a5c324942570 66
lilac0112_1 0:d3702a4e32ea 67 while(1) {
lilac0112_1 0:d3702a4e32ea 68
lilac0112_1 6:08b5c5bdace9 69 //YLED=!Toggle;
lilac0112_1 4:39edc16ee5c3 70
lilac0112_1 6:08b5c5bdace9 71 //if(YLED&&SW) lcd.cls(), lcd.printf("Pause Mode\n"), SW=0;
lilac0112_1 6:08b5c5bdace9 72 //if((!YLED)&&(!SW)) lcd.cls(), lcd.printf("Run Mode\n"), SW=1;
lilac0112_1 4:39edc16ee5c3 73
lilac0112_1 6:08b5c5bdace9 74 /*if(Toggle){
lilac0112_1 3:cfd7cd361088 75
lilac0112_1 3:cfd7cd361088 76 EXdata[0] = LinkBit(!CrossKey[YELLOW][LEFT], !CrossKey[RED][LEFT], !CrossKey[GREEN][LEFT], !CrossKey[BLUE][LEFT],
lilac0112_1 3:cfd7cd361088 77 !CrossKey[YELLOW][RIGHT], !CrossKey[RED][RIGHT], !CrossKey[GREEN][RIGHT], !CrossKey[BLUE][RIGHT]);
lilac0112_1 3:cfd7cd361088 78 EXdata[1] = LinkBit(0, 0, 0, 0, !SideKey[INDEX][LEFT], !SideKey[MIDDLE][LEFT], !SideKey[INDEX][RIGHT], !SideKey[MIDDLE][RIGHT]);
lilac0112_1 3:cfd7cd361088 79 }else{
lilac0112_1 3:cfd7cd361088 80
lilac0112_1 3:cfd7cd361088 81 EXdata[0] = EXdata[1] = 0x00;
lilac0112_1 6:08b5c5bdace9 82 }*/
lilac0112_1 0:d3702a4e32ea 83
lilac0112_1 0:d3702a4e32ea 84 }
lilac0112_1 5:a5c324942570 85
lilac0112_1 0:d3702a4e32ea 86 }
lilac0112_1 0:d3702a4e32ea 87
lilac0112_1 6:08b5c5bdace9 88 /*void SetUp(void){
lilac0112_1 0:d3702a4e32ea 89
lilac0112_1 0:d3702a4e32ea 90 CrossKey[NORTH][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 91 CrossKey[EAST][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 92 CrossKey[WEST][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 93 CrossKey[SOUTH][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 94 CrossKey[NORTH][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 95 CrossKey[EAST][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 96 CrossKey[WEST][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 97 CrossKey[SOUTH][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 98
lilac0112_1 0:d3702a4e32ea 99 SideKey[INDEX][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 100 SideKey[MIDDLE][RIGHT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 101 SideKey[INDEX][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 102 SideKey[MIDDLE][LEFT].mode(PullUp);
lilac0112_1 0:d3702a4e32ea 103
lilac0112_1 1:84625a611c5f 104 flick.attach(illumination, INTERVAL);
lilac0112_1 5:a5c324942570 105 flick.detach();
lilac0112_1 6:08b5c5bdace9 106 }*/
lilac0112_1 5:a5c324942570 107 void connect_check(void){
lilac0112_1 5:a5c324942570 108
lilac0112_1 5:a5c324942570 109 while(1){
lilac0112_1 6:08b5c5bdace9 110 /*
lilac0112_1 6:08b5c5bdace9 111 YLED = !Toggle;
lilac0112_1 6:08b5c5bdace9 112 LED = 12;
lilac0112_1 5:a5c324942570 113 Xbee.start_write();
lilac0112_1 5:a5c324942570 114 TXdata[0]=LINKCODE;
lilac0112_1 5:a5c324942570 115 Xbee.write_data(TXdata,KEYCODE);
lilac0112_1 6:08b5c5bdace9 116 //wait_ms(100);
lilac0112_1 5:a5c324942570 117 Xbee.stop_write();
lilac0112_1 5:a5c324942570 118
lilac0112_1 5:a5c324942570 119 Xbee.start_read();
lilac0112_1 6:08b5c5bdace9 120
lilac0112_1 6:08b5c5bdace9 121 Xbee.read_data(RXdata,KEYCODE);
lilac0112_1 6:08b5c5bdace9 122
lilac0112_1 6:08b5c5bdace9 123 LED = 3;
lilac0112_1 6:08b5c5bdace9 124
lilac0112_1 6:08b5c5bdace9 125 //wait_ms(100);
lilac0112_1 6:08b5c5bdace9 126 if(RXdata[0]==LINKCODE) break;
lilac0112_1 6:08b5c5bdace9 127 while(INdata[0]!=LINKCODE) YLED = !Toggle;
lilac0112_1 6:08b5c5bdace9 128
lilac0112_1 6:08b5c5bdace9 129 while(INdata[0]!=LINKCODE) YLED = !Toggle;
lilac0112_1 6:08b5c5bdace9 130 */
lilac0112_1 6:08b5c5bdace9 131
lilac0112_1 6:08b5c5bdace9 132 /*YLED = !Toggle;
lilac0112_1 6:08b5c5bdace9 133 LED = 12;
lilac0112_1 6:08b5c5bdace9 134 Xbee.start_write();
lilac0112_1 6:08b5c5bdace9 135 TXdata[0]=LINKCODE;
lilac0112_1 6:08b5c5bdace9 136 Xbee.write_data(TXdata,KEYCODE);
lilac0112_1 6:08b5c5bdace9 137 //wait_ms(100);
lilac0112_1 6:08b5c5bdace9 138 Xbee.stop_write();
lilac0112_1 6:08b5c5bdace9 139 Xbee.start_read();
lilac0112_1 6:08b5c5bdace9 140
lilac0112_1 5:a5c324942570 141 Xbee.read_data(RXdata,KEYCODE);
lilac0112_1 5:a5c324942570 142 LED = 3;
lilac0112_1 5:a5c324942570 143 wait_ms(100);
lilac0112_1 5:a5c324942570 144 if(RXdata[0]==LINKCODE) break;
lilac0112_1 5:a5c324942570 145
lilac0112_1 5:a5c324942570 146 Xbee.stop_read();
lilac0112_1 5:a5c324942570 147
lilac0112_1 6:08b5c5bdace9 148 //continue;
lilac0112_1 6:08b5c5bdace9 149 while(INdata[0]!=LINKCODE) YLED = !Toggle;
lilac0112_1 6:08b5c5bdace9 150 while(INdata[0]!=LINKCODE) YLED = !Toggle;*/
lilac0112_1 6:08b5c5bdace9 151
lilac0112_1 5:a5c324942570 152 }
lilac0112_1 5:a5c324942570 153
lilac0112_1 0:d3702a4e32ea 154 }
lilac0112_1 6:08b5c5bdace9 155 void GiveAndTake(){
lilac0112_1 6:08b5c5bdace9 156 if(GAT){
lilac0112_1 6:08b5c5bdace9 157 YLED = !Toggle;
lilac0112_1 6:08b5c5bdace9 158 LED = 12;
lilac0112_1 6:08b5c5bdace9 159 Xbee.start_write();
lilac0112_1 6:08b5c5bdace9 160 TXdata[0]=LINKCODE;
lilac0112_1 6:08b5c5bdace9 161 Xbee.write_data(TXdata,KEYCODE);
lilac0112_1 6:08b5c5bdace9 162 //wait_us(100);
lilac0112_1 6:08b5c5bdace9 163 Xbee.stop_write();
lilac0112_1 6:08b5c5bdace9 164 }
lilac0112_1 6:08b5c5bdace9 165 else{
lilac0112_1 6:08b5c5bdace9 166 YLED = !Toggle;
lilac0112_1 6:08b5c5bdace9 167 Xbee.start_read();
lilac0112_1 6:08b5c5bdace9 168
lilac0112_1 6:08b5c5bdace9 169 Xbee.read_data(RXdata,KEYCODE);
lilac0112_1 6:08b5c5bdace9 170 LED = 3;
lilac0112_1 6:08b5c5bdace9 171 wait_ms(100);
lilac0112_1 6:08b5c5bdace9 172 if(RXdata[0]==LINKCODE) TAX.detach();
lilac0112_1 6:08b5c5bdace9 173
lilac0112_1 6:08b5c5bdace9 174 Xbee.stop_read();
lilac0112_1 6:08b5c5bdace9 175 }
lilac0112_1 6:08b5c5bdace9 176 GAT = !GAT;
lilac0112_1 6:08b5c5bdace9 177 }
lilac0112_1 6:08b5c5bdace9 178 /*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 179 return 0x80*eight + 0x40*seven + 0x20*six + 0x10*five + 0x08*fore + 0x04*three + 0x02*two + 0x01*one;
lilac0112_1 0:d3702a4e32ea 180 }
lilac0112_1 0:d3702a4e32ea 181 void illumination(void){//literally
lilac0112_1 0:d3702a4e32ea 182 count++;
lilac0112_1 0:d3702a4e32ea 183 LED = count;
lilac0112_1 6:08b5c5bdace9 184 }*/