在Arduino程序之间动态切换

时间:2014-04-22 21:47:16

标签: arduino robotics robot

我有一个关于如何使用机械开关来改变Arduino单元中的程序的问题。我目前正在制作无线跟焦装置,它将使用xbee连接到另一个Arduino装置,用电位计无线旋转伺服(程序1)。但是,我还希望选择将简单的后退和前进按钮插入主单元(程序2)。因此我需要一些方法在两个程序之间切换。

我正在寻找最优雅的方式。最佳方案是,一旦插入按钮,代码就会自动切换到按钮模式(程序2)。但是,我不知道如何做到这一点。

如果后者不可能,我更喜欢机械开关。但是:

我认为有可能有一个等待输入的程序,只需按一下按钮1,然后切换到程序1的程序逻辑,或按钮2触发程序2。

我很想知道我的任何想法是否具有价值,以及您能想到的最优雅的解决方案是什么。因为我很难过。

1 个答案:

答案 0 :(得分:1)

从技术上讲,你不能在一块板上画两张草图。它并不是一个真正不同的程序。


自动切换:

您甚至不需要任何额外的硬件来实现此方法。只需使用以下代码打开电路板中的上拉电阻:

pinMode(pin, INPUT);           // set pin to input
digitalWrite(pin, HIGH);       // turn on pullup resistors

Source

注意:当未按时,您需要一个能够导电的开关。我无法记住我头顶的缩写。

使用该代码,您所要做的就是将交换机的一端连接到您选择的Arduino引脚,另一端连接到GND不要在此按钮上添加电阻,因为Arduino会自动使用上面的代码执行此操作。然后,要检查它是否被按下,只需执行标准{ {1}}它将返回:

  • digitalRead(pin);如果按下按钮按钮未连接
  • HIGH如果按钮未被按下但已连接

由于两个状态共享相同的返回值,因此我建议在两个按钮都返回LOW时进行切换。如果您希望确定它们已断开连接,您可能需要确保它们保持按住两秒钟,然后在此之后切换,但这会增加代码的延迟。


从一种状态切换到另一种状态:

您必须使用上面提到的代码并检查它是否已插入。然后,它将根据按钮执行代码。我在下面写了一些简单的代码,仅用HIGH进行去抖动以增加简洁性。如果你想让它更高级,请随意这样做,但我现在没有时间。此外,模式之间有一点延迟切换。

delay();