我有一个关于如何使用机械开关来改变Arduino单元中的程序的问题。我目前正在制作无线跟焦装置,它将使用xbee连接到另一个Arduino装置,用电位计无线旋转伺服(程序1)。但是,我还希望选择将简单的后退和前进按钮插入主单元(程序2)。因此我需要一些方法在两个程序之间切换。
我正在寻找最优雅的方式。最佳方案是,一旦插入按钮,代码就会自动切换到按钮模式(程序2)。但是,我不知道如何做到这一点。
如果后者不可能,我更喜欢机械开关。但是:
我认为有可能有一个等待输入的程序,只需按一下按钮1,然后切换到程序1的程序逻辑,或按钮2触发程序2。
我很想知道我的任何想法是否具有价值,以及您能想到的最优雅的解决方案是什么。因为我很难过。
答案 0 :(得分:1)
从技术上讲,你不能在一块板上画两张草图。它并不是一个真正不同的程序。
您甚至不需要任何额外的硬件来实现此方法。只需使用以下代码打开电路板中的上拉电阻:
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
注意:当未按时,您需要一个能够导电的开关。我无法记住我头顶的缩写。
使用该代码,您所要做的就是将交换机的一端连接到您选择的Arduino引脚,另一端连接到GND
。 不要在此按钮上添加电阻,因为Arduino会自动使用上面的代码执行此操作。然后,要检查它是否被按下,只需执行标准{ {1}}它将返回:
digitalRead(pin);
如果按下按钮或按钮未连接HIGH
如果按钮未被按下但已连接由于两个状态共享相同的返回值,因此我建议在两个按钮都返回LOW
时进行切换。如果您希望确定它们已断开连接,您可能需要确保它们保持按住两秒钟,然后在此之后切换,但这会增加代码的延迟。
您必须使用上面提到的代码并检查它是否已插入。然后,它将根据按钮执行代码。我在下面写了一些简单的代码,仅用HIGH
进行去抖动以增加简洁性。如果你想让它更高级,请随意这样做,但我现在没有时间。此外,模式之间有一点延迟切换。
delay();