pdf-icon

Arduino 上手教程

Unit ByteButton Arduino 使用教程

1.准备工作

2.案例程序

案例说明
Unit ByteButton提供了8个物理按键输入与9个可编程RGB LED, 适合多按键输入应用场景。 其中RGB LED支持两种工作模式, 自动模式(可配置按键在不同状态下其对应的RGB LED颜色, 实现灯光同步开关状态), 自定义模式(用户自定义控制当前灯光颜色显示)。

输入读取

读取输入状态,并配置 RGB LED 为用户自定义模式,通过指令配置来更新灯光颜色。

#include <M5Unified.h>
#include "unit_byte.hpp"

uint32_t color_list[]   = {0xff0000, 0x00ff00, 0x0000ff};
uint8_t color_index     = 0;
time_t last_update_time = 0;
uint8_t buttonId        = 0x47;
UnitByte dev;

void setup()
{
    M5.begin();
    Serial.begin(115200);
    M5.Display.setFont(&fonts::lgfxJapanMinchoP_20);

    while (!dev.begin(&Wire, buttonId, 2, 1, 400000)) {
        M5.Display.drawString("Unit ByteButton init Fail!", 0, 0);
        delay(1000);
    }
    dev.setLEDShowMode(BYTE_LED_USER_DEFINED);
    for (uint8_t i = 0; i <= 8; i++) {
        dev.setLEDBrightness(i, 250);
    }
}

void loop()
{
    // M5.Display.clear();
    M5.Display.setCursor(0, 0);
    for (uint8_t i = 0; i < 8; i++) {
        uint8_t buttonStatus8Bytes = dev.getSwitchStatus(i);
        M5.Display.printf("   CH[%d]: %d\r\n", i, buttonStatus8Bytes);
    }

    if (millis() - last_update_time > 1000) {
        color_index = (color_index + 1) % 3;
        for (int i = 0; i <= 8; i++) {
            dev.setRGB888(i, color_list[color_index]);
        }
        last_update_time = millis();
    }
}

RGB LED 自动模式

可配置按键在不同状态下其对应的RGB LED颜色, 实现灯光同步开关状态。

const uint32_t colors[] = {
    0xFF0000, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF, 0xFFFFFF, 0xFFA500, 0x808080, 0x00FF00,
};
dev.setLEDShowMode(BYTE_LED_MODE_DEFAULT);
Serial.println("Set LED show sys define.");
delay(1000);
dev.setRGB233(8, colors[1]);
delay(1000);
dev.setFlashWriteBack();
delay(1000);
for (int i = 0; i < 8; i++) {
    dev.setSwitchOffRGB888(i, colors[i]);
    // Output the hexadecimal value of the current color
    Serial.printf("Set Switch Off RGB to %06X\n", (unsigned int)colors[i]);
}
delay(1000);
for (int i = 0; i < 8; i++) {
    dev.setSwitchOnRGB888(i, colors[9 - i]);
    // Output the hexadecimal value of the current color
    Serial.printf("Set Switch On RGB to %06X\n", (unsigned int)colors[i]);
}
delay(1000);
dev.setFlashWriteBack();

修改I2C地址

Unit ByteButton支持修改I2C地址, 便于同时挂载多个设备。参考以下API, 在初始化I2C总线后进行设备地址修改。

dev.begin(&Wire, 2, 1, 400000);
dev.setI2CAddress(new_addr);

3.编译上传

  • 1.下载模式: 不同设备进行程序烧录前需要下载模式, 不同的主控设备该步骤可能有所不同。详情可参考 Arduino IDE上手教程 页面底部的设备程序下载教程列表, 查看具体的操作方式。

  • CoreS3长按复位按键(大约2秒)直到内部绿色LED灯亮起,便可松开,此时设备已进入下载模式,等待烧录。

  • 2.选中设备端口, 点击Arduino IDE左上角编译上传按钮, 等待程序完成编译并上传至设备。

4.按键状态与灯光控制

实时显示按键状态与控制 RGB LED颜色切换。

On This Page