mbed_pro_miniを使った相撲ロボットプログラムの雛形

Dependencies:   RemoteIR USBDevice mbed

Committer:
hardtail
Date:
Thu Sep 10 09:33:58 2015 +0000
Revision:
0:caf66b280785
mbed_pro_mini????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hardtail 0:caf66b280785 1 #include "mbed.h"
hardtail 0:caf66b280785 2 #include "USBSerial.h"
hardtail 0:caf66b280785 3 #include "ReceiverIR.h"
hardtail 0:caf66b280785 4
hardtail 0:caf66b280785 5 #define LED1 P0_29
hardtail 0:caf66b280785 6 #define LED2 P0_28
hardtail 0:caf66b280785 7 #define LED3 P0_27
hardtail 0:caf66b280785 8 #define LED4 P0_26
hardtail 0:caf66b280785 9
hardtail 0:caf66b280785 10 #define front 1
hardtail 0:caf66b280785 11 #define back 2
hardtail 0:caf66b280785 12 #define left 3
hardtail 0:caf66b280785 13 #define right 4
hardtail 0:caf66b280785 14 #define breaking 5
hardtail 0:caf66b280785 15
hardtail 0:caf66b280785 16 #define IRrecerver P0_5
hardtail 0:caf66b280785 17
hardtail 0:caf66b280785 18 /*******X-box rimote controller********/
hardtail 0:caf66b280785 19 #define Xbutton 1
hardtail 0:caf66b280785 20 #define powoer 2
hardtail 0:caf66b280785 21 #define startBTN 3
hardtail 0:caf66b280785 22 #define deside 4
hardtail 0:caf66b280785 23 #define windows 5
hardtail 0:caf66b280785 24 /**************************************/
hardtail 0:caf66b280785 25
hardtail 0:caf66b280785 26 //USBSerial pc;
hardtail 0:caf66b280785 27
hardtail 0:caf66b280785 28 DigitalOut led[] =
hardtail 0:caf66b280785 29 {DigitalOut(LED1),
hardtail 0:caf66b280785 30 DigitalOut(LED2),
hardtail 0:caf66b280785 31 DigitalOut(LED3),
hardtail 0:caf66b280785 32 DigitalOut(LED4)};
hardtail 0:caf66b280785 33
hardtail 0:caf66b280785 34 DigitalOut myled(P0_25);
hardtail 0:caf66b280785 35
hardtail 0:caf66b280785 36 DigitalOut motorR[] = {DigitalOut(P0_0), DigitalOut(P0_1)};
hardtail 0:caf66b280785 37
hardtail 0:caf66b280785 38 DigitalOut motorL[] = {DigitalOut(P0_2), DigitalOut(P0_3)};
hardtail 0:caf66b280785 39
hardtail 0:caf66b280785 40 DigitalIn sensor[] = {
hardtail 0:caf66b280785 41 DigitalIn(P0_10),
hardtail 0:caf66b280785 42 DigitalIn(P0_11),
hardtail 0:caf66b280785 43 DigitalIn(P0_12),
hardtail 0:caf66b280785 44 DigitalIn(P0_13),
hardtail 0:caf66b280785 45 DigitalIn(P0_15)};
hardtail 0:caf66b280785 46
hardtail 0:caf66b280785 47 DigitalIn dip[] = {
hardtail 0:caf66b280785 48 DigitalIn(P0_9),
hardtail 0:caf66b280785 49 DigitalIn(P0_8),
hardtail 0:caf66b280785 50 DigitalIn(P0_7),
hardtail 0:caf66b280785 51 DigitalIn(P0_6)};
hardtail 0:caf66b280785 52
hardtail 0:caf66b280785 53 DigitalIn LineSensor[] = {DigitalIn(P0_17),DigitalIn(P0_15),DigitalIn(P0_20),DigitalIn(P0_23)};
hardtail 0:caf66b280785 54
hardtail 0:caf66b280785 55 ReceiverIR ir_rx(IRrecerver);
hardtail 0:caf66b280785 56 RemoteIR::Format format;
hardtail 0:caf66b280785 57
hardtail 0:caf66b280785 58 int IRswitch();
hardtail 0:caf66b280785 59 int IRstop();
hardtail 0:caf66b280785 60 void IRclear();
hardtail 0:caf66b280785 61
hardtail 0:caf66b280785 62 Ticker motorTest;
hardtail 0:caf66b280785 63 int mTestStatus = 0;
hardtail 0:caf66b280785 64
hardtail 0:caf66b280785 65 Timer modeCnt;
hardtail 0:caf66b280785 66 Timer startCnt;
hardtail 0:caf66b280785 67 Timer rollingCnt;
hardtail 0:caf66b280785 68
hardtail 0:caf66b280785 69 void go (int);
hardtail 0:caf66b280785 70 void flip();
hardtail 0:caf66b280785 71 void EnemySensWait(int);
hardtail 0:caf66b280785 72
hardtail 0:caf66b280785 73 int nowMode = 1;
hardtail 0:caf66b280785 74 int waitFlag = 0;
hardtail 0:caf66b280785 75 int fightingMode = 0;
hardtail 0:caf66b280785 76 int enemySensorEnble = 0;
hardtail 0:caf66b280785 77 int startFlag = 0;
hardtail 0:caf66b280785 78 int goFlag = 0;
hardtail 0:caf66b280785 79 int startSelect = 3;
hardtail 0:caf66b280785 80 int enemySensActive = 1;
hardtail 0:caf66b280785 81
hardtail 0:caf66b280785 82 int main() {
hardtail 0:caf66b280785 83 //motorTest.attach(&flip, 1.0);
hardtail 0:caf66b280785 84
hardtail 0:caf66b280785 85 for(int i=0; i< 5; i++) sensor[i].mode(PullUp);
hardtail 0:caf66b280785 86 for(int i=0; i< 4; i++) dip[i].mode(PullDown);
hardtail 0:caf66b280785 87
hardtail 0:caf66b280785 88 for(int i=0;i<4; i++)LineSensor[i].mode(PullUp);
hardtail 0:caf66b280785 89 LineSensor[2].mode(PullUp);
hardtail 0:caf66b280785 90
hardtail 0:caf66b280785 91 int stop = 1;
hardtail 0:caf66b280785 92
hardtail 0:caf66b280785 93 while(stop){
hardtail 0:caf66b280785 94 if(IRswitch() == Xbutton) stop = 0;
hardtail 0:caf66b280785 95 wait(0.05);
hardtail 0:caf66b280785 96 }
hardtail 0:caf66b280785 97
hardtail 0:caf66b280785 98 wait(5);
hardtail 0:caf66b280785 99
hardtail 0:caf66b280785 100 int start = 1;
hardtail 0:caf66b280785 101
hardtail 0:caf66b280785 102
hardtail 0:caf66b280785 103 while(start){
hardtail 0:caf66b280785 104
hardtail 0:caf66b280785 105 go(front);
hardtail 0:caf66b280785 106
hardtail 0:caf66b280785 107 //if(LineSensor[] == )
hardtail 0:caf66b280785 108
hardtail 0:caf66b280785 109 if(IRswitch() == powoer) start = 0;
hardtail 0:caf66b280785 110 }
hardtail 0:caf66b280785 111
hardtail 0:caf66b280785 112 while(1) {
hardtail 0:caf66b280785 113 //for(int i=0; i< 4; i++) led[i] = sensor[i];
hardtail 0:caf66b280785 114 for(int i=0; i< 4; i++) led[i] = LineSensor[i];
hardtail 0:caf66b280785 115 myled = LineSensor[0];
hardtail 0:caf66b280785 116 /*
hardtail 0:caf66b280785 117 for(int i=0; i< 4; i++) led[i] = dip[i];
hardtail 0:caf66b280785 118 myled = sensor[2];
hardtail 0:caf66b280785 119
hardtail 0:caf66b280785 120 if(dip[1]) go(front);
hardtail 0:caf66b280785 121 if(dip[2]) go(left);
hardtail 0:caf66b280785 122 if(dip[3]) go(right);
hardtail 0:caf66b280785 123 if(dip[1]==0 && dip[2]==0 && dip[3]==0) go(breaking);
hardtail 0:caf66b280785 124 */
hardtail 0:caf66b280785 125 wait(0.05);
hardtail 0:caf66b280785 126
hardtail 0:caf66b280785 127 }
hardtail 0:caf66b280785 128 }
hardtail 0:caf66b280785 129
hardtail 0:caf66b280785 130 int IRswitch(){
hardtail 0:caf66b280785 131 uint8_t buf[32];
hardtail 0:caf66b280785 132 int bitcount;
hardtail 0:caf66b280785 133 int res = 0;
hardtail 0:caf66b280785 134 int i;
hardtail 0:caf66b280785 135
hardtail 0:caf66b280785 136 res = 0;
hardtail 0:caf66b280785 137
hardtail 0:caf66b280785 138 if (ir_rx.getState() == ReceiverIR::Received) {
hardtail 0:caf66b280785 139 bitcount = ir_rx.getData(&format, buf, sizeof(buf) * 8);
hardtail 0:caf66b280785 140
hardtail 0:caf66b280785 141 //pc.printf("reserve : ");
hardtail 0:caf66b280785 142
hardtail 0:caf66b280785 143 if((bitcount > 30)){
hardtail 0:caf66b280785 144 #if 0
hardtail 0:caf66b280785 145 for(i=0;i<sizeof(buf);i++){
hardtail 0:caf66b280785 146 pc.printf("%x,",buf[i]);
hardtail 0:caf66b280785 147 }
hardtail 0:caf66b280785 148 #endif
hardtail 0:caf66b280785 149 //if(buf[1]==0x80) pc.printf("OK:");
hardtail 0:caf66b280785 150 if(buf[3]==0x24||buf[3]==0x12) {
hardtail 0:caf66b280785 151 //pc.printf("X\n");
hardtail 0:caf66b280785 152 res = Xbutton;
hardtail 0:caf66b280785 153 }
hardtail 0:caf66b280785 154 if(buf[3]==0x20||buf[3]==0x10) {
hardtail 0:caf66b280785 155 //pc.printf("powoer\n");
hardtail 0:caf66b280785 156 res = powoer;
hardtail 0:caf66b280785 157 }
hardtail 0:caf66b280785 158 if(buf[3]==0x30||buf[3]==0x18) {
hardtail 0:caf66b280785 159 //pc.printf("start\n");
hardtail 0:caf66b280785 160 res = startBTN;
hardtail 0:caf66b280785 161 }
hardtail 0:caf66b280785 162 if(buf[3]==0x50||buf[3]==0xa0) {
hardtail 0:caf66b280785 163 //pc.printf("win\n");
hardtail 0:caf66b280785 164 res = windows;
hardtail 0:caf66b280785 165 }
hardtail 0:caf66b280785 166 //pc.printf("\n");
hardtail 0:caf66b280785 167 }
hardtail 0:caf66b280785 168 }
hardtail 0:caf66b280785 169
hardtail 0:caf66b280785 170 return res;
hardtail 0:caf66b280785 171 }
hardtail 0:caf66b280785 172
hardtail 0:caf66b280785 173 void IRclear(){
hardtail 0:caf66b280785 174 uint8_t buf[32];
hardtail 0:caf66b280785 175
hardtail 0:caf66b280785 176 while (ir_rx.getState() == ReceiverIR::Received){
hardtail 0:caf66b280785 177 ir_rx.getData(&format, buf, sizeof(buf) * 8);
hardtail 0:caf66b280785 178 }
hardtail 0:caf66b280785 179 }
hardtail 0:caf66b280785 180
hardtail 0:caf66b280785 181 void go (int mode){
hardtail 0:caf66b280785 182 switch(mode){
hardtail 0:caf66b280785 183 case front:
hardtail 0:caf66b280785 184 motorR[0] = 0;
hardtail 0:caf66b280785 185 motorR[1] = 1;
hardtail 0:caf66b280785 186
hardtail 0:caf66b280785 187 motorL[0] = 0;
hardtail 0:caf66b280785 188 motorL[1] = 1;
hardtail 0:caf66b280785 189
hardtail 0:caf66b280785 190
hardtail 0:caf66b280785 191 break;
hardtail 0:caf66b280785 192
hardtail 0:caf66b280785 193 case back:
hardtail 0:caf66b280785 194 motorR[0] = 1;
hardtail 0:caf66b280785 195 motorR[1] = 0;
hardtail 0:caf66b280785 196
hardtail 0:caf66b280785 197 motorL[0] = 1;
hardtail 0:caf66b280785 198 motorL[1] = 0;
hardtail 0:caf66b280785 199 break;
hardtail 0:caf66b280785 200
hardtail 0:caf66b280785 201 case left:
hardtail 0:caf66b280785 202 motorR[0] = 0;
hardtail 0:caf66b280785 203 motorR[1] = 1;
hardtail 0:caf66b280785 204
hardtail 0:caf66b280785 205 motorL[0] = 1;
hardtail 0:caf66b280785 206 motorL[1] = 0;
hardtail 0:caf66b280785 207 break;
hardtail 0:caf66b280785 208
hardtail 0:caf66b280785 209 case right:
hardtail 0:caf66b280785 210 motorR[0] = 1;
hardtail 0:caf66b280785 211 motorR[1] = 0;
hardtail 0:caf66b280785 212
hardtail 0:caf66b280785 213 motorL[0] = 0;
hardtail 0:caf66b280785 214 motorL[1] = 1;
hardtail 0:caf66b280785 215 break;
hardtail 0:caf66b280785 216
hardtail 0:caf66b280785 217 case breaking:
hardtail 0:caf66b280785 218 motorR[0] = 1;
hardtail 0:caf66b280785 219 motorR[1] = 1;
hardtail 0:caf66b280785 220
hardtail 0:caf66b280785 221 motorL[0] = 1;
hardtail 0:caf66b280785 222 motorL[1] = 1;
hardtail 0:caf66b280785 223 break;
hardtail 0:caf66b280785 224 }
hardtail 0:caf66b280785 225 }
hardtail 0:caf66b280785 226
hardtail 0:caf66b280785 227 void flip(){
hardtail 0:caf66b280785 228 switch(mTestStatus){
hardtail 0:caf66b280785 229 case 0:
hardtail 0:caf66b280785 230 motorR[0] = 1;
hardtail 0:caf66b280785 231 motorR[1] = 1;
hardtail 0:caf66b280785 232
hardtail 0:caf66b280785 233 motorL[0] = 1;
hardtail 0:caf66b280785 234 motorL[1] = 1;
hardtail 0:caf66b280785 235 mTestStatus = 1;
hardtail 0:caf66b280785 236 break;
hardtail 0:caf66b280785 237 case 1:
hardtail 0:caf66b280785 238 motorR[0] = 1;
hardtail 0:caf66b280785 239 motorR[1] = 0;
hardtail 0:caf66b280785 240
hardtail 0:caf66b280785 241 motorL[0] = 0;
hardtail 0:caf66b280785 242 motorL[1] = 1;
hardtail 0:caf66b280785 243 mTestStatus = 2;
hardtail 0:caf66b280785 244 break;
hardtail 0:caf66b280785 245 case 2:
hardtail 0:caf66b280785 246 motorR[0] = 0;
hardtail 0:caf66b280785 247 motorR[1] = 1;
hardtail 0:caf66b280785 248
hardtail 0:caf66b280785 249 motorL[0] = 1;
hardtail 0:caf66b280785 250 motorL[1] = 0;
hardtail 0:caf66b280785 251 mTestStatus = 3;
hardtail 0:caf66b280785 252 break;
hardtail 0:caf66b280785 253 case 3:
hardtail 0:caf66b280785 254 motorR[0] = 0;
hardtail 0:caf66b280785 255 motorR[1] = 0;
hardtail 0:caf66b280785 256
hardtail 0:caf66b280785 257 motorL[0] = 0;
hardtail 0:caf66b280785 258 motorL[1] = 0;
hardtail 0:caf66b280785 259 mTestStatus = 0;
hardtail 0:caf66b280785 260 break;
hardtail 0:caf66b280785 261 }
hardtail 0:caf66b280785 262 }
hardtail 0:caf66b280785 263
hardtail 0:caf66b280785 264 void EnemySensWait(int rollTime){
hardtail 0:caf66b280785 265 rollingCnt.reset();
hardtail 0:caf66b280785 266 rollingCnt.start();
hardtail 0:caf66b280785 267 while(sensor[2] == 1 && rollingCnt.read_ms() < rollTime);
hardtail 0:caf66b280785 268 rollingCnt.stop();
hardtail 0:caf66b280785 269 }