所以我和我的搭档需要一些帮助,我们正在做一个最后的项目,这是一个电子工程学位。我们的问题是,在课堂上没有人真正懂得编程。我们需要帮助或一些关于如何编程的一般性想法。
该项目:
我们有一辆装有红外(红外)传感器的怪物卡车,通过电压探测到它的路径。与此,我们正在使用一个自由规模的电路板作为“大脑”,连同这一点,我们有一个书呆子“导弹炮塔”通过开放的门(我们需要做编程,以注意一个压降从红外传感器。
方案编制:
我们正在非常非常努力地努力为这个创建代码--
我知道这是一个很大的要求,但我们有很大的需要帮助,我们的老师虽然聪明超过他的年龄在一切电气(让我想起医生从回到未来)c编程是缺乏和没有太多的知识在这里有大量的知识使用C编程技能。最后,一旦我们得到这项工作(5月中旬),我将张贴视频,如果可以的话,并向大家展示。我感谢您对此的任何意见和建议,谢谢大家的宝贵时间!
发布于 2009-04-07 00:20:23
您的代码可能如下所示:
// Give yourself some time to set the robot down
<sleep_for_some_interval>;
// Keep reading the sensors and reacting until
// some amount of time passes, or a button is pressed, etc.
while(<keep_running_condition>)
{
// Update sensor readings
int leftDist = <ConvertToDistance>(<read_left_voltage>);
int rightDist = <ConvertToDistance(<read_right_voltage>);
// React to sensor readings
if(leftDist > <door_threshold> &&
rightDist > <door_threshold>)
{
// A door has been detected.
<stop>
<shoot>
<move_forward_fixed_amount>
}
else if(leftDist > <turn_threshold>)
{
// Left distance is beyond the threshold,
// need to turn left
<turnLeft>;
}
else if(rightDist > <turn_threshold>)
{
// Right distance is beyond the threshold,
// need to turn right
<turnRight>
}
else (<terminate_condition>)
{
// Something happened (a sensor condition, etc)
// that tells us that we need to end
// the program
break; // This will exit the while loop
}
else (...)
{
// Other conditions...
}
else
{
// Default reaction (happens if none of the previous
// conditions are met)
<goForward>
}
}
// Shutdown the robot
<stop>
// ...显然,比较可能需要不同,但基本思想将是持续读取传感器,然后有一个条件列表,以检查和采取的行动时,条件是满足。
注释/提示:
sleep/usleep的东西发布于 2009-04-07 00:26:22
出于好奇,你为什么不能在硬件上做到这一点呢?我对你的项目有很多假设,但我认为如果你的专业领域是硬件的话,至少第一种可能更容易在硬件上完成。当然,除非你有指令在你必须遵守的软件中这样做。
如果红外传感器已经输出了可变电压,你就不能用传感器输出的电压来驱动马达吗?我假设车轮是由马达驱动的,而你旋转一个比另一个快,让它转动。然后,您甚至可能得到一个更平滑的驾驶模式(转弯/调整),而不是标准的软件解决方案,即转或转。
对于#2,您可以实现一个状态机。这也可以解决延迟问题,只需在状态0(等待)和状态1(正常)之间抛出一个计时。然后使用从门传感器输出的电压触发状态2(点火)。如果你需要的话,你可以把它分成两种状态,2(武装)和3(射击),在两种状态之间有另一个定时器。车轮电机只处于状态1,当状态3发生时,释放导弹触发器。
发布于 2009-04-07 00:17:33
大多数大学都有一个编程俱乐部(我知道我有)--为什么不呆在那里看看有没有人想帮忙呢?或者在大学机房的布告栏上放点东西,我相信大多数优秀的程序员都会发现这是一个很有趣的项目,值得花点时间。
因为这是一个物理项目,你已经在那里,你真的希望有人‘地面’与你,可以这么说。
https://stackoverflow.com/questions/723696
复制相似问题