具有 Raspberry Pi Pico 的 SPDT 开关

SPDT Switches with a Raspberry Pi Pico

基本上我只是想弄清楚 spdt 开关如何与 raspberry pi pico 一起工作。当我搜索有关如何将开关与 pico 接口的信息时,我得到的只是有关按钮开关的信息。

spdt 开关是否像闭合电路一样,不断为我连接的引脚供电?

假设上述问题的答案是“是”,我将如何告诉 micropython 根据接收电源的引脚做不同的事情?

抱歉,问题很简单,我没有微控制器领域的经验,也无法在任何地方找到此信息。

开关本身并不为任何东西供电。它所做的只是关闭和打开电路。您可以用电线和 connect/disconnect 电线替换开关并完成相同的事情。

如果您将开关的中间引脚连接到 GPIO 2,并将两个外部引脚连接到地和 Vcc,则可以使用开关在逻辑 0 和逻辑 1 之间切换 GPIO 的值。

读取值看起来像这样:

>>> from machine import Pin
>>> pin = Pin(2, Pin.IN)
>>> pin()
0

您当然可以在条件语句中使用引脚值:

>>> if pin():
...    print('Switch is in position 1')
... else:
...    print('Switch is in position 2')
...
Switch is in position 1
>>>

我建议阅读一些基本的电子教程(或观看一些视频!)——即使它们是针对 Arduino 或其他东西而不是 Micropython,许多概念都是可以转移的。


对于您在评论中描述的配置...


GPIO2 ---o      <--- the switch is connecting this input to Vcc
          \
           \
            o--- Vcc


GPIO3 ---o       <--- this input may have an unstable value

你会遇到“浮动”输入的问题——没有连接到任何东西的 GPIO 输入往往会在逻辑 0 和 1 之间摆动。你可以通过使用 pull up or pull down 电阻来解决这个问题,它将您的输入连接到一个特定的逻辑电平,当输入断开连接时,该逻辑电平将提供一个稳定的值。

Pull-up/down 电阻可以手动连接,但许多微控制器(包括 Pico)提供 built-in pull-up 或 pull-down 电阻。 Pico 似乎同时提供了两者,您可以在创建新的 Pin 对象时通过提供 Pin.PULL_UPPin.PULL_DOWN 标志来激活它们。

这意味着你需要这样写:

>>> pinA = Pin(2, Pin.PULL_DOWN)
>>> pinB = Pin(3, Pin.PULL_DOWN)
>>> if PinA():
...     print("Pin A is connected")
... elif PinB():
...     print("Pin B is connected")
... else:
...     print("Neither pin is connected")
...

我们在这里使用 Pin.PULL_DOWN 是因为当引脚未连接时我们希望稳定值为 0。