我写一个使用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