要學會NXC的關鍵之一就是弄懂各個指令的用途。在這裡列出一些常用指令之用法及使用時該注意的事項,希望常用或是想學 NXC 的朋友們可以從本文快速地得到一些資訊。
今天先介紹一些常用的輸出(Output)指令:
1.啟動馬達: OnFwd(輸出端, 電力);
例:OnFwd(OUT_A,75);、OnFwd(OUT_AB,75);
注意:若是沒有Off(port); 指令,馬達是不會停下來的,除非程式結束。
注意:power 可輸入負值,負號代表反轉。
2.啟動馬達並設定運轉模式:OnFwdReg(輸出端, 電力, 規範模式);
例:OnFwdReg(OUT_A, 75, OUT_REGMODE_SPEED);
注意:上面的範例為定轉速模式,當馬達運轉遇到阻力時,會加大電力以維持所設定之轉速
注意:第一點所提到的OnFwd()為無控制模式,
3.啟動兩顆馬達並使其同步:OnFwdSync(輸出端, 電力, 轉彎百分比);
例:OnFwdSync(OUT_AB,75,0);
注意:沒有兩顆馬達生下來是一樣的,就算在全速運轉時,轉速也不一定相同,就像兩個人全力奔跑也很難跑得一樣快的道理是一樣的。同步可以讓兩顆馬達互相知道對方的狀態,可以用來走直線或轉彎。
注意:0 是直走、 50 是以某輪為圓心旋轉、 100則是原地旋轉。
注意:同步一顆馬達沒有意義,若只有一顆馬達請用定轉速模式。
4.讓馬達旋轉一個角度: RotateMotor(輸出端, 角度);
例:RotateMotor(OUT_A,1080);
5.馬達負載:MotorOverload(輸出端); 若馬達有遇到阻力,回傳1,若沒有則是0。
例:
task main()
{
OnFwdReg(OUT_A, 75, OUT_REGMODE_SPEED);
until(MotorOverload(OUT_A)==1);
Off(OUT_A);
}//馬達以75電力旋轉,遇到阻力停止
注意:關於MotorOverload的原理之後會再發文討論。現在要先注意的是用法,MotorOverload必須要搭配定轉速模式使用,因為在定轉速模式時,馬達所轉的角度會回傳給NXT分析,才有辦法知道馬達是否有遇到阻力。若是使用無控制模式(例如OnFwd),本指令就不會發揮作用。
關於Output的指令就先介紹到這裡囉~有任何問題都歡迎留言一起討論。"機器人新視界 NXT與NXC"第二版即將上市,對於各種指令會有更詳細的介紹,敬請期待!
很仔細的說明!
你們的部落格沒有『留言版』的連結,只有『我要留言』的字樣,沒有辦法看到留言的回覆?
期待新版書籍上市!
[版主回覆01/30/2010 13:50:36]
haha, 謝謝探奇. 我來改一下版面.
和初版一樣, 應該是3月上市. 一年改一次版的頻率應該是OK的. 一次動工三本書真不是一件容易的事呢, 加油加油