该 loop 方法继续,一遍又一遍,直到你的电池电量耗尽或机器人关闭。
loop
我没有你的机器人因此很难测试你的代码,但也许,在充分尊重的情况下,你的方法并不完全正确。
对于我的机器人,我去了 behavior-based 。每个循环(每秒数百次)机器人会询问有关环境及其内部状态的问题。使用答案,它选择正确的行为。
behavior-based
您正在使用的方法是基于行为的机器人的良好开端。以下是一些解释所有这些内容的幻灯片: 基于行为的机器人 。
希望能帮助到你 !
这是你的问题:
循环函数不断运行,每次结束时它都会立即启动。您首先将其设置为1,但是您永远不会将其设置为0,因此它首先经历的每个循环都是1。
while(distance <= minimumRange && first == 1){ stopMotors(); putObject(); distance = calculateDistance(); }// end second while copied first = 1;
我的原始答案与@Bmoore在诊断中的答案一致,但我现在相信你的算法在 loop() 本质上是 的 正确 强> 。这是发生的事情:
loop()
first==0
while(distance > minimumRange)
distance
<= minimumRange
first == 0
while(distance <= minimumRange && first == 0)
> minimumRange
while(distance <= minimumRange && first == 1)
first = 1
first == 1
while
所以,算法是可靠的。因此,一定有问题 的 别处 强> 。以下是我看到的可疑情况:
pickObject()
putObject()
minimumRange
在您的代码中还有一些不完全正确的事情:
digitalWrite()
LOW
HIGH
if
delay()
也可能还有其他故障(我当然希望你不会拖延你的手臂驱动引擎,因为你从来没有真正停止它!)。
的 因此,一般来说,你应该解决这样的问题: 强>
Serial.Write()
以这种方式使用日志记录将为您节省许多麻烦。