我寫一個使用RobotC的樂高NXT模仿小狗的行爲的程序。這部分代碼應該旋轉連接到電機端口3的磁頭並讀取超聲波傳感器上的值。如果頭部轉動時,狗叫,它會轉向它已經面臨的方向。當超聲波傳感器讀取的值(意味着機器人已接近一個壁)下面的函數被調用:樂高NXT轉動電機返回錯誤0002EA 2型
可見
void SonarSensor()
{
int sensorValleft;
int sensorValright;
bool alreadyTurned = false;
int i,j;
i = 0;
j = 0;
motor[1] = 0;
motor[2] = 0;
motor[3] = -SPEED/2;
wait10Msec(15);
motor[3] = 0;
sensorValleft = SensorValue[3];
while(i<100)
{
if(SensorValue[4] > 40)//calibrate sound sensor
{
//turn left
motor[1]=SPEED;
motor[2] = -SPEED;
wait10Msec(25);
i = 1000;
j = 1000;
alreadyTurned = true;
}
else
{
i++;
wait1Msec(5);
}
}
motor[3] = SPEED/2;
wait10Msec(30);
motor[3] = 0;
sensorValright = SensorValue[3];
while(j<100)
{
if(SensorValue[3] > 1)//calibrate sound sensor
{
//turn right
motor[1]-=SPEED;
motor[2] = SPEED;
wait10Msec(25);
j = 1000;
alreadyTurned = true;
}
else
{
j++;
wait1Msec(5);
}
}
if(alreadyTurned == false)
{
if(sensorValleft > sensorValright)
{
//turn left
motor[1]=SPEED;
motor[2] = -SPEED;
wait10Msec(25);
}
else
{
//turn right
motor[1]=-SPEED;
motor[2] = SPEED;
wait10Msec(25);
}
}
}可見
當頭部(馬達[3] )在NXT屏幕上第一次出現錯誤0002EA Type2時旋轉。起初我們認爲是因爲我們過度旋轉馬達導致馬達受阻,所以我們試圖在等待時間中玩耍,但沒有任何區別。
什麼原因導致此錯誤或如何解決它的任何想法,將不勝感激。
感謝, 多米尼克
我不認爲你的錯誤與電機運動有關,而是我們認爲你應該是'SensorValue [S3]'的設置'sensorValleft'的語句,除非你在另一個存儲函數中輪詢你的傳感器數組中的各種傳感器值。 – 2013-03-25 13:14:55
您可以使用其S1,S2,S3或S4值或其數值(0-3)訪問SensorValue陣列。這不是問題 – Dominique 2013-03-25 15:47:12