![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Main Program
Dependencies: mbed AQM1602 HMC6352 PID
main_processing/setup_command_active/setup.cpp
- Committer:
- lilac0112_1
- Date:
- 2016-02-01
- Revision:
- 28:8ac6c3c1e643
- Parent:
- 27:769cb5a7ea37
- Child:
- 29:b413b0bb07a1
File content as of revision 28:8ac6c3c1e643:
#include "mbed.h" #include "extern.h" void SetUp(void){//電源を入れた時の処理 //int i=1; //sw&lcd Sw[0].mode(PullUp); Sw[1].mode(PullUp); Sw[2].mode(PullUp); Sw[3].mode(PullUp); Sw_ticker.attach(Sw_sample, 0.050); Lcd.cls(); Lcd.print(lcdstr[0][0]); //ball BallChecker.mode(PullUp); //value data.strategy = 0; data.motorlog[X_AXIS] = 0; data.motorlog[Y_AXIS] = 0; data.s_pow=20; data.l_pow=30; //spi spi.format(16, 3); spi.frequency(1000000); spi_ss[0]=spi_ss[1]=spi_ss[2]=spi_ss[3]=1; //motor motor.baud(115200); //ボーレート設定 motor.printf("1F0002F0003F0004F000\r\n"); //モータ停止 //motor.attach(&tx_motor,Serial::TxIrq); //送信空き割り込み(モータ用) for(int i=0; i<5; i++){ ReadCmps(); data.CmpsInitialValue = data.cmps; wait_ms(10); } data.CmpsDiff = REFERENCE - data.cmps; data.FrontDeg=0; pid.setInputLimits(MINIMUM,MAXIMUM); //pid sed def pid.setOutputLimits(-OUT_LIMIT, OUT_LIMIT); //pid sed def pid.setBias(PID_BIAS); //pid sed def pid.setMode(AUTO_MODE); //pid sed def pid.setSetPoint(REFERENCE); //pid sed def //pidupdate.attach(&PidUpdate, PID_CYCLE); } void SetUp2(void){//スタートした時の処理 data.motorlog[X_AXIS] = 0; data.motorlog[Y_AXIS] = 0; for(int i=0; i<5; i++){ ReadCmps(); data.CmpsInitialValue = data.cmps; wait_ms(10); } data.CmpsDiff = REFERENCE - data.cmps; data.FrontDeg=0; Line_ticker.attach(&ReadLine, 0.005); Solenoid_ticker.attach(&AvailableSolenoid, 6.0); Ir_ticker.attach(&ValidIr, 0.050); //motor.attach(&tx_motor,Serial::TxIrq); //送信空き割り込み(モータ用) Motor_ticker.attach(&ValidTx_motor, 0.020); pidupdate.attach(&ValidPidUpdate, PID_CYCLE); data.motorlog[X_AXIS]=0; data.motorlog[Y_AXIS]=0; } void StopProcess(void){//コマンドに戻るときの処理 pidupdate.detach(); Motor_ticker.detach(); Line_ticker.detach(); Solenoid_ticker.detach(); Ir_ticker.detach(); DriveSolenoid(); motor.printf("1F0002F0003F0004F000\r\n"); //モータ停止 move(0,0,0); data.OutputPID=0; data.InputPID=REFERENCE; }