手動bのほぼ全部
Dependents: kobayashi_rei 2019BSyudo Bsyudo 2019Bsyudo
Diff: states.cpp
- Revision:
- 6:3cb78320d4db
- Parent:
- 4:eafd5a0c3351
- Child:
- 8:8ff6db217a17
--- a/states.cpp Mon Sep 09 04:48:16 2019 +0000 +++ b/states.cpp Fri Sep 13 03:01:12 2019 +0000 @@ -5,7 +5,6 @@ pad(padTX,padRX), gyro(GYROTX,GYRORX), serial(MDTX,MDRX,MDBAUD), - omni(&serial), emStop(STOP), mechanism(&serial) { @@ -15,7 +14,6 @@ anglePID.setSetPoint(0.0); anglePID.setBias(0.0); state = 400; - check = 0; emStop = false; } @@ -29,29 +27,28 @@ } void States::tellPad(){ - for(int i=0; i<13; i++){ + for(int i=0; i<12; i++){ b[i] = pad.getButton(i); b3[i] = b2[i] - b[i]; - b2[i] = b[i]; - check += b[i]; + b2[i] = b[i]; } for(int i=0; i<4; i++) stick[i] = pad.getStick(i); - stick[1] = 255-stick[1]; - stick[3] = 255-stick[3]; - norm[0] = hypot(stick[0],stick[1]); - norm[1] = hypot(stick[2],stick[3]); + stick[0] -= 128; + stick[1] = 128-stick[1]; + stick[2] -= 128; + stick[3] = 128-stick[3]; + norm[0] = hypotf(stick[0],stick[1]); + norm[1] = hypotf(stick[2],stick[3]); if(norm[0] > 20) norm[0] = 0; if(norm[1] > 20) norm[1] = 0; for(int i=0; i<2; i++) trigger[i] = pad.getTrigger(i); - omni.setBrake(trigger[0]); - nano.sendTrigger(trigger[0]); + mechanism.setBrake(trigger[0]); + mechanism.getTrigger(trigger[1]); - rad[0] = atan2(stick[1],stick[0]) + (nowAngle * (PI / 180)); - rad[1] = atan2(stick[2],stick[3]); - if(b3[4] == 1) state++; - if(b3[5] == 1) state--; + if(b3[5] == 1) state++; + if(b3[4] == 1) state--; /* - *move.tellState(方角)でロボの方角 + *ロボの方角 * "front" or 0 で前 * "right" or 90 で右 * "back" or 180 で後ろ @@ -63,38 +60,38 @@ case 3: idealAngle = left; break; default: idealAngle = front; break; } - /*昇降機構*/ - if(b[0] && check == 1) mechanism.up(); - else if(b[1] && check == 1) mechanism.down(); - /*回収機構*/ - else if(b[6] && check == 1) mechanism.collect(); - /*つり上げ機構*/ - else if(b[7] && check == 1) mechanism.lift(); - /*装填機構*/ - else if(b[2] && check == 1) mechanism.loadRight(); - else if(b[3]) mechanism.loadLeft(); - /*かけ機構*/ - else if(b[9] && check == 1) mechanism.hookRight(); - else if(b[8] && check == 1) mechanism.hookLeft(); - - else nano.sendMove(0x0f); } void States::move() { - tellPad(); - if(b[10]) emStop = true; - if(b[11]) emStop = false; - nano.sendHeader(); - if(emStop == false)nano.sendMove(0xff); - else if(!pad.status){ - /*omni.stop()は止める*/ - omni.stop(); - emStop = false; - }else{ + while(1){ + tellPad(); tellAngle(); - turnPower = anglePID.compute(); - if(norm[0] && norm[0] < 200) omni.stop(); - else omni.move(stick[0], stick[1], -turnPower); + if(b[10]) emStop = true; + if(b[11]) emStop = false; + if(!pad.status){ + /*mechanism.stop()は止める*/ + mechanism.stop(); + emStop = false; + }else{ + turnPower = anglePID.compute(); + if(norm[0] && norm[0] < 100) mechanism.move(0,0,-turnPower); + else mechanism.move(stick[0], stick[1], -turnPower); + /*昇降機構*/ + if(b[0]) {mechanism.up();} + else if(b[1]) {mechanism.down();} + /*回収機構*/ + else if(b[6]) {mechanism.collect();} + /*つり上げ機構*/ + else if(b[7]) {mechanism.lift();} + /*装填機構*/ + else if(b[2]) {mechanism.loadRight();} + else if(b[3]) {mechanism.loadLeft();} + /*かけ機構*/ + else if(b[9]) {mechanism.hookRight();} + else if(b[8]) {mechanism.hookLeft();} + + else mechanism.noAct(); + } } } \ No newline at end of file