我是一名网络开发人员,这是我第一次为Arduino编写代码,所以我可能无法非常清楚地表达自己,但我会尝试。
我正在尝试这样做:
这很好用。但是,我正在尝试为伺服引入另一个条件。我想不断阅读val
analogueRead
potpin
),如果它低于500,我希望伺服从位置B返回到位置A,但只是暂时,直到{ {1}}返回到> 499(全部在5000毫秒间隔内)。
我可以很容易地实现其中一种,但是我很难让两者一起工作。在下面的代码中,一切都适用于间隔。我连接引脚,伺服转到位置B,但是当val
发生变化时(我知道它因为我尝试将值打印到监视器而改变了),它不会发生。在第一次val
重新评估之后,它开始工作并且伺服响应变化的loop
,但是那会扰乱5000毫秒的间隔并且伺服不会在结束时返回到位置A. p>
这是我的代码:
val
我猜我的方法完全错了,但正如我所说,这是我第一次遇到Arduino。
答案 0 :(得分:1)
你的问题是你想在5秒窗口内做一些事情,但是你使用了:
delay(5000);
告诉Arduino不要做5秒钟。在那段时间里它无所事事,它不是读取针脚或移动伺服器。相反,你应该使用millis()计时器来跟上自你开始日常工作以来的时间。这样循环功能可以继续运行并读取引脚和移动伺服系统。请参阅“无延迟闪烁”示例以及有关其如何工作的数百个教程中的任何一个,以获得有关如何使用非阻塞代码执行此操作的一些灵感。