Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: userTask.cpp
- Revision:
- 30:13ada1a24c59
- Parent:
- 29:eb3d72dd94aa
- Child:
- 31:56c554c560c1
--- a/userTask.cpp Mon Dec 17 13:25:00 2018 +0000
+++ b/userTask.cpp Tue Dec 18 11:57:37 2018 +0000
@@ -70,6 +70,7 @@
bool bDoCtrlAtt;
bool bDoCtrlMot;
+ INT16 tmpRpm, difRpm;
//
while(1){
led1=!led1;
@@ -168,37 +169,92 @@
break;
case IDLE:
//SWのチェック
- //離陸ボタン押下
- //とりあえず、YawCtrlで代用
- //if(hb.chkSWUserOpe(HbUserOpe::YAW_CTRL))
- //{
- // // TODO IMU Cal
- // hb.calAtt();
- // setState(TAKE_OFF);
- //}
- //if(hb.chkSWUserOpeRE(HbUserOpe::F_L)){
- if(hb.chkSWUserOpe(HbUserOpe::F_L)){
// Front Left
- //hb.addMotOfs(HbUserOpe::F_L);
- gf_MtReqOP[0].req=true; gf_MtReqOP[0].add_end=false; gf_MtReqOP[0].counter = 0; gf_MtReqOP[0].num = 20;
- gf_MtReqOP[0].addVal = 0;
+ if(hb.chkSWUserOpeRE(HbUserOpe::BRK_L)){
+ gf_MtReqOP[0].req=true;
+ tmpRpm = hb.getCurMotVal(F_L);
+ if(tmpRpm < 6000){
+ hb.setMotVal(F_L, 6000);
+ }
+ } else if(hb.chkSWUserOpe(HbUserOpe::BRK_L)){
+ if(gf_MtReqOP[0].req==true){
+ hb.setMotVal(F_L, 6000);
+ }
+ } else if(!hb.chkSWUserOpe(HbUserOpe::BRK_L)){
+ if(gf_MtReqOP[0].req){
+ tmpRpm = hb.getCurMotVal(F_L);
+ if(tmpRpm == 0){
+ init1PushStruct(gf_MtReqOP[0]);
+ }else if(tmpRpm > 1000){
+ tmpRpm-=100;
+ } else if(tmpRpm >= 100){
+ tmpRpm-=50;
+ } else if(tmpRpm > 0){
+ tmpRpm-=10;
+ if(tmpRpm < 0) tmpRpm = 0;
+ } else if(tmpRpm < -1000){
+ tmpRpm+=100;
+ } else if(tmpRpm <= -100){
+ tmpRpm+=50;
+ }else if(tmpRpm < 0){
+ tmpRpm+=10;
+ if(tmpRpm > 0) tmpRpm = 0;
+ }
+ hb.setMotVal(F_L, tmpRpm);
+ }
}
- //if(hb.chkSWUserOpeRE(HbUserOpe::F_R)){
- if(hb.chkSWUserOpe(HbUserOpe::F_R)){
- // Front Right
- //hb.addMotOfs(HbUserOpe::F_R);
- gf_MtReqOP[1].req=true; gf_MtReqOP[1].add_end=false; gf_MtReqOP[1].counter = 0; gf_MtReqOP[1].num = 20;
- gf_MtReqOP[1].addVal = 0;
+
+ if(hb.chkSWUserOpeRE(HbUserOpe::BRK_R)){
+ gf_MtReqOP[1].req=true;
+ tmpRpm = hb.getCurMotVal(F_R);
+ if(tmpRpm < 6000){
+ hb.setMotVal(F_R, 6000);
+ }
+ } else if(hb.chkSWUserOpe(HbUserOpe::BRK_R)){
+ if(gf_MtReqOP[1].req==true){
+ hb.setMotVal(F_R, 6000);
+ }
+ } else if(!hb.chkSWUserOpe(HbUserOpe::BRK_R)){
+ if(gf_MtReqOP[1].req){
+ tmpRpm = hb.getCurMotVal(F_R);
+ if(tmpRpm == 0){
+ init1PushStruct(gf_MtReqOP[1]);
+ }else if(tmpRpm > 1000){
+ tmpRpm-=100;
+ } else if(tmpRpm >= 100){
+ tmpRpm-=50;
+ } else if(tmpRpm > 0){
+ tmpRpm-=10;
+ if(tmpRpm < 0) tmpRpm = 0;
+ } else if(tmpRpm < -1000){
+ tmpRpm+=100;
+ } else if(tmpRpm <= -100){
+ tmpRpm+=50;
+ }else if(tmpRpm < 0){
+ tmpRpm+=10;
+ if(tmpRpm > 0) tmpRpm = 0;
+ }
+ hb.setMotVal(F_R, tmpRpm);
+ }
}
- if(hb.chkSWUserOpe(HbUserOpe::R_L)){
- // Rear Left
- //hb.addMotOfs(HbUserOpe::R_L);
- }
- if(hb.chkSWUserOpe(HbUserOpe::R_R)){
- // Rear Right
- //hb.addMotOfs(HbUserOpe::R_R);
- }
- if(hb.chkSWUserOpeRE(HbUserOpe::EMG_STOP)){
+
+
+ // //if(hb.chkSWUserOpeRE(HbUserOpe::F_R)){
+ // if(hb.chkSWUserOpe(HbUserOpe::BRK_R)){
+ // // Front Right
+ // //hb.addMotOfs(HbUserOpe::F_R);
+ // // gf_MtReqOP[1].req=true; gf_MtReqOP[1].add_end=false; gf_MtReqOP[1].counter = 0; gf_MtReqOP[1].num = 20;
+ // // gf_MtReqOP[1].addVal = 0;
+ // }
+ // if(hb.chkSWUserOpe(HbUserOpe::R_1)){
+ // // Rear Left
+ // //hb.addMotOfs(HbUserOpe::R_L);
+ // }
+ // if(hb.chkSWUserOpe(HbUserOpe::R_2)){
+ // // Rear Right
+ // //hb.addMotOfs(HbUserOpe::R_R);
+ // }
+ if(hb.chkSWUserOpeRE(HbUserOpe::MOT_STOP)){
// EMG STOP だが、テスト用のため、モーターのオフセットを0にして回転を止める
//sp.printf("RisingEdge!\r\n");
for(int i = 0; i < 4; ++i){
@@ -213,9 +269,9 @@
//{
// setState(SLEEP);
//}
- //if(hb.chkSWUserOpeAny()){
- // sp.printf("SW :[%X]\r\n",hb.getUserSw());
- //}
+ // if(hb.chkSWUserOpeAny()){
+ // sp.printf("SW :[%X]\r\n",hb.getUserSw());
+ // }
bDoCtrlMot = true;
break;
case TAKE_OFF: