MicroPython-On-ESP8266——使用四角按钮控制LED灯

22 篇文章 1 订阅
19 篇文章 1 订阅

MicroPython-On-ESP8266——使用四角按钮控制LED灯

1. 四角开关原理图

在这里插入图片描述
这种四角按钮开关,由常开触点、常闭触点组合而成。

0 – 2, 1 – 3 内部是连通的,也就是常闭状态。 这两组之间又是常开状态,且能改变为闭合。也就是按下按钮后四个角全导通了。引脚弯曲相对是的常闭端,搞不清楚拿万用表量一下也就知道了。

2. 接线

这次做个小实验,用GPIO管脚的输入功能,来控制led灯,led就不外接了直接用板载的灯(GPIO 2)就行。

当我们定义好一个管脚作为信号输入时,如 pin = Pin(14, Pin.IN) 那要对其value做改变,就是对管脚输入高电平(value=1)或低电平(value=0)。
这里输入端我是接到nodemcu开发板的D5(GPIO14)上了,正/负/输入三个脚在一起,走线整洁一些。

既然是高低电平,那咱们就把板上的3V和GND端都接到待测定的管脚就行了。正负极接到一起时,为避免短路问题,中间加个电阻。那就得出了如下接线图:
在这里插入图片描述
我手上没有大阻值的电阻(10K),接线时拿几个小一些的串在一起用了。

按钮状态与电平(value)值关系:

  • 不按按钮, value=0
  • 按钮按下, value=1

3. 实验:按开关点亮板载led灯

因为四角开关不带自锁功能,实验目的就是按住开关灯就亮,不按就不亮

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灯是低电平点亮

4. 简化接线

前面学习GPIO部分时候,了解到ESP8266芯片的GPIO管脚,输入模式分为无模式和上拉电阻模式(也就是管脚内部串接电阻并连接到VIN端)两种。也即是当你在代码中读取Pin的input value值时,如果管脚接线是悬空的,那读到的值就是高电平(value=1)。

那如此咱们其实可以把线路简化一下,悬空是高电平,按下按钮连通到低电平,就样就能区分出状态变化了。

在这里插入图片描述

如此接线,需要注意的是,用四角按钮控制GPIO的输入value值跟前面是反过来的。

  • 不按按钮, value=1
  • 按下按钮, value=0

既然这样,上面代码中led灯点亮的状态就需要反过来了。

btn = Pin(14, Pin.IN, pull=Pin.PULL_UP)  # 强调一下是上拉模式
...
led.value(val)
  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,我知道了。针对你的问题,我能够为你提供如下的解答: 在使用 MicroPythonESP8266 控制 LED 的过程中,可以通过 PWM 技术实现呼吸效果。PWM(Pulse Width Modulation)脉宽调制技术是一种通过改变信号的占空比来控制电路输出功率的技术。 具体实现步骤如下: 1. 首先需要在 ESP8266 上安装 MicroPython,然后连接 ESP8266LED。 2. 在 MicroPython 中,可以使用 machine 模块中的 Pin 和 PWM 类来控制 LED。 3. 先使用 Pin 类将 LED 连接到 ESP8266 上的一个 GPIO 引脚。 4. 再使用 PWM 类来初始化一个 PWM 对象,并设置 PWM 对象的频率和占空比。 5. 最后使用 PWM 对象的 duty() 方法来改变占空比,从而控制 LED 显示的亮度。 下面是一个简单的 MicroPython 代码示例,用于控制 LED 呼吸效果: ```python from machine import Pin, PWM import time led_pin = Pin(2, Pin.OUT) # 连接到GPIO2 pwm = PWM(led_pin, freq=5000) # 初始化PWM对象,设置频率为5000Hz while True: for duty_cycle in range(0, 1024, 8): # 从0到1024,每次增加8 pwm.duty(duty_cycle) # 设置占空比 time.sleep_ms(5) # 暂停5ms for duty_cycle in range(1023, -1, -8): # 从1023到0,每次减少8 pwm.duty(duty_cycle) # 设置占空比 time.sleep_ms(5) # 暂停5ms ``` 上面的代码中,使用了一个无限循环来让 LED 一直显示呼吸效果。在每个循环中,通过循环改变占空比,从而让 LED 呈现出呼吸效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值