具有 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_UP
或 Pin.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。
基本上我只是想弄清楚 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_UP
或 Pin.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。