0

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

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

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

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

4

1 回答 1

2

一个开关 - 本身 - 不会为任何东西供电。它所做的只是关闭和打开一个电路。您可以用电线替换开关并连接/断开电线并完成相同的操作。

如果您将开关的中间引脚连接到 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 之间摆动。您可以通过使用连接您的输入的上拉或下拉电阻来解决这个问题到一个特定的逻辑电平,当输入以其他方式断开时将提供一个稳定的值。

上拉/下拉电阻可以手动连接,但许多微控制器(包括 Pico)提供内置上拉或下拉电阻。Pico 似乎同时提供了两者,您可以在创建新对象时通过提供Pin.PULL_UPor标志来激活它们。Pin.PULL_DOWNPin

这意味着您需要编写如下内容:

>>> 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。

于 2022-02-23T02:52:50.530 回答