557浏览
查看: 557|回复: 0

[ESP8266/ESP32] FireBeetle 2 ESP32 C6 + 按钮台灯

[复制链接]
基于FireBeetle 2 ESP32-C6的按钮台灯制作文档(含亮度调节与定时开关功能)
一、前言
本制作文档旨在指导您使用FireBeetle 2 ESP32-C6主控板结合按钮和LED灯制作一个具有亮度调节与定时开关功能的按钮台灯。通过本教程,您将学会如何连接硬件、编写代码以及实现复杂控制功能。
二、所需材料
FireBeetle 2 ESP32-C6主控板
可调光LED灯(或PWM控制LED灯)
按钮开关(至少两个,一个用于开关,一个用于亮度调节)
杜邦线若干
面包板
电阻(用于LED限流)
typec线(用于供电及编程)
三、硬件连接
将LED灯的正极通过电阻连接到FireBeetle 2 ESP32-C6的PWM输出引脚(例如GPIO 2),用于亮度调节。LED的负极连接到GND。
将一个按钮开关的两个引脚分别连接到FireBeetle 2 ESP32-C6的GPIO引脚(例如GPIO 6,作为开关按钮输入)和GND。
将另一个按钮开关的两个引脚分别连接到FireBeetle 2 ESP32-C6的GPIO引脚(例如GPIO 4,作为亮度调节按钮输入)和GND。FireBeetle 2 ESP32 C6 + 按钮台灯图2FireBeetle 2 ESP32 C6 + 按钮台灯图1

使用微型USB线将FireBeetle 2 ESP32-C6连接到电脑,用于供电及编程。

外观设计:
FireBeetle 2 ESP32 C6 + 按钮台灯图3
四、软件编写
打开您选择的ESP32开发环境(如Arduino IDE),并安装ESP32开发板支持。
FireBeetle 2 ESP32 C6 + 按钮台灯图4
创建一个新的项目,选择ESP32 Dev Module作为开发板,并选择正确的端口。
编写代码实现按钮控制LED灯的开关、亮度调节及定时开关功能。以下是一个简化的示例代码:
  1. #include <Arduino.h>
  2. #define LED_PIN 2     // LED连接的PWM引脚
  3. #define SWITCH_PIN 6  // 开关按钮连接的GPIO引脚
  4. #define BRIGHT_PIN 4  // 亮度调节按钮连接的GPIO引脚
  5. int brightness = 0;  // 当前亮度值
  6. unsigned long lastDebounceTime = 0;  // 上次去抖动时间
  7. unsigned long debounceDelay = 50;    // 去抖动延时(毫秒)
  8. bool ledState = false;  // LED灯状态
  9. void setup() {
  10.   pinMode(LED_PIN, OUTPUT);     // 设置LED引脚为输出模式
  11.   pinMode(SWITCH_PIN, INPUT_PULLUP); // 设置开关按钮引脚为输入模式,并启用内置上拉电阻
  12.   pinMode(BRIGHT_PIN, INPUT_PULLUP); // 设置亮度调节按钮引脚为输入模式,并启用内置上拉电阻
  13. }
  14. void loop() {
  15.   // 检查开关按钮状态
  16.   int switchState = digitalRead(SWITCH_PIN);
  17.   if (switchState == LOW && (millis() - lastDebounceTime) > debounceDelay) {
  18.     lastDebounceTime = millis();
  19.     if (ledState == false) {
  20.       ledState = true;
  21.       analogWrite(LED_PIN, brightness); // 打开LED灯,设置当前亮度
  22.     } else {
  23.       ledState = false;
  24.       analogWrite(LED_PIN, 0); // 关闭LED灯
  25.     }
  26.   }
  27.   // 检查亮度调节按钮状态
  28.   int brightState = digitalRead(BRIGHT_PIN);
  29.   if (brightState == LOW && (millis() - lastDebounceTime) > debounceDelay) {
  30.     lastDebounceTime = millis();
  31.     brightness = (brightness + 10) % 256; // 增加亮度,循环至0-255范围
  32.     analogWrite(LED_PIN, brightness); // 设置LED亮度
  33.   }
  34. }
复制代码

上述代码仅为示例,您可能需要根据实际硬件和需求进行适当修改。比如,您可以添加定时器功能来实现定时开关,这通常涉及到使用ESP32的RTC(实时时钟)功能来设定时间并触发相应的事件。
五、测试与调试
上传代码到FireBeetle 2 ESP32-C6主控板。
测试开关按钮是否能正常控制LED灯的开关。
测试亮度调节按钮是否能改变LED灯的亮度。
如果需要,进一步添加定时器功能,并测试其是否能按预定时间开关LED灯。
六、注意事项
确保使用的LED灯支持PWM调光,否则亮度调节功能无法实现。
在编写代码时,注意去抖动处理,以避免按钮抖动导致的误操作。
根据实际需求,您可能需要调整去抖动延时和亮度增加量等参数。
七、总结
通过本教程,您应该能够成功制作一个具有亮度调节和定时开关功能的按钮台灯。您可以通过进一步学习和实践,扩展更多的功能,提高项目的复杂性和实用性。希望这个文档能对您有所帮助,祝制作愉快!





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail