开源改变世界

v1.2 RGB Neopixel LED 工作 #123

推推 grbl 2年前 (2023-02-06) 176次浏览
打开
raymond-w2 打开了这个问题 2019 年 11 月 25 日 · 176条评论
打开

v1.2 RGB Neopixel LED 工作#123

raymond-w2 打开了这个问题 2019 年 11 月 25 日 · 176条评论

评论

v1.2 RGB Neopixel LED 工作 #123
雷蒙德-w2 评论了 2019 年 11 月 25 日  

经过反复试验后,我的 RGB LED 开始工作了。
由外墙电源供电的 59 个 LED 灯带。
https://imgur.com/a/lEBhNcu

在这里分享我的解决方案,因为我花了很多时间在这上面……

在 WS2812B Din 上,正常电阻应为 300 至 500 欧姆。
我将其更改为 12580 欧姆(几个串联的电阻),现在信号通过了:)

/edit
经过微尘修补后,最佳值为 14K 欧姆

软件设置:

平台io.ini
https://github.com/bigtreetech/Adafruit_NeoPixel

Configuration.h
`// 支持 Adafruit Neopixel LED 驱动器
#define NEOPIXEL_LED
#if ENABLED(NEOPIXEL_LED)
//#define NEOPIXEL_TYPE NEO_GRB // NEO_GRBW / NEO_GRB – 四/三通道驱动器类型(在 Adafruit_NeoPixel.h 中定义)
//编辑RaymondW
#define NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800)
#define NEOPIXEL_PIN PC7 // LED 驱动引脚

//由 RaymondW 更改
#define NEOPIXEL_PIXELS 59 // 条带中的 LED 数量,如果使用 2 个 neopixel 条带,则为 2 个条带中较大的一个
#define NEOPIXEL_IS_SEQUENTIAL // 温度变化的顺序显示 – LED 逐个 LED。禁用一次更改所有 LED。
#define NEOPIXEL_BRIGHTNESS 55 // 初始亮度 (0-255)

#define NEOPIXEL_STARTUP_TEST // 启动时循环显示颜色

// 使用单个 Neopixel LED 进行静态(背景)照明
#define NEOPIXEL_BKGD_LED_INDEX 25 // 要使用的 LED 索引
#define NEOPIXEL_BKGD_COLOR { 0, 0, 0, 255 } // R, G, B, W
#endif

/**

  • 打印机事件 LED
  • 打印期间,LED 将反映打印机状态:
    • 随着加热床达到目标温度,逐渐从蓝色变为紫色
    • 随着热端达到温度,逐渐从紫色变为红色
    • 更改为白色以照亮工作台面
    • 打印完成后变为绿色
    • 打印完成并且用户按下按钮后关闭
      */
      #if ANY(BLINKM, RGB_LED, RGBW_LED, PCA9632, PCA9533, NEOPIXEL_LED)
      #define PRINTER_EVENT_LEDS
      #endif`
v1.2 RGB Neopixel LED 工作 #123

我将 3 个像素放在我的英雄下,并且有点工作,颜色关闭。在 startup_test 之后,第一个像素不亮。当热端加热时,颜色都是错误的。一旦热端温度升高,第一个 LED 指示灯为蓝色,另外两个为白色。正在忍受它。我只需要在数据输入线上加一个高欧姆电阻并更改NEOPIXEL_TYPE?感谢任何帮助,一直在忍受它,但宁愿它按预期的方式工作。

v1.2 RGB Neopixel LED 工作 #123

我还没有安装 LED 灯条,所以我只能猜测,但如果你的颜色不对,你可以尝试更改 NEOPIXEL_TYPE。也许是 NEO_KHZ800 或 NEO_RGB。

对于第一个行为不同的 LED,也许您定义了 NEOPIXEL_BKGD_LED_INDEX?这似乎只影响一个 LED。

v1.2 RGB Neopixel LED 工作 #123

我确实尝试过 NEO_RGB,但颜色更差。我觉得奇怪的是,在通电后它们应该是蓝色的并且第一个 LED 灯熄灭了。我刚刚尝试使用 NEOPIXEL_TYPE (NEO_GRB + NEO_KHZ800) 进行编译,但失败了。输出不喜欢 + 号。

v1.2 RGB Neopixel LED 工作 #123

此外,NEOPIXEL_BKGD_LED_INDEX 仍被注释掉。

v1.2 RGB Neopixel LED 工作 #123

我是个傻瓜 NEO_GRB + KHZ800 不应该在括号中!这就是我懒惰和复制粘贴的结果。

v1.2 RGB Neopixel LED 工作 #123

我将 3 个像素放在我的英雄下,并且有点工作,颜色关闭。在 startup_test 之后,第一个像素不亮。当热端加热时,颜色都是错误的。一旦热端温度升高,第一个 LED 指示灯为蓝色,另外两个为白色。正在忍受它。我只需要在数据输入线上加一个高欧姆电阻并更改NEOPIXEL_TYPE?感谢任何帮助,一直在忍受它,但宁愿它按预期的方式工作。

这也是我的问题,错误的颜色和部分功能的 RGB LED。

v1.2 RGB Neopixel LED 工作 #123

刚刚编译了上面的更改,准备测试它。只需焊接电阻变化即可。

v1.2 RGB Neopixel LED 工作 #123

感谢您发布您的发现,我选择了 14.4k 并且非常接近。红是红蓝是蓝等等,我觉得橙色和黄色有点偏差。我可以接受它,我真的只关心打印时的额外光线。再次感谢!

v1.2 RGB Neopixel LED 工作 #123

有趣的!谢谢!你用过帽子吗?比如adafruit推荐的?

v1.2 RGB Neopixel LED 工作 #123

不是这个,而是我所做的所有其他可寻址的主导项目。我确实有一套 4 个茶灯,我打印并用于万圣节场景,带有闪烁的草图,我没有使用任何帽子。整个十月都在,没有任何不良影响。

v1.2 RGB Neopixel LED 工作 #123
分界线 评论了 2019 年 11 月 28 日  

我能够让 LED 以不同的方式工作。你有没有注意到颜色不一致的问题?我很好奇电阻器是这里的关键。我会尝试获取效果的视频,但在预热周期中,大多数像素应该是紫色的,但少数会变成黄色或红色。

https://imgur.com/gallery/Mnd2kmk

v1.2 RGB Neopixel LED 工作 #123

不是这个,而是我所做的所有其他可寻址的主导项目。我确实有一套 4 个茶灯,我打印并用于万圣节场景,带有闪烁的草图,我没有使用任何帽子。整个十月都在,没有任何不良影响。

v1.2 RGB Neopixel LED 工作 #123

v1.2 RGB Neopixel LED 工作 #123

我能够让 LED 以不同的方式工作。你有没有注意到颜色不一致的问题?我很好奇电阻器是这里的关键。我会尝试获取效果的视频,但在预热周期中,大多数像素应该是紫色的,但少数会变成黄色或红色。

https://imgur.com/gallery/Mnd2kmk

“有点不同的路线”???来吧,伙计,怎么样!哈哈。
v1.2 RGB Neopixel LED 工作 #123

v1.2 RGB Neopixel LED 工作 #123

@demitrix
不仅是电阻器或电容器,如果接地不正确,我也会得到不一致的颜色。
LED 灯带和 SKR/PSU 需要共享 1 个公共接地点才能在我的设置中获得一致的颜色。

我从 SKR-PSU 连接到金属底盘放置了一根额外的地线,并将我的 5v LED PSU 接地也连接到底盘。

有多个用户提到不一致的接地问题,可能是因为接地平面设计不当。

v1.2 RGB Neopixel LED 工作 #123
分界线 评论了 2019 年 11 月 28 日  

这是我第一次让脱衣舞工作时使用的更改。
Platformio.ini
在 [common] 下注释掉 Adafruit Neopixel 库并添加
Adafruit NeoPixel= https://github.com/bigtreetech/Adafruit_NeoPixel
在您选择的 [env:STM32F103RC_bigtree] 下
从 lib_ignore 中删除 Adafruit Neopixel

Configuration.h
#define NEOPIXEL_LED
#if ENABLED(NEOPIXEL_LED)
#define NEOPIXEL_TYPE NEO_GRB //因条而
异#define NEOPIXEL_PIXELS 20 //设置你的长度
#define NEOPIXEL_IS_SEQUENTIAL
#define NEOPIXEL_BRIGHTNESS 127
#define NEOPIXEL_STARTUP_TEST

NEOPIXEL_PIN 在单独的文件中定义,无需在此处定义。

@raymond-w2我正在使用 DCDC5V 插件并从电路板本身获取 5v/gnd。也许这也是一个问题。我周围有一个 4kOhm 的电阻器,我可能会输入数据以查看它是否有帮助。

如果您查看 Marlin\src\feature\leds\neopixel.cpp,我认为使用 NEO_GRB + NEO_KHZ800 是多余的

Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS、NEOPIXEL_PIN、NEOPIXEL_TYPE + NEO_KHZ800)

v1.2 RGB Neopixel LED 工作 #123

@demitrix
也许是多余的,但这就是我工作的方式。
如果将来有什么变化,我知道我已经在正确的地方找到了我的详细信息。

只有少量 LED 才能使用板载 DCDC5V,我使用的是 59 条。
当它们变为全功率白色时,我的外部 PSU 峰值高达 1.7A。

v1.2 RGB Neopixel LED 工作 #123

我只有 20 个 LED,所以在范围内。我暂时有。它们有时会工作,但颜色不一致,老实说,我相信这是 BTT 在 neopixel 库中对 STM32F1 的实现

v1.2 RGB Neopixel LED 工作 #123
分界线 评论了 2019 年 12 月 4 日  

我的怀疑取得了一些进展。在简单阅读了一些关于 bit banging 和微控制器以及 WS2812B strip 的内容后,我确信 BTT 的时序不对。我刚刚上传了我修改后的 NeoPixel 库的第二个版本,并且在我的 LED 上具有更好的准确性。我增加了 nop 的数量以增加 GPIO 高低之间的延迟。BTT 使用的一些范围很远。真的需要有人用示波器来测量数据引脚并确认时序。

// min: 550 typ: 700 max: 5,500 - Incorrect.
// min: 550 typ: 700 max: 850
GPIO_SET(pin);      
asm("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;");
// min: 450 typ: 600 max: 5,000 - Incorrect
// min: 450 typ: 600 max: 750
GPIO_CLEAR(pin);
asm("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop;");
      } else {
// data ZERO high
// min: 200  typ: 350 max: 500
GPIO_SET(pin);
asm("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop;");
// data low
// min: 450 typ: 600 max: 5,000 - Very incorrect
// min: 650 typ: 800 max: 950
GPIO_CLEAR(pin);
asm("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
    "nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"
喜欢 (0)