在程式中以一個變數 walk 來指定機器人行走距離, 單位為公分. 程式環境使用 leJOS
本範例重點在於將移動距離根據輪徑(5.6 cm) 轉換為馬達轉動角度, 使用 Motor.B.rotate(角度) 指令. 由於該指令屬於閉區間指令, 所以
Motor.B.rotate(180);
Motor.C.rotate(180);
會讓B馬達轉完180度之後再換C馬達旋轉180度, 機器人無法直走. 所以本範例透過兩個執行緒t1, t2分別執行 Motor.X.rotate指令, 這樣就可以讓機器人順利移動指定角度了
CAVE的 leJOS實驗室: http://lab.cavedu.com/lejos
淡江機器人Java教學網: lejosrobot2012.cavedu.com
===========================================
import lejos.nxt.*;
import lejos.util.Delay;
class walk
{
public static void main(String arg[])
{
final double angle;
double walk=10;
int speed=360;
Thread t1,t2;
Runnable runR,runL;
Button.ESCAPE.addButtonListener(new ButtonListener()
{
public void buttonPressed(Button b){System.exit(0);}
public void buttonReleased(Button b){}
});
angle=(walk/(5.6d*Math.PI))*360d;
runR=new Runnable() {
public void run() {
Motor.B.rotate((int)angle);
}
};
runL=new Runnable() {
public void run() {
Motor.C.rotate((int)angle);
}
};
t1=new Thread(runR);
t2=new Thread(runL);
t1.start();
t2.start();
}//main
}//class