赞
踩
这种四角按钮开关,由常开触点、常闭触点组合而成。
0 – 2, 1 – 3 内部是连通的,也就是常闭状态。 这两组之间又是常开状态,且能改变为闭合。也就是按下按钮后四个角全导通了。引脚弯曲相对是的常闭端,搞不清楚拿万用表量一下也就知道了。
这次做个小实验,用GPIO管脚的输入功能,来控制led灯,led就不外接了直接用板载的灯(GPIO 2)就行。
当我们定义好一个管脚作为信号输入时,如 pin = Pin(14, Pin.IN)
那要对其value做改变,就是对管脚输入高电平(value=1)或低电平(value=0)。
这里输入端我是接到nodemcu开发板的D5(GPIO14)上了,正/负/输入三个脚在一起,走线整洁一些。
既然是高低电平,那咱们就把板上的3V和GND端都接到待测定的管脚就行了。正负极接到一起时,为避免短路问题,中间加个电阻。那就得出了如下接线图:
我手上没有大阻值的电阻(10K),接线时拿几个小一些的串在一起用了。
按钮状态与电平(value)值关系:
因为四角开关不带自锁功能,实验目的就是按住开关灯就亮,不按就不亮
from machine import Pin
import utime
btn = Pin(14, Pin.IN)
led = Pin(2, Pin.OUT, value=1)
last_val = 1 # 加个状态位寄存
while True:
utime.sleep_ms(100)
val = btn.value()
if val != last_val: # 状态有变则响应
last_val = val
led.value(not val) # 板载led灯是低电平点亮
前面学习GPIO部分时候,了解到ESP8266芯片的GPIO管脚,输入模式分为无模式和上拉电阻模式(也就是管脚内部串接电阻并连接到VIN端)两种。也即是当你在代码中读取Pin的input value值时,如果管脚接线是悬空的,那读到的值就是高电平(value=1)。
那如此咱们其实可以把线路简化一下,悬空是高电平,按下按钮连通到低电平,就样就能区分出状态变化了。
如此接线,需要注意的是,用四角按钮控制GPIO的输入value值跟前面是反过来的。
既然这样,上面代码中led灯点亮的状态就需要反过来了。
btn = Pin(14, Pin.IN, pull=Pin.PULL_UP) # 强调一下是上拉模式
...
led.value(val)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。