我无法让我的机器人用RobotC控制我的Mindstorms NXT机器人。我希望我的机器人能够在桌子上向前移动,当到达桌子尽头时,面朝下的超声波传感器将通过查看地面有多远来确定它是否在边缘。当超声波传感器发现它在边缘时,机器人会从边缘向后移动,转过身,然后朝另一条路走。
下面是我的代码:
#pragma config(Sensor, S1, , sensorSONAR)
//*automatically generated by 'ROBOTC' configuration wizard *//
task main()
{
int Ultrasonic;
Ultrasonic = SensorValue[S1];
while (true)
{
if (Ultrasonic >10)
{
motor[motorB] = -100;
motor[motorC] = -100;
wait1Msec(2000);
motor[motorB] = 100;
wait1Msec(2000);
}
if (Ultrasonic <= 10)
{
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(5000);
}
}
}发布于 2014-02-27 11:33:22
这个程序的问题是,你实际上只从超声波传感器读取一次。下面是当你运行你的程序时发生的事情:
Ultrasonic,并为其赋值。..。
要解决这个问题,您需要做的就是将超声波传感器的读数移动到while循环中,以便NXT不断检查传感器的值。以下是修改后的版本:
task main()
{
int Ultrasonic;
while (true)
{
Ultrasonic = SensorValue[S1];
if (Ultrasonic > 10)
{
// ... Do stuff here...
}
if (Ultrasonic <= 10)
{
// ... Do more stuff here...
}
}
}实际上,您可以通过使用"if... else...“来组合对超声波传感器的值的检查,从而使这段代码更加”干净“。语句。这将检查一个值,然后根据该值是否为真做出决定。只需用else替换if (Ultrasonic <= 10)行即可。
https://stackoverflow.com/questions/21211025
复制相似问题