基于micropython的ESP8266控制流水灯设计方案

基于micropython的ESP8266流水灯设计方案:
 
一、硬件准备
 
1. ESP8266 开发板
2. 5 个 LED 灯(颜色可自选)
3. 5 个 220Ω 电阻
4. 面包板
5. 杜邦线若干
 
二、硬件连接
 
1. 将 5 个 LED 灯的阳极(长引脚)分别通过 220Ω 电阻连接到 ESP8266 开发板的数字引脚。
2. 将 5 个 LED 灯的阴极(短引脚)连接到 GND(地)。
 
三、软件代码
 
#导入所需库
from machine import Pin
import time

#连接的GPIO口定义

led0 = Pin(0, Pin.OUT)
led1 = Pin(1, Pin.OUT)
led2 = Pin(2, Pin.OUT)
led3 = Pin(3, Pin.OUT)
led4 = Pin(4, Pin.OUT)

led_pins = [led0, led1, led2, led3, led4]

#循环控制LED亮灭,实现流水灯效果

while True:
    for led in led_pins:
        led.value(1)
        time.sleep(0.5)
        led.value(0)

实际应用时,可根据调试情况,调整亮灭时间间隔,以达到所需要的效果。

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基本的ESP8266控制流水灯并使用按键中断和消抖的示例代码: ```C++ #include <ESP8266WiFi.h> #define LED_COUNT 4 #define LED_PIN D1 #define BTN_PIN D3 volatile bool buttonPressed = false; void ICACHE_RAM_ATTR buttonInterrupt() { static unsigned long lastInterruptTime = 0; unsigned long interruptTime = millis(); if (interruptTime - lastInterruptTime > 200) { buttonPressed = true; } lastInterruptTime = interruptTime; } void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BTN_PIN, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(BTN_PIN), buttonInterrupt, FALLING); } void loop() { static int ledIndex = 0; static unsigned long lastUpdateTime = 0; if (buttonPressed) { buttonPressed = false; ledIndex = (ledIndex + 1) % LED_COUNT; digitalWrite(LED_PIN, (ledIndex == 0) ? HIGH : LOW); } if (millis() - lastUpdateTime > 1000) { lastUpdateTime = millis(); digitalWrite(LED_PIN, LOW); delay(50); for (int i = 0; i < LED_COUNT; i++) { digitalWrite(LED_PIN, (i == ledIndex) ? HIGH : LOW); delay(50); } } } ``` 这个示例代码使用 `attachInterrupt()` 函数将按键中断与 `buttonInterrupt()` 函数关联起来。当按键被按下时,`buttonInterrupt()` 函数会被调用并设置 `buttonPressed` 变量为 `true`。在 `loop()` 函数中,当 `buttonPressed` 变量为 `true` 时,它会切换当前流水灯的位置。另外,为了防止按键抖动,`buttonInterrupt()` 函数会对两次中断之间的时间进行检查,只有当两次中断之间的时间超过200毫秒时才将 `buttonPressed` 变量设置为 `true`。 关于流水灯部分,`loop()` 函数会每秒钟更新一次流水灯的位置,通过 `ledIndex` 变量来控制当前亮灯的位置,流水灯的移动是通过循环 `for` 语句实现的。在每次循环中,它会先将当前亮灯关闭,然后将 `ledIndex` 变量指定的灯亮起来,然后延时50毫秒,再将下一个灯亮起来,以此类推。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值