NYANTA man
/
test_master_kourobo2018
てすと
main.cpp@0:5516553ff997, 2018-07-11 (annotated)
- Committer:
- NYANTA
- Date:
- Wed Jul 11 08:08:33 2018 +0000
- Revision:
- 0:5516553ff997
???
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NYANTA | 0:5516553ff997 | 1 | #include "mbed.h" |
NYANTA | 0:5516553ff997 | 2 | |
NYANTA | 0:5516553ff997 | 3 | #define WHEEL_1_ADDRESS 0xA0 |
NYANTA | 0:5516553ff997 | 4 | #define WHEEL_2_ADDRESS 0xA2 |
NYANTA | 0:5516553ff997 | 5 | #define WHEEL_3_ADDRESS 0xA4 |
NYANTA | 0:5516553ff997 | 6 | #define CATAPULT_ADDRESS 0xA6 |
NYANTA | 0:5516553ff997 | 7 | |
NYANTA | 0:5516553ff997 | 8 | Serial xbee(D8, D2); |
NYANTA | 0:5516553ff997 | 9 | I2C i2c(D14, D15); |
NYANTA | 0:5516553ff997 | 10 | |
NYANTA | 0:5516553ff997 | 11 | DigitalOut start_led(D13); |
NYANTA | 0:5516553ff997 | 12 | DigitalOut receive_led(D12); |
NYANTA | 0:5516553ff997 | 13 | |
NYANTA | 0:5516553ff997 | 14 | int button_data[8]; |
NYANTA | 0:5516553ff997 | 15 | |
NYANTA | 0:5516553ff997 | 16 | int wheel_1_data = 0x30; |
NYANTA | 0:5516553ff997 | 17 | int wheel_2_data = 0x30; |
NYANTA | 0:5516553ff997 | 18 | int wheel_3_data = 0x30; |
NYANTA | 0:5516553ff997 | 19 | int catapult_data = 0x30; |
NYANTA | 0:5516553ff997 | 20 | |
NYANTA | 0:5516553ff997 | 21 | int dummy_rcvdata = 0xFF; |
NYANTA | 0:5516553ff997 | 22 | int button_rcvdata = 0xFF; |
NYANTA | 0:5516553ff997 | 23 | int RJ_rcvdata = 0x00; |
NYANTA | 0:5516553ff997 | 24 | int LJ_rcvdata = 0x00; |
NYANTA | 0:5516553ff997 | 25 | |
NYANTA | 0:5516553ff997 | 26 | void data_receive(){ |
NYANTA | 0:5516553ff997 | 27 | dummy_rcvdata = 0xFF; |
NYANTA | 0:5516553ff997 | 28 | button_rcvdata = 0xFF; |
NYANTA | 0:5516553ff997 | 29 | RJ_rcvdata = 0x00; |
NYANTA | 0:5516553ff997 | 30 | LJ_rcvdata = 0x00; |
NYANTA | 0:5516553ff997 | 31 | dummy_rcvdata = xbee.getc(); |
NYANTA | 0:5516553ff997 | 32 | if(dummy_rcvdata == 0x00){ |
NYANTA | 0:5516553ff997 | 33 | button_rcvdata = xbee.getc(); |
NYANTA | 0:5516553ff997 | 34 | RJ_rcvdata = xbee.getc(); |
NYANTA | 0:5516553ff997 | 35 | LJ_rcvdata = xbee.getc(); |
NYANTA | 0:5516553ff997 | 36 | |
NYANTA | 0:5516553ff997 | 37 | receive_led = 1; |
NYANTA | 0:5516553ff997 | 38 | } |
NYANTA | 0:5516553ff997 | 39 | else{ |
NYANTA | 0:5516553ff997 | 40 | receive_led = 0; |
NYANTA | 0:5516553ff997 | 41 | } |
NYANTA | 0:5516553ff997 | 42 | } |
NYANTA | 0:5516553ff997 | 43 | |
NYANTA | 0:5516553ff997 | 44 | void setup(){ |
NYANTA | 0:5516553ff997 | 45 | xbee.baud(9600); |
NYANTA | 0:5516553ff997 | 46 | xbee.attach(data_receive, Serial::RxIrq); |
NYANTA | 0:5516553ff997 | 47 | start_led = 1; |
NYANTA | 0:5516553ff997 | 48 | } |
NYANTA | 0:5516553ff997 | 49 | |
NYANTA | 0:5516553ff997 | 50 | void data_analyze(){ |
NYANTA | 0:5516553ff997 | 51 | |
NYANTA | 0:5516553ff997 | 52 | wheel_1_data = 0x30; |
NYANTA | 0:5516553ff997 | 53 | wheel_2_data = 0x30; |
NYANTA | 0:5516553ff997 | 54 | wheel_3_data = 0x30; |
NYANTA | 0:5516553ff997 | 55 | catapult_data = 030; |
NYANTA | 0:5516553ff997 | 56 | |
NYANTA | 0:5516553ff997 | 57 | int num = 128; |
NYANTA | 0:5516553ff997 | 58 | for(int i = 7;i >= 0;i--){ |
NYANTA | 0:5516553ff997 | 59 | if(button_rcvdata >= num){ |
NYANTA | 0:5516553ff997 | 60 | button_rcvdata = button_rcvdata - num; |
NYANTA | 0:5516553ff997 | 61 | button_data[i] = 1; |
NYANTA | 0:5516553ff997 | 62 | } |
NYANTA | 0:5516553ff997 | 63 | else{ |
NYANTA | 0:5516553ff997 | 64 | button_data[i] = 0; |
NYANTA | 0:5516553ff997 | 65 | } |
NYANTA | 0:5516553ff997 | 66 | |
NYANTA | 0:5516553ff997 | 67 | num = num / 2; |
NYANTA | 0:5516553ff997 | 68 | } |
NYANTA | 0:5516553ff997 | 69 | if(button_data[2] == 1){ |
NYANTA | 0:5516553ff997 | 70 | catapult_data = 0x17; |
NYANTA | 0:5516553ff997 | 71 | } |
NYANTA | 0:5516553ff997 | 72 | else{ |
NYANTA | 0:5516553ff997 | 73 | catapult_data = 0x30; |
NYANTA | 0:5516553ff997 | 74 | } |
NYANTA | 0:5516553ff997 | 75 | |
NYANTA | 0:5516553ff997 | 76 | |
NYANTA | 0:5516553ff997 | 77 | |
NYANTA | 0:5516553ff997 | 78 | /*if(LJ_rcvdata > 31){ |
NYANTA | 0:5516553ff997 | 79 | LJ_rcvdata = LJ_rcvdata * 0b00001111; |
NYANTA | 0:5516553ff997 | 80 | } |
NYANTA | 0:5516553ff997 | 81 | |
NYANTA | 0:5516553ff997 | 82 | if(LJ_rcvdata > 31){ |
NYANTA | 0:5516553ff997 | 83 | wheel_1_data = 0x25; |
NYANTA | 0:5516553ff997 | 84 | wheel_2_data = 0x25; |
NYANTA | 0:5516553ff997 | 85 | wheel_3_data = 0x25; |
NYANTA | 0:5516553ff997 | 86 | } |
NYANTA | 0:5516553ff997 | 87 | else if(LJ_rcvdata > 16){ |
NYANTA | 0:5516553ff997 | 88 | wheel_1_data = 0x23; |
NYANTA | 0:5516553ff997 | 89 | wheel_2_data = 0x23; |
NYANTA | 0:5516553ff997 | 90 | wheel_3_data = 0x23; |
NYANTA | 0:5516553ff997 | 91 | } |
NYANTA | 0:5516553ff997 | 92 | else if((LJ_rcvdata < 14) && (LJ_rcvdata > 10)){ |
NYANTA | 0:5516553ff997 | 93 | wheel_1_data = 0x30; |
NYANTA | 0:5516553ff997 | 94 | wheel_2_data = 0x30; |
NYANTA | 0:5516553ff997 | 95 | wheel_3_data = 0x30; |
NYANTA | 0:5516553ff997 | 96 | } |
NYANTA | 0:5516553ff997 | 97 | else if(LJ_rcvdata > 8){ |
NYANTA | 0:5516553ff997 | 98 | wheel_1_data = 0x13; |
NYANTA | 0:5516553ff997 | 99 | wheel_2_data = 0x13; |
NYANTA | 0:5516553ff997 | 100 | wheel_3_data = 0x13; |
NYANTA | 0:5516553ff997 | 101 | } |
NYANTA | 0:5516553ff997 | 102 | else{ |
NYANTA | 0:5516553ff997 | 103 | wheel_1_data = 0x15; |
NYANTA | 0:5516553ff997 | 104 | wheel_2_data = 0x15; |
NYANTA | 0:5516553ff997 | 105 | wheel_3_data = 0x15; |
NYANTA | 0:5516553ff997 | 106 | }*/ |
NYANTA | 0:5516553ff997 | 107 | |
NYANTA | 0:5516553ff997 | 108 | if(RJ_rcvdata > 0.9){ |
NYANTA | 0:5516553ff997 | 109 | wheel_2_data = 0x1A; |
NYANTA | 0:5516553ff997 | 110 | wheel_3_data = 0x2A; |
NYANTA | 0:5516553ff997 | 111 | } |
NYANTA | 0:5516553ff997 | 112 | else if(RJ_rcvdata > 0.8){ |
NYANTA | 0:5516553ff997 | 113 | wheel_2_data = 0x19; |
NYANTA | 0:5516553ff997 | 114 | wheel_3_data = 0x29; |
NYANTA | 0:5516553ff997 | 115 | } |
NYANTA | 0:5516553ff997 | 116 | else if(RJ_rcvdata > 0.7){ |
NYANTA | 0:5516553ff997 | 117 | wheel_2_data = 0x18; |
NYANTA | 0:5516553ff997 | 118 | wheel_3_data = 0x28; |
NYANTA | 0:5516553ff997 | 119 | } |
NYANTA | 0:5516553ff997 | 120 | else if(RJ_rcvdata > 0.6){ |
NYANTA | 0:5516553ff997 | 121 | wheel_2_data = 0x17; |
NYANTA | 0:5516553ff997 | 122 | wheel_3_data = 0x27; |
NYANTA | 0:5516553ff997 | 123 | } |
NYANTA | 0:5516553ff997 | 124 | else if(RJ_rcvdata == 0.5){ |
NYANTA | 0:5516553ff997 | 125 | wheel_2_data = 0x30; |
NYANTA | 0:5516553ff997 | 126 | wheel_3_data = 0x30; |
NYANTA | 0:5516553ff997 | 127 | } |
NYANTA | 0:5516553ff997 | 128 | else if(RJ_rcvdata < 0.4){ |
NYANTA | 0:5516553ff997 | 129 | wheel_2_data = 0x27; |
NYANTA | 0:5516553ff997 | 130 | wheel_3_data = 0x17; |
NYANTA | 0:5516553ff997 | 131 | } |
NYANTA | 0:5516553ff997 | 132 | else if(RJ_rcvdata < 0.3){ |
NYANTA | 0:5516553ff997 | 133 | wheel_2_data = 0x28; |
NYANTA | 0:5516553ff997 | 134 | wheel_3_data = 0x18; |
NYANTA | 0:5516553ff997 | 135 | } |
NYANTA | 0:5516553ff997 | 136 | else if(RJ_rcvdata < 0.2){ |
NYANTA | 0:5516553ff997 | 137 | wheel_2_data = 0x29; |
NYANTA | 0:5516553ff997 | 138 | wheel_3_data = 0x19; |
NYANTA | 0:5516553ff997 | 139 | } |
NYANTA | 0:5516553ff997 | 140 | } |
NYANTA | 0:5516553ff997 | 141 | |
NYANTA | 0:5516553ff997 | 142 | void i2c_send(int address, int data){ |
NYANTA | 0:5516553ff997 | 143 | i2c.start(); |
NYANTA | 0:5516553ff997 | 144 | i2c.write(address); |
NYANTA | 0:5516553ff997 | 145 | i2c.write(data); |
NYANTA | 0:5516553ff997 | 146 | i2c.stop(); |
NYANTA | 0:5516553ff997 | 147 | } |
NYANTA | 0:5516553ff997 | 148 | |
NYANTA | 0:5516553ff997 | 149 | void i2c_allsend(){ |
NYANTA | 0:5516553ff997 | 150 | i2c_send(WHEEL_1_ADDRESS,wheel_1_data); |
NYANTA | 0:5516553ff997 | 151 | i2c_send(WHEEL_2_ADDRESS,wheel_2_data); |
NYANTA | 0:5516553ff997 | 152 | i2c_send(WHEEL_3_ADDRESS,wheel_3_data); |
NYANTA | 0:5516553ff997 | 153 | i2c_send(CATAPULT_ADDRESS,catapult_data); |
NYANTA | 0:5516553ff997 | 154 | } |
NYANTA | 0:5516553ff997 | 155 | |
NYANTA | 0:5516553ff997 | 156 | int main(){ |
NYANTA | 0:5516553ff997 | 157 | setup(); |
NYANTA | 0:5516553ff997 | 158 | while(1){ |
NYANTA | 0:5516553ff997 | 159 | data_analyze(); |
NYANTA | 0:5516553ff997 | 160 | //i2c_allsend(); |
NYANTA | 0:5516553ff997 | 161 | i2c_send(WHEEL_1_ADDRESS,0x11); |
NYANTA | 0:5516553ff997 | 162 | i2c_send(WHEEL_2_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 163 | i2c_send(WHEEL_3_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 164 | i2c_send(CATAPULT_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 165 | wait(0.5); |
NYANTA | 0:5516553ff997 | 166 | i2c_send(WHEEL_1_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 167 | i2c_send(WHEEL_2_ADDRESS,0x11); |
NYANTA | 0:5516553ff997 | 168 | i2c_send(WHEEL_3_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 169 | i2c_send(CATAPULT_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 170 | wait(0.5); |
NYANTA | 0:5516553ff997 | 171 | i2c_send(WHEEL_1_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 172 | i2c_send(WHEEL_2_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 173 | i2c_send(WHEEL_3_ADDRESS,0x11); |
NYANTA | 0:5516553ff997 | 174 | i2c_send(CATAPULT_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 175 | wait(0.5); |
NYANTA | 0:5516553ff997 | 176 | i2c_send(WHEEL_1_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 177 | i2c_send(WHEEL_2_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 178 | i2c_send(WHEEL_3_ADDRESS,0x30); |
NYANTA | 0:5516553ff997 | 179 | i2c_send(CATAPULT_ADDRESS,0x11); |
NYANTA | 0:5516553ff997 | 180 | wait(0.5); |
NYANTA | 0:5516553ff997 | 181 | } |
NYANTA | 0:5516553ff997 | 182 | } |