硬件准备

  • RGB LED x1
    2024-09-02T14:08:51.png
  • ESP8266开发板 x1
    2024-09-02T14:10:15.png
  • 4pin杜邦线 x1

Arduino代码

#include <Ticker.h>

// 定义 RGB LED 灯的引脚
const int rPin = D2;
const int gPin = D1;
const int bPin = D0;

// 初始化 Ticker 对象
Ticker timer;

void setup() {
  // 设置串口波特率
  Serial.begin(115200);

  // 定义 RGB LED 灯的引脚为输出模式
  pinMode(rPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(bPin, OUTPUT);

  // 初始化随机数种子
  randomSeed(analogRead(A0));

  // 启动定时器,每秒执行一次 lightRandomRGB 函数
  timer.attach(1, lightRandomRGB);
}

void loop() {
  // 主循环无需操作,所有任务由定时器处理
}

// 将 0-255 范围的颜色值转换为 0-1023 范围
int colorToPWM(int color) {
  return map(color, 0, 255, 0, 1023);
}

// 随机点亮 RGB LED 灯的函数
void lightRandomRGB() {
  int rColor = random(0, 256); // 生成 0-255 范围内的随机红色值
  int gColor = random(0, 256); // 生成 0-255 范围内的随机绿色值
  int bColor = random(0, 256); // 生成 0-255 范围内的随机蓝色值

  Serial.print("Random Colors - R: ");
  Serial.print(rColor);
  Serial.print(", G: ");
  Serial.print(gColor);
  Serial.print(", B: ");
  Serial.println(bColor);

  analogWrite(rPin, colorToPWM(rColor));
  analogWrite(gPin, colorToPWM(gColor));
  analogWrite(bPin, colorToPWM(bColor));
}