[[2014b/Member]] コップをつかむプログラム /* モーターAがハサミ、モーターBが腕、モーターCが蓋 */ #define HOLD OnFwdReg(OUT_A,-40,OUT_REGMODE_IDLE); //コップを挟む task main() { HOLD; //掴む Wait(500); //ちょっと待つ Off(OUT_A); //モーターAを切る(※) Wait(500); PlaySound(SOUND_UP); Wait(100); PlaySound(SOUND_UP); Wait(100); } ※ OnFwdRegでスピードをOUT_REGMODE_IDLEとしたところ、なぜかプログラム終了時にモーターが少し逆回転してハサミが勝手に開いてしまったため、この文を加えた。 コップを離すプログラム /* モーターAがハサミ、モーターBが腕、モーターCが蓋 */ #define RELEASE RotateMotor(OUT_A,50,50); //コップをはなす task main() { ResetTachoCount(OUT_AB); //モーターABの回転角をリセット RELEASE; //コップを放す Wait(300); PlaySound(SOUND_DOWN); Wait(100); PlaySound(SOUND_DOWN); Wait(100); } 持ち上げてボールを移すプログラム /* モーターAがハサミ、モーターBが腕、モーターCが蓋 */ #define HOLD OnFwdReg(OUT_A,-40,OUT_REGMODE_IDLE); //コップを挟む #define UP_MAX RotateMotor(OUT_B,-80,185);OnFwdReg(OUT_B,0,OUT_REGMODE_IDLE); //コップを持ち上げてそのままキープ #define CLOSE RotateMotor(OUT_C,50,-120); //蓋を閉める task main() { ResetTachoCount(OUT_ABC); //モーターABCの回転角をリセット /*コップを掴んで蓋をする*/ HOLD; //掴む Wait(1000); CLOSE; //蓋をする Wait(1000); /*180度持ち上げて静止*/ UP_MAX; //もちあげる Wait(500); /*音で作業の終了を伝える*/ PlaySound(SOUND_FAST_UP); Wait(300); PlaySound(SOUND_FAST_UP); Wait(300); Off(OUT_A); //モーターAを切る(※) } フタを開き、玉を落とすプログラム /* モーターAがハサミ、モーターBが腕、モーターCが蓋 */ #define OPEN RotateMotor(OUT_C,50,120); //蓋を開ける task main() { ResetTachoCount(OUT_ABC); //モーターABCの回転角をリセット /*玉を移す*/ OPEN; //蓋を開ける PlaySound(SOUND_FAST_UP); Wait(100); PlaySound(SOUND_FAST_UP); Wait(100); } コップを下ろすプログラム /* モーターAがハサミ、モーターBが腕、モーターCが蓋 */ #define DOWN RotateMotor(OUT_B,45,185); //腕を下げる task main() { ResetTachoCount(OUT_ABC); //モーターABCの回転角をリセット /*コップをおろす*/ DOWN; Wait(300); /*音で作業の終了を伝える*/ PlaySound(SOUND_UP); Wait(100); PlaySound(SOUND_UP); Wait(100); }