系统提示 // 建议使用电脑访问,桌面模式效果最佳
Tinkercad 三通道灯条独立控制

Tinkercad 三通道灯条独立控制

Tinkercad 虚拟电路——三路 LED 灯条独立控制,按钮切换 + 电位器调节 RGB 与亮度。

年份

2026年7月

类型

lab

分类

嵌入式系统

工具

Tinkercad Circuits · Arduino (仿真) · NeoPixel 灯带 ×3 · 电位器 ×4 · 按钮 ×3

#Arduino#Tinkercad#NeoPixel#电位器#仿真

Tinkercad 电路

概述

在买实物元器件之前,我想先在仿真里验证多通道 LED 控制器的逻辑。Tinkercad Circuits 做这种原型验证意外地好用——给你虚拟的 Arduino、NeoPixel 灯带、电位器、按钮,连串口监视器都有,完全不用碰烙铁。

这个电路控制三条独立的 NeoPixel 灯带。三个按钮用来选择当前要编辑的灯条,四个电位器负责调色:三个管 RGB,一个管总亮度。选中的灯条实时更新,其他两条保持上次的状态不变。旁边还有一个小的状态指示灯,颜色跟当前选中通道对应——扫一眼就知道在编辑第几路。

控制面板

  • 3 个按钮——选择当前灯条(1、2、3)。按下后切换编辑焦点,同时更新状态指示灯的颜色。
  • 3 个电位器——R、G、B 数值从 0-1023(analogRead)映射到 0-255 用于 NeoPixel 输出。
  • 1 个电位器——当前灯条的总亮度。在 RGB 值设定之后作为缩放因子施加。
  • 状态 RGB LED——发红光、绿光或蓝光来指示当前选中的通道。很简单但很实用——不用看串口监视器就知道在编辑哪一路。

代码结构

struct LightState {
  int r, g, b, brightness;
};

LightState lights[3];  // 每条灯带独立状态

void loop() {
  // 读取按钮 → 切换灯条
  // 读取电位器 → 更新当前灯条 RGB + 亮度
  // 应用:输出 = 基础色 × 亮度 / 255
  // 更新状态 LED 颜色
}

亮度缩放的公式 输出 = 基础色 × 亮度 / 255 比较直接——按比例降低每个通道的亮度而不会偏移色相。这一点比看起来重要;如果只是粗暴截断原始值,低亮度时颜色会明显偏掉。

后续思考

将来用实体旋钮操控时,换成 HSV(色相、饱和度、明度)控制可能比 RGB 更直观。HSV 模式下亮度旋钮直接对应 V 分量——符合直觉——三个颜色旋钮可以分别控制色相、饱和度和第三个维度(比如白平衡或色温)。RGB 做概念验证没问题,但它不是人类思考颜色的方式。等做实体版的时候我应该会重新设计这一块。

结果

Tinkercad 仿真在实际花钱买元件之前就验证了方案的可行性:

  • 三条独立 LED 灯带,各自在内存中保存状态。切到别的通道后,之前的颜色纹丝不动。
  • 按钮切换通道,去抖正常(说实话,Tinkercad 的虚拟按钮比真实按钮干净多了)。
  • 四个电位器实时控制 RGB + 亮度。从 0-1023 到 0-255 的 ADC 映射就是简单除法,但对于仿真验证来说够用了。
  • 状态指示灯提供清晰的视觉反馈,告诉你当前在编辑哪个通道。小细节,但让整个操作界面从“盲猜”变成了“有底”。