てすと

Dependencies:   PID mbed

Committer:
NYANTA
Date:
Wed Jul 11 08:08:33 2018 +0000
Revision:
0:5516553ff997
???

Who changed what in which revision?

UserRevisionLine numberNew 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 }