系统提示 // 建议使用电脑访问,桌面模式效果最佳
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 做概念验证没问题,但人脑对颜色的理解方式和 RGB 不一样。等做实体版的时候我应该会重新设计这一块。

结果

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

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