所以我的伴侣和我需要一些帮助;我们正在进行一个电气工程学位的最终项目。我们的问题,没有人真正了解课堂上的编程。我们需要有关如何编程的帮助或一些一般性的想法。
项目:
我们有一个带有两个IR(红外线)传感器的怪物卡车,通过电压检测它的路径。有了这个,我们使用自由尺度的电路板作为“大脑”,我们有一个nerf“导弹炮塔”通过开门射击(我们需要编程来记录红外传感器的电压降。
编程:
我们正在努力并且非常努力地为此创建代码
我知道要提出很多要求,但是我们需要大量的帮助,我们的老师在他所有的电气方面都超越了他多年的智慧(让我想起回到未来的医生)c编程缺乏而且也不是这里的许多人都拥有使用C编程技能的丰富知识。 最后,一旦我们得到这个工作(5月中旬)我会发布视频,如果能够,并告诉你所有。我感谢任何意见和任何想法,谢谢大家的时间!!
答案 0 :(得分:5)
您的代码可能如下所示:
// 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
答案 1 :(得分:4)
出于好奇,有没有理由你不能在硬件中做到这一切?我对你的项目有很多假设,但我认为如果你的专业领域是至少#1甚至可能更容易在硬件上做。当然,除非您有必须遵守的软件说明。
如果红外传感器已经输出可变电压,你不能只是缩放传感器的电压输出来驱动电机吗?我假设车轮是由电机驱动的,而你的旋转速度比另一个要快,可以让它转动。然后你甚至可以获得更平滑的驾驶模式(转向/调整),而不是标准的软件解决方案,这是一种转弯。
对于#2,您可以实现state machine。这也可以处理延迟,只需在状态0(等待)和状态1(正常)之间抛出timer。然后使用门传感器的电压输出触发状态2(点火)。如果需要,可以将其分为两种状态,2(布防)和3(触发),两者之间有另一个计时器。轮子马达仅在状态1中有效,并在状态3发生时释放导弹触发器。
答案 2 :(得分:0)
大多数大学都有一个编程俱乐部(我知道我的确如此) - 为什么不在那里闲逛,看看是否有人想帮忙? 或者甚至在uni的计算机房周围的布告牌上放一些东西,我相信大多数优秀的程序员会发现这是一个有趣的项目,可以节省一些时间。
因为这是一个你已经到达的实体项目,你真的希望有人在那里与你在一起,可以这么说。