おためしらいぶらり Q-rover-Kaiを50行以内で動かすという強い気持ち 使用非推奨 動作未確認 単純なPWM動作のライブラリ化実験用
Diff: QMotor.cpp
- Revision:
- 0:48d84c228105
diff -r 000000000000 -r 48d84c228105 QMotor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QMotor.cpp Wed Dec 06 07:07:32 2017 +0000 @@ -0,0 +1,166 @@ +#include "mbed.h" +#include "QMotor.h" + +QMotor::QMotor(PinName R1,PinName R2,PinName L1,PinName L2):_R1(R1),_R2(R2),_L1(L1),_L2(L2){ + _R1=0.0;//R1を初期化 + _R2=0.0;//R2を初期化 + _L1=0.0;//L1を初期化 + _L2=0.0;//L2を初期化 + +} + +void QMotor::Front1(){ //直進部 + _R1=1.0; + _R2=0.0; + _L1=1.0; + _L2=0.0; + wait(25.000); + + _R1=1.0; + _R2=1.0; + _L1=1.0; + _L2=1.0; + wait(0.200); + _R1=0.0; + _R2=0.0; + _L1=0.0; + _L2=0.0; +} + +void QMotor::Front2(){ //直進部 + _R1=0.5; + _R2=0.0; + _L1=0.5; + _L2=0.0; + wait(5.000); + + _R1=1.0; + _R2=1.0; + _L1=1.0; + _L2=1.0; + wait(0.200); + _R1=0.0; + _R2=0.0; + _L1=0.0; + _L2=0.0; +} +void QMotor::Right1(float an,float san){ //第一while関数右折部 + //sdprint(" an="); + //sdprint(an); + //sdprint(" R1 "); + //xbee.printf("COMMAND:Right1\n"); + _R1=1.0; + _R2=0.0; + wait(-an*san); + + _R1=1.0; + _R2=1.0; + wait(0.200); + _R1=0.0; + _R2=0.0; + } + + void QMotor::Right2(float an,float san){ //第二while関数右折部 + //sdprint(" an="); + //sdprint(an); + //sdprint(" R2 "); + //xbee.printf("COMMAND:Right2\n"); + //analogWrite(5,76.5);//Lモーターを30%出力で回転 + _R1=1.0; + _R2=0.0; + wait(-an*san); + + _R1=1.0; + _R2=1.0; + wait(0.200); + _R1=0.0; + _R2=0.0; + } + + + void QMotor::Left1(float an,float san){ //第一while関数左折部 + //sdprint(" an="); + //sdprint(an); + //sdprint(" L1 "); + //xbee.printf("COMMAND:Left1\n"); + _L1=1.0; + _L2=0.0; + wait(an*san); + + _L1=1.0; + _L2=1.0; + wait(0.200); + _L1=0.0; + _L2=0.0; + } + + void QMotor::Left2(float an,float san){ //第二while関数左折部 + //sdprint(" an="); + //sdprint(an); + //sdprint(" L2 "); + //xbee.printf("COMMAND:Left2\n"); + //analogWrite(6,76.5);//Rモーターを30%出力で回転 + _L1=1.0; + _L2=0.0; + wait(an*san); + + _L1=1.0; + _L2=1.0; + wait(0.200); + _L1=0.0; + _L2=0.0; + } + +void QMotor::Reverse(){ //姿勢回復機動 + _R1=0.0; + _R2=1.0; + _L1=0.0; + _L2=1.0; + wait(15.000); + _R1=1.0; + _R2=0.0; + _L1=1.0; + _L2=0.0; + wait(5.000); + _R1=0.0; + _R2=0.0; + _L1=0.0; + _L2=0.0; +} + +void QMotor::Stack(){ //スタック回避挙動 + _R1=1.0; + _R2=0.0; + _L1=0.0; + _L2=1.0; + wait(5.000); + + _R1=1.0; + _R2=1.0; + _L1=1.0; + _L2=1.0; + wait(5.000); + _L1=0.0; + _L2=0.0; + _R1=0.0; + _R2=0.0; + } + + void QMotor::Fred(){ //冗長系測角用直進部 + _R1=1.0; + _R2=0.0; + _L1=1.0; + _L2=0.0; + wait(10.000); + + _R1=1.0; + _R2=1.0; + _L1=1.0; + _L2=1.0; + wait(0.200); + _R1=0.0; + _R2=0.0; + _L1=0.0; + _L2=0.0; + } + \ No newline at end of file