2017ロボコンはやとブーメランプログラム
Dependencies: PID QEI ikarashiMDC recieveController omni
main.cpp
- Committer:
- WAT34
- Date:
- 2017-11-22
- Revision:
- 24:050d78bb5b69
- Parent:
- 18:4b629221c215
- Child:
- 25:fd4fb86b4148
File content as of revision 24:050d78bb5b69:
#include "mbed.h" #include "hayatoBoomerang.h" #include "recieveController.h" #include "omni.h" #include "gakugaku.h" Serial rs485(PC_10,PC_11,38400); Serial serial(USBTX,USBRX); Serial esp(PA_9,PA_10,115200); Serial spiral(PA_0,PA_1,38400); PwmOut led(LED1); DigitalIn button(BUTTON1); boomerang boom(&rs485,&spiral); gakugaku fishingPole(&spiral); Ticker debugesp,ticker; recieveController con(PC_12,PD_2,198); BusIn modeChange(PA_4,PB_0,PC_2,PC_1); BusOut modeStatus(NC,NC,NC,NC); BusOut angleState(NC,NC,NC); double angle = 10; void update() { boom.update(); fishingPole.update(); } void init() { button.mode(PullUp); serial.baud(115200); //boom.calibrateArm(); boom.setTargetMotorSpeed(0); } void debugout() { esp.printf("angle:%f\n",angle); } int main() { init(); double turnRate = 0; double flywheelspeed; double angling; bool prevAnglechange = false,prevSwing=false; char data[20],*data2,*data3; modeChange.mode(PullUp); if((15-modeChange.read())%3 == 0) flywheelspeed =13000; else if(((15-modeChange.read())%3) == 1) flywheelspeed =13000*3.0/4.0; else if(((15-modeChange.read())%3) == 2) flywheelspeed = 13000*2.0/3.0; //debugesp.attach(&debugout,3); // commThread.start(&comm); while(true) { modeStatus = 15-modeChange.read(); if((con.buttons[0] >>7)%2 ) { boom.fire(); } if((con.buttons[0] >>8)%2) boom.setTargetMotorSpeed(flywheelspeed); else boom.setTargetMotorSpeed(0); if((con.buttons[0]>>3)%2) //square angle = 80; if((con.buttons[0]>>4)%2) //cross angle = 45; if((con.buttons[0]>>5)%2) //circle angle = 25; if((con.buttons[0]>>6)%2) //triangle angle = 10; if((con.buttons[0]>>13)%2 ) { if(!prevSwing) fishingPole.toggleSwing(); prevSwing = true; }else{ prevSwing = false; } if(con.buttons[3] < 117 ) { if(!prevAnglechange) angle += 2.5; prevAnglechange =true; }else if(con.buttons[3] > 137) { if(!prevAnglechange) angle -= 2.5; prevAnglechange =true; }else{ prevAnglechange =false; } if(angle < 5){ angle = 5; } if(angle > 90 ){ angle = 90; } if((con.buttons[0] >> 9)%2) turnRate =-.2; //turn at .2 power else if((con.buttons[0] >> 10)%2) turnRate = .2; else turnRate = 0; if((con.buttons[0]>>14%2)) angling = -0.4; else if((con.buttons[0])%2) angling = 0.2; else angling = 0; fishingPole.setAnglingSpeed(angling); if((con.buttons[0]>>15)%2) fishingPole.Deploy(); update(); boom.setTargetArmAngle(angle); angleState = int(angle/90.0*7); led = boom.beltSpeed; boom.move(con.buttons[1],con.buttons[2],turnRate); serial.printf("controller:%d\n\r",con.buttons[0]); con.update(); } }