LED Effects
凭借其灵活性和相对易用性,可编程LED(Addressable LED)正逐渐取代RGB LED。每个独立的LED元件都能以极高的速度显示全光谱颜色,因此可用于创建各种灯光效果。
配置灯带 (Configuring the strips)
在您的配置文件中,每个连接到IO引脚的灯带或灯链都必须有一个定义。需要定义每条灯带的数据引脚(如果适用,还需时钟引脚)以及灯链中的LED数量。LED效果实例能够同时使用多种不同类型和颜色顺序的灯带,但每条灯带必须首先按其类型定义。
[neopixel panel_ring]
pin: ar6 # 数据引脚
chain_count: 16 # LED数量
配置效果 (Configuring the effects)
从更抽象的意义上说,效果是灯带所处的状态。效果可以由1个LED或100个LED组成。可以有1个效果层或10个效果层。这一切都是任意且可扩展的。这意味着,可以同时运行的层数和LED数量的唯一限制是宿主操作系统的处理能力。在初步测试中,在树莓派4上以24 FPS的速度同时运行了超过100个LED和12个效果层。
基本层定义 (Basic layer definition)
在我们的示例打印机中,有一个由16个Neopixel LED组成的环,位于前面板上;还有一小段Neopixel LED位于热端旁边,用于照亮打印件。
此外,在热床下方还有5个Dotstar LED。这里列出的引脚号完全是虚构的。
[neopixel panel_ring] # 前面板环形灯带
pin: ar6
chain_count: 16
[neopixel tool_lights] # 工具头灯光
pin: ar15
chain_count: 6
[dotstar bed_lights] # 热床灯光
data_pin: ar21 # Dotstar需要数据引脚
clock_pin: ar22 # Dotstar需要时钟引脚
chain_count: 5
我们希望当打印机上线时,环形灯带亮起浅蓝色,并且亮度进行呼吸(逐渐变亮再变暗)。
[led_effect panel_idle] # 定义名为panel_idle的效果
autostart: true # 开机自动启动
frame_rate: 24 # 帧率 (FPS)
leds: # 应用效果的灯带
neopixel:panel_ring
layers: # 效果层定义
breathing 10 1 top (.5,.5,1) # 呼吸效果 速度10 截止值1 顶部混合模式 颜色(0.5,0.5,1) [浅蓝]
这定义了一个名为 panel_idle
的效果。
控制效果 (Controlling the effects)
效果可以是活动的(active)或非活动的(inactive)。非活动效果不输出任何颜色数据,而活动效果返回颜色数据,这些数据会在它们运行的每个LED上进行叠加求和。
激活和停用效果 (Activating and deactivating effects)
我们的示例效果可以通过运行GCode命令 SET_LED_EFFECT EFFECT=panel_idle
来激活。为了停止当前在新效果所使用的LED上运行的所有其他效果,将 REPLACE
参数设置为1: SET_LED_EFFECT EFFECT=panel_idle REPLACE=1
运行命令 SET_LED_EFFECT EFFECT=panel_idle STOP=1
会再次停用这个特定的效果。
要停用所有效果,我们可以使用GCode命令 STOP_LED_EFFECTS
。
要仅停用特定LED的效果,我们可以指定LEDS参数:
STOP_LED_EFFECTS LEDS="neopixel:panel_ring"
您也可以指定索引(见下文): STOP_LED_EFFECTS LEDS="neopixel:panel_ring (1-7)"
。一次只能指定一个LED参数。要停止多个LED的效果,我们必须多次运行该命令。
淡入淡出 (Fading in and out)
可以通过指定 FADETIME
参数来使效果淡入淡出:
SET_LED_EFFECT EFFECT=panel_idle FADETIME=1.0
在1秒内将效果淡入。运行 SET_LED_EFFECT EFFECT=panel_idle STOP=1 FADETIME=1.0
在1秒内将其淡出。我们也可以通过运行 STOP_LED_EFFECTS FADETIME=1.0
将所有效果淡出。还可以通过将 REPLACE
参数与 SET_LED_EFFECT
结合使用来实现效果间的交叉淡入淡出(见上文):
SET_LED_EFFECT EFFECT=panel_idle REPLACE=1 FADETIME=1.0
附加的效果级别参数 (Additional effect level parameters)
autostart: true
- 在启动时自动启动效果。frame_rate:
- 设置效果的帧率(每秒帧数)。run_on_error:
- (需要打补丁的MCU固件。当前不支持。)heater:
- 指定用于加热器效果(heater effect)的加热器。使用extruder
表示挤出机,heater_bed
表示热床。对于温控风扇或传感器,添加类型并使用引号。 示例:heater: "temperature_fan myfan"
analog_pin:
- 指定用于需要模拟信号的效果的引脚。stepper:
- 指定用于步进电机效果(stepper effect)的轴。可能的值有:x
,y
和z
。 示例:stepper: x
endstops:
- 指定归位效果(homing effect)触发时生效的限位开关。多个限位开关可以指定为逗号分隔的列表。可能的值有:x
,y
,z
和probe
。 示例:endstops: x, y
定义LED (Defining LEDs)
leds:
部分是一个列表,列出了组成该效果的Neopixel或Dotstar灯带。两种类型可以用于同一个效果。每条灯带在 leds:
部分下方单独一行定义并缩进。
leds:
neopixel:panel_ring
neopixel:tool_lights
dotstar:bed_lights
此外,可以决定只让特定的LED显示该效果。这是通过在灯带名称后提供要使用的LED索引来实现的。索引可以是列表或范围。范围也可以倒置以反转效果方向。如果省略索引,则使用整条灯带。
同样,如果出于某种原因需要,同一条灯带可以在一个效果中使用两次,并指定不同的LED。
leds:
neopixel:tool_lights # 使用整个tool_lights灯带
neopixel:panel_ring (1-7) # 使用panel_ring灯带的LED 1到7
neopixel:panel_ring (16-9) # 使用panel_ring灯带的LED 16到9 (倒序)
dotstar:bed_lights (1,3,5) # 使用bed_lights灯带的LED 1, 3, 5
定义效果层 (Defining Effect Layers)
效果是逐帧生成的。每帧包含的像素数等于为该效果定义的LED数量。因此,一个指定了22个LED的效果每帧将有22个像素。
每个效果层都是作为一帧生成的。每一层帧与下一层混合以生成最终效果。混合是累积性的,颜色如何混合由顶层的混合模式定义。 每个效果层在其自己的行上列出,并且每个层都有自己的设置。
大多数效果层(如呼吸breathing和渐变gradient)在Klipper启动时预渲染,以节省后续的计算开销。其他效果(如火焰Fire和闪烁Twinkle)则是按需渲染。
每层使用以下参数定义:
- 层名称 (Layer name) - 效果类型(如 static, breathing, fire 等)
- 效果速率 (Effect Rate) - 控制效果速度、周期或强度的数字参数(具体含义因效果而异)
- 截止值 (Cutoff) - 另一个数字参数,通常控制效果的长度、衰减或阈值(具体含义因效果而异)
- 混合模式 (Blending mode) - 定义该层如何与下方图层混合(如 top, add, screen 等)
- 调色板 (Color palette) - 定义效果使用的颜色,格式为 (R, G, B) 或 (R, G, B, W),值范围0.0到1.0
每层必须在单独的一行上定义,并且每行必须缩进。 调色板的长度可以是任意的,但可能会根据帧大小或灯带上的LED数量进行压缩。颜色定义为红(Red)、绿(Green)、蓝(Blue)和(可选的)白(White)的分组。白色通道仅用于RGBW LED,在RGB LED上会被忽略。每种颜色的范围是从0.0到1.0的小数。因此,黄色应使用 (1.0, 1.0, 0.0)。对于白色,在RGB LED上应使用 (1.0, 1.0, 1.0),在RGBW LED上应使用 (0.0, 0.0, 0.0, 1.0)。
单个颜色必须用括号括起来,并用逗号分隔。
一些示例调色板:
彩虹 Rainbow (1.0, 0.0, 0.0),(0.0, 1.0, 0.0),(0.0, 0.0, 1.0) # 红 -> 绿 -> 蓝 火焰 Fire (0.0, 0.0, 0.0),(1.0, 0.0, 0.0),(1.0, 1.0, 0.0),(1.0, 1.0, 1.0) # 黑 -> 红 -> 黄 -> 白 蓝色彗星 Blue Comet (0.8, 1.0, 1.0),(0.0, 0.8, 1.0),(0.0, 0.0, 1.0) # 浅青 -> 蓝青 -> 深蓝
layers:
breathing .5 0 screen (0,.1,1), (0,1,.5), (0, 1,1), (0,.1,.5) # 呼吸效果 速度0.5 截止值0 屏幕混合模式 4种蓝色调
static 1 0 bottom (1,.1,0), (1,.1,0), (1,.1,0), (1,1,0) # 静态效果 速率1 截止值0 底部混合模式 橙色(重复4次)
有几种效果可供选择。
静态 (Static)
效果速率 (Effect Rate): 未使用,但必须提供 截止值 (Cutoff): 未使用,但必须提供 调色板 (Palette): 颜色在灯带上均匀混合 显示单一颜色且不变化。如果提供包含多种颜色的调色板,颜色将根据色相差异在LED上均匀混合。
线性渐变 (LinearFade)
效果速率 (Effect Rate): 3 一个完整周期的持续时间(秒) 截止值 (Cutoff): 0 未使用,但必须提供 调色板 (Palette): 颜色按顺序循环 LED在颜色之间线性渐变。如果提供包含多种颜色的调色板,它将按照调色板中指定的顺序循环这些颜色。效果速率参数控制遍历所有颜色所需的时间。
呼吸 (Breathing)
效果速率 (Effect Rate): 3 一个完整呼吸周期(亮->暗->亮)的持续时间(秒) 截止值 (Cutoff): 0 未使用,但必须提供 调色板 (Palette): 颜色按顺序循环 颜色逐渐变亮再变暗(呼吸)。如果提供包含多种颜色的调色板,它将按照调色板中指定的顺序循环这些颜色。效果速率参数控制一次“呼吸”所需的时间。
闪烁 (Blink)
效果速率 (Effect Rate): 1 一个完整周期(亮->灭->亮)的持续时间(秒) 截止值 (Cutoff): 0.5 LED处于亮起状态的时间比例(0到1之间) 调色板 (Palette): 颜色按顺序循环 LED根据效果速度完全亮起和完全熄灭。如果提供包含多种颜色的调色板,它将按照调色板中指定的顺序循环这些颜色。
频闪 (Strobe)
效果速率 (Effect Rate): 1 每秒频闪的次数 截止值 (Cutoff): 1.5 决定衰减速率。数值越大衰减越快 调色板 (Palette): 颜色按顺序循环 LED完全亮起,然后随时间衰减熄灭。如果提供包含多种颜色的调色板,它将按照调色板中指定的顺序循环这些颜色。效果速率控制灯光每秒频闪的次数。截止值参数控制衰减速率。1.5是一个不错的衰减速率值。
闪烁 (Twinkle)
效果速率 (Effect Rate): 1 增加LED点亮的概率。 截止值 (Cutoff): .25 决定衰减速率。数值越大衰减越快 调色板 (Palette): 随机选择颜色 沿灯带随机闪光并衰减。如果指定了调色板,则从调色板中随机选择一种颜色。
渐变 (Gradient)
效果速率 (Effect Rate): 1 渐变循环的速度,负值改变方向。 截止值 (Cutoff): 1 灯链上渐变的数量(值越大,单个渐变越短) 调色板 (Palette): 具有均匀间距的线性渐变。 调色板中的颜色混合成一条沿灯带长度的线性渐变。效果速率参数控制颜色循环的速度。效果速率的负值会改变渐变循环的方向(从右向左 vs 从左向右)。截止值决定渐变长度相对于灯链长度的关系。数值越大,渐变越短(例如,值2表示在灯链长度上有2个渐变)。
图案 (Pattern)
效果速率 (Effect Rate): 1 图案移动的时间间隔(秒) 截止值 (Cutoff): 1 图案每次移动的LED位置数量 调色板 (Palette): 要移动的图案 调色板作为重复图案应用于灯链,并沿灯链移动。效果速率决定移动之间的时间(秒),截止值决定图案每次移动的LED位置数量。
彗星 (Comet)
效果速率 (Effect Rate): 1 彗星移动的速度,负值改变方向 截止值 (Cutoff): 1 彗尾的长度(相对值) 调色板 (Palette): “彗头”的颜色和“彗尾”的渐变 一个光点穿过LED,并带有衰减的拖尾。方向可以通过使用负的效果速率值来控制。调色板颜色决定彗星和拖尾的颜色。调色板的第一个颜色定义彗星“头部”的颜色,其余颜色混合到“尾部”。
追逐 (Chase)
效果速率 (Effect Rate): 1 光点移动的速度,负值改变方向 截止值 (Cutoff): 1 拖尾的长度(相对值) 调色板 (Palette): “头部”的颜色和“尾部”的渐变 设置与彗星相同,但有多个光点相互追逐。
加热器 (Heater)
效果速率 (Effect Rate): 1 激活效果的最低温度(℃) 截止值 (Cutoff): 0 达到目标温度后是否禁用效果(1=禁用, 0=保持静态) 调色板 (Palette): 从冷到热混合的颜色值 当指定的加热器处于活动状态或温度高于指定的最低温度时,此效果激活。例如,如果加热器打开并设置目标温度,LED将循环渐变颜色,直到达到目标温度。一旦达到目标温度,将使用渐变的最后一个颜色,并且效果本质上变为静态颜色,直到加热器状态改变。如果提供了截止值参数(设为1),则在达到目标温度后效果将禁用。如果加热器关闭,颜色将反向遵循此模式,直到温度降至配置中指定的最低温度以下。这可用于指示热端或热床处于可触摸的安全状态。
温度 (Temperature)
效果速率 (Effect Rate): 20 冷端温度(℃) 截止值 (Cutoff): 80 热端温度(℃) 调色板 (Palette): 从冷到热混合的颜色值 所配置加热器的温度决定了在调色板上渐变显示的颜色。当调色板中只定义了一种颜色时,该颜色的亮度由温度决定。
火焰 (Fire)
效果速率 (Effect Rate): 45 “火花”发生的概率 截止值 (Cutoff): 40 “冷却”速率 调色板 (Palette): 从“冷”到“热”混合的颜色值 Arduino的FastLED库附带了一个名为Fire2012WithPalette的示例程序。此效果是该程序的移植版。它通过“点燃”一个LED来模拟火焰。来自该LED的“热量”沿着LED长度传播,并逐渐冷却。较高的火花率会导致在灯带底部积累更多的热量,从而产生更强烈的火焰。改变冷却速率会导致整体火焰更长或更短。
加热器火焰 (HeaterFire)
效果速率 (Effect Rate): 1 激活效果的最低温度(℃) 截止值 (Cutoff): 0 达到目标温度后是否禁用效果(1=禁用, 0=保持) 调色板 (Palette): 从“冷”到“热”混合的颜色值 火焰效果,但对指定加热器的温度有响应。火焰从一个小余烬开始,随着加热器达到目标温度而增加强度。如果截止值参数设置为1,则在达到目标温度后效果将禁用,否则它将保持活动状态直到加热器关闭。
模拟引脚 (AnalogPin)
效果速率 (Effect Rate): 10 输入信号的乘数 截止值 (Cutoff): 40 触发效果的最小阈值(原始值或电压百分比) 调色板 (Palette): 混合的颜色值 此效果使用从模拟引脚读取的值来确定颜色。如果在调色板中指定了多种颜色,则根据引脚的值选择一种颜色。如果只指定了一种颜色,则亮度与引脚值成正比。一个示例用法是连接一个模拟电位器来控制LED灯条的亮度。在内部,输入电压是作为相对于参考电压(aref)的百分比来测量的。另一个用途可以是连接风扇的RPM线(如果风扇有转速计)。必须谨慎使用,因为电流过大或电压过高可能会损坏引脚或毁坏控制板。
步进电机 (Stepper)
效果速率 (Effect Rate): 4 尾部LED数量(负值表示填充步进位置之前的所有LED) 截止值 (Cutoff): 4 头部LED数量(负值表示填充步进位置之后的所有LED) 调色板 (Palette): 混合的颜色值 指定步进电机的位置由调色板中的第一个颜色表示。渐变中剩余的颜色在两侧混合并镜像。随着步进电机位置相对于轴长度的变化,灯光在灯带上上下移动。需要注意的是,效果本身每半秒更新一次步进电机位置(基于报告的步进位置,类似于GET_POSITION gcode命令)。它不是实时的。效果速率中的负值将填充步进位置之前的整个灯带,截止值中的负值将填充步进位置之后的整个灯带。
步进颜色 (StepperColor)
效果速率 (Effect Rate): 1 位置缩放因子 截止值 (Cutoff): 0 位置偏移量 调色板 (Palette): 混合的颜色值 LED的颜色由步进电机的位置决定。位置被映射到0到100之间,然后乘以效果速率并加上截止值作为偏移量。这个结果决定了在作为指定颜色值渐变的调色板中的取值。
进度 (Progress)
效果速率 (Effect Rate): 4 尾部LED数量(负值表示填充进度位置之前的所有LED) 截止值 (Cutoff): 4 头部LED数量(负值表示填充进度位置之后的所有LED) 调色板 (Palette): 混合的颜色值 配置与步进电机(Stepper)效果完全相同,但此层报告打印进度而不是步进电机位置。
归位 (Homing)
效果速率 (Effect Rate): 1 决定衰减速率。数值越大衰减越慢(淡出时间) 截止值 (Cutoff): 0 未使用,但必须提供 调色板 (Palette): 颜色按顺序循环 在归位过程中,当限位开关触发时,LED亮起并再次淡出。效果速率决定淡出所需的时间。如果提供包含多种颜色的调色板,它将按照调色板中指定的顺序循环这些颜色。
效果层混合 (Effect Layer Blending)
如果您使用过图像编辑软件,您可能熟悉图像层之间的颜色混合。几种常见的颜色混合技术已被添加用于混合LED层。配置中定义的层从上到下排序(配置文件中靠下的层是“底部”层,靠上的是“顶部”层)。
如果定义了3个层,首先将底部层与中间层混合。然后将结果层与顶部层混合。即使指定了混合模式,底部层也永远不会与任何层混合(它作为基础)。
层混合总是从下往上评估。
由于值不能超过100%亮度或0%暗度,因此它们被限制在这个范围内作为浮点数(0.0 - 1.0)。
底部 (bottom)
不进行混合,使用底部层的颜色通道值。(b)
(底部层颜色)
顶部 (top)
不进行混合,使用顶部层的颜色通道值。(t)
(顶部层颜色)
相加 (add)
( t + b ) # 顶部层颜色 + 底部层颜色
颜色通道(红、绿、蓝)彼此相加。这导致通道变得更亮。
相减 (subtract)
( b - t ) # 底部层颜色 - 顶部层颜色
从底部层减去顶部层。这会导致相似颜色变暗。
反向相减 (subtract_b)
( t - b ) # 顶部层颜色 - 底部层颜色
从顶部层减去底部层。这会导致相似颜色变暗。
差值 (difference)
abs( t - b ) # |顶部层颜色 - 底部层颜色|
两个通道中较亮的减去较暗的。( |t - b| )
平均 (average)
( t + b ) / 2 # (顶部层颜色 + 底部层颜色) / 2
取通道的平均值。
相乘 (multiply)
( t * b ) # 顶部层颜色 * 底部层颜色
通道相乘,这有助于使颜色变暗。
相除 (divide)
( t / b ) # 顶部层颜色 / 底部层颜色
通道相除,这会使颜色变亮,通常是白色。
反向相除 (divide_inv)
( b / t ) # 底部层颜色 / 顶部层颜色
类似于相除,但用底部除以顶部。
滤色 (screen)
1 - ( 1 - t ) * ( 1 - b ) # 1 - (1 - 顶部层颜色) * (1 - 底部层颜色)
将值取反,相乘,然后再取反。类似于相除,它会产生更亮的颜色。
变亮 (lighten)
max( t, b ) # 取每个通道 t 和 b 的最大值
使用颜色通道中较亮的那个。( max(t, b) )
变暗 (darken)
min( t, b ) # 取每个通道 t 和 b 的最小值
与变亮相反,使用颜色通道中较暗的那个。( min(t, b) )
叠加 (overlay)
( 2*t*b if t > .5 else 1 - 2*(1-t)*(1-b) ) # 条件混合
叠加是相乘(multiply)和滤色(screen)的组合。这具有增加对比度的类似效果。
示例配置 (Sample Configurations)
故障警示灯 (das Blinkenlights)
在发生严重错误时,所有LED灯带同步呼吸红色,以提供打印机出现错误状况的可见指示。此效果在正常操作期间禁用,仅在MCU进入关闭状态时启动(当前不支持)。
[led_effect critical_error]
leds:
neopixel:tool_lights
neopixel:bed_lights
layers:
strobe 1 1.5 add (1.0, 1.0, 1.0) # 频闪 白色
breathing 2 0 difference (0.95, 0.0, 0.0) # 呼吸 红色 (与下方差值混合产生脉动)
static 1 0 top (1.0, 0.0, 0.0) # 静态 纯红 (基础)
autostart: false # 不自动启动
frame_rate: 24 # 24 FPS
run_on_error: true # (计划特性: 出错时运行)
带温度显示的热床空闲状态 (Bed Idle with Temperature)
[led_effect bed_effects]
leds:
neopixel:bed_lights # 应用在热床灯带
autostart: true
frame_rate: 24
heater: heater_bed # 关联热床加热器
layers:
heater 50 0 add (1,1,0),(1,0,0) # 加热器效果: 激活温度>50℃, 渐变从黄(1,1,0)到红(1,0,0)
static 0 0 top (1,0,0) # 静态红色层 (顶部, 当达到目标温度时显示纯红)
电位器控制亮度 (Brightness Controlled By Potentiometer)
这是一个如何将模拟引脚(Analog Pin)效果与图层混合结合以控制灯光亮度的示例。可以将电位器连接到热敏电阻端口,并使用从该引脚读取的电压值来确定从基础层中减去的颜色量。电位器的接线需要确保当它“调低”时,模拟引脚上的电压为满输出(即电位器接地端接模拟引脚),当它“调高”时电压为最小输出(即电位器VCC端接模拟引脚)。这样,当电位器“调低”时,颜色 (1.0, 1.0, 1.0)(纯白)正从图层的颜色中减去,导致 (0.0, 0.0, 0.0)(全黑)。效果速率和截止值需要根据特定的电位器和电路板组合进行调整。
[led_effect bed_effects]
leds:
neopixel:bed_lights
autostart: true
frame_rate: 24
analog_pin: ar52 # 模拟输入引脚
layers:
analogpin 10 0 subtract (1,1,1) # 模拟引脚效果: 乘数10 阈值0 相减混合模式 白色(1,1,1) (值越大, 减的白色越多, 越暗)
static 0 0 top (1,1,1) # 静态 纯白层 (基础亮度)
进度条 (Progress Bar)
使用单条LED灯带,打印进度显示为深蓝色背景上的一条浅蓝色线。
[led_effect progress_bar]
leds:
neopixel:progress_lights # 进度条灯带
autostart: true
frame_rate: 24
layers:
progress -1 0 add ( 0, 0, 1),( 0, 0.1, 0.6) # 进度效果: 负值填充左侧, 添加混合, 从深蓝(0,0,1)到中蓝(0,0.1,0.6)渐变
static 0 0 top ( 0, 0, 0.1) # 静态 暗蓝色背景层 (顶部)
常见问题解答 (Frequently Asked Questions)
我的LED随机闪烁
这通常是由于某种信号问题造成的。大多数可编程LED使用特定的通信协议。它通常涉及以特定间隔发送数据位,然后是复位锁存信号以通知它们点亮。它们将保持最后一次设置的颜色,直到被告知要做其他事情。
在打印机固件中实现的大多数可编程LED方案中,颜色数据在执行gcode命令时发送一次,之后不再发送。只要初始信号被读取,它们就会保持该颜色。
在此特定实现中,颜色数据按照效果帧率确定的固定间隔进行更新。因此,每秒10帧意味着每秒向LED发送10次颜色更新。
数据线容易受到打印机上其他电子设备的电磁干扰。当存在这种干扰时,可能会导致发送到LED的数据格式错误。
为了缓解这种情况,可以尝试对数据线进行绝缘或与其他电线隔离。尽量保持数据线尽可能短。这对于通常以3.3V输出数据信号的32位主板尤其成问题。
数据线上的振铃(ringing)和反射也会降低信号完整性,特别是当连接到第一个LED的电缆相当长时。可以通过在第一个LED前面的数据线上串联一个470-1000欧姆(通常约700欧姆)的电阻来减少这种情况。
另一个闪烁来源是压降。根据设置的亮度,每个可编程LED消耗20到60mA的功率。如果它们在无法提供足够功率的电源上运行(例如打印机主板的内部稳压器),则可能表现为闪烁或灯带整体变暗。
我灯带末端的LED不如其他部分亮
这通常与灯带末端的LED相比灯带开头的LED获得的功率不足有关。解决方法是在灯带末端焊接VCC和GND线。这些额外的电源线将使末端的LED能够获取所需的功率。这通常只发生在非常长的灯带上,或者电源已经达到极限的情况下。始终建议使用独立于主板的5V电源为LED供电。
我的颜色不正确
不同的芯片制造商和芯片类型使用略有不同的颜色数据协议。有些指定颜色顺序为红(Red)、绿(Green)、蓝(Blue),另一些指定为绿(Green)、红(Red)、蓝(Blue)。LED灯带的配置在 'neopixel' 部分有一个可选参数可以设置颜色顺序。
color_order: GRB
(例如,如果灯带实际是GRB顺序,但发送RGB数据时显示为绿色)
如果您不确定LED的颜色顺序并想测试,可以注释掉或禁用所有已配置的效果,并使用gcode命令直接设置灯带的颜色。
SET_LED LED=<config_name> RED=1 GREEN=0 BLUE=0 TRANSMIT=1
(例如 SET_LED LED=panel_ring RED=1 GREEN=0 BLUE=0 TRANSMIT=1
)
此命令应将整个灯带变为红色。如果灯带变为绿色,则它使用GRB颜色顺序。
一些LED,如SK6812,还有一个白色通道。对于这些LED,颜色顺序可以设置为:
color_order: GRBW
- 注意:对于FLY的TP(可能是特定品牌/型号)驱动器,需要配置为
colorreorder: GRB