这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » Grove Creator Kit开发指南【RGB LED开关控制】

共1条 1/1 1 跳转至

Grove Creator Kit开发指南【RGB LED开关控制】

菜鸟
2026-08-24 21:41:19     打赏

一、硬件介绍

1、主控开发板

使用的是XIAO ESP32S3开发板,集成ESP32S3 32位双核处理器芯片,最高运行频率240MHz,板载8MB PSRAM和8MB FLASH

1787576271514383.png





功能引脚示意图

1787576305327340.png


2、Grove Creator Kit 器件

在本次开发中,使用到的 `Grove Creator Kit 套件` 中的器件如下:


Grove - Switch (P)

一种迷你SPDT滑动开关,非常适合“开/关”场景;


image-20260821171731635.png


主要特性

image.png


Grove - Chainable RGB LED

基于P9813芯片,是一款全彩LED驱动器,提供了3个恒流驱动器以及256级灰度的调制输出;

通过2线传输(数据和时钟)与MCU通信;


image-20260821171844602.png


主要特性

工作电压:5V

工作电流:20mA

通信协议:串行



二、功能实现

1、硬件搭建

将滑动开关、RGB LED模块,通过Grove接口连接到开发板对应的引脚上;

image.png


实物搭建效果:

image-20260821162216301.png


2、功能效果

通过滑动开关模块切换RGB LED模块的开启与关闭,开启时RGB LED实现彩虹渐变效果;

> 串口打印输出当前滑动开关的状态;


开关开启(HIGH):LED 运行效果,彩虹色相循环一圈5秒,亮度完整呼吸(暗‑亮‑暗)周期同样5秒;

开关关闭(LOW):LED 熄灭,再次开启时会接续之前LED状态继续运行;



三、代码编写

主要相关代码

#include <ChainableLED.h>

#define SWITCH_PIN D9    //滑动开关引脚
#define LED_CLOCK D3
#define LED_DIN D4

ChainableLED leds(LED_CLOCK, LED_DIN, 1);

int switchState = 0;
int lastSwitchState = -1;  // 上次开关状态

// 色相 亮度
float hue = 0.0;
float bri = 0.1;
bool bri_up = true;

//彩虹一圈5s,呼吸周期5s
const float hue_step  = 0.006;
const float bri_step  = 0.0072;
const int frame_delay = 30;


void setup() {
    Serial.begin(115200);
    pinMode(SWITCH_PIN, INPUT);
    delay(100);
}


void loop(){
    switchState = digitalRead(SWITCH_PIN);
    if(switchState != lastSwitchState)
    {
        lastSwitchState = switchState;
        if (switchState == HIGH)
        {
            Serial.println("开关 已打开");
        }
        else
        {
            Serial.println("开关 已关闭");
        }
    }

    if(switchState == HIGH)
    {
        //开关打开:彩虹、呼吸
        leds.setColorHSB(0, hue, 1.0, bri);

        hue += hue_step;
        if(hue > 1.0) hue = 0.0;

        if(bri_up)
        {
            bri += bri_step;
            if(bri >= 0.7)
            {
                bri = 0.7;
                bri_up = false;
            }
        }
        else
        {
            bri -= bri_step;
            if(bri <= 0.1)
            {
                bri = 0.1;
                bri_up = true;
            }
        }
    }
    else
    {
        //开关关闭:LED熄灭
        leds.setColorRGB(0, 0, 0, 0);
    }

    delay(frame_delay);
}



四、程序烧录

1、连接USB数据线至开发板;

2、选择端口号对应的开发板;

3、点击 `上传` 烧录程序到开发板上;

image-20260818173949849.png



五、效果演示


4.gif






共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]