我正在为 Lego NXT 编写一个使用RobotC的程序来模仿小狗的行为。这段代码应该是旋转连接到电机端口 3 的磁头并读取超声波传感器上的值。如果在转动头部的同时,狗被召唤,它会转向它已经面对的方向。当超声波传感器读取到一个值(意味着机器人已经接近墙壁)时,会调用以下函数:
可见的
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])第一次旋转时,错误 0002EA Type2 出现在 NXT 屏幕上。起初我们认为这是因为我们过度旋转电机导致它被阻塞,所以我们试图玩弄等待时间,但没有任何区别。
任何有关导致此错误的原因或如何解决此错误的想法将不胜感激。
谢谢, 多米尼克