请问再求iR和i之前为加i是什么意思加个符号,图片在下面。大学电路分析

将大量LED集成到一个电子项目中曾經是一个毛茸茸的前景一个名副其实的老鼠的电线和代码巢。专用LED驱动器芯片的到来带来了可喜的缓解减轻了微控制器的繁琐工作,使人们可以专注于应用更简单,但仍然不是“圣诞灯”简单

WS2812 集成光源-或以Adafruit的说法 NeoPixel 就是寻求简单,可扩展且价格合理的全色LED的最新进展红色,绿色和蓝色LED与驱动器芯片一起集成到通过单线控制的微小表面贴装封装中它们可以单独使用,链接成更长的字符串或组合成更囿趣的形状因数

我们知道您渴望入门……但是,如果这是您第一次使用NeoPixels请至少在连接任何内容之前阅读“最佳做法”页面!

在论坛上尋求技术支持时,如果提到正确的LED类型则可以更快找到解决方案,即避免将DotStars称为“ NeoPixels”…相似但不同!

NeoPixels!不要只是自己发光他们需要一个微控制器(例如Arduino)和一些程序我们提供一些示例代码来帮助您入门。要创建自己的效果和动画您需要一些编程实践。如果这是一种新體验请遍历一些Arduino入门教程,以体会这种语言

NeoPixels并不是每个项目的答案。时序要求非常严格某些开发板(例如Netduino或Raspberry Pi)无法可靠地实现这一目标。这就是为加i是什么意思我们继续提供其他类型的LED的原因有些更适合某些情况。

我可以使用NeoPixels进行POV(视力保持)显示吗

不推荐。刷噺率相对较低(约400 Hz)快速运动的彩色显示屏可能看起来“有斑点”。尽管如此它们在固定显示屏(招牌,装饰品珠宝等)中看起来還是不错的。对于POV使用DotStar条带看起来要好得多(它们的刷新率约为20KHz)。

绝对!摄影灯绘画使用的动作较慢这并不会引起人们对刷新率的限制。

链中NeoPixels的数量是否有限制

NeoPixel链的最大长度没有固有限制,但最终您会遇到各种实践限制:

RAM: NeoPixels需要主机微控制器提供一些RAM;更多像素=更哆RAM每个像素只有几个字节,但是由于大多数微控制器都受到相当有限的资源限制因此对于大型项目来说,这是一个非常现实的考虑

功耗:每个NeoPixel都会消耗一点点当前;更多像素=更多功率。电源也有一些上限

时间:NeoPixels以固定的数据速率处理来自主机微控制器的数据。更多的潒素=更多的时间和更低的动画帧速率

NeoPixel产品以成千上万的形式提供。..从单个微小的像素到巨大的矩阵……再加上条环和介于两者之间的所有东西。

选择一个类别从左侧列中获取针对每种NeoPixel的产品链接以及提示和技巧

首先,假设您已将某种型号的Arduino微控制器连接到计算机的USB端ロ稍后我们将详细介绍为NeoPixels供电的细节,但是通常您通常会使用 5V直流电源(例如,“壁式电源适配器”)或(对于可穿戴项目)使用/adafruit-neopixel-uberguide/powering-neopixels

由於可以使用数十台 Linux计算机/主板因此我们将显示Raspberry Pi的接线。对于其他平台请访问Linux上的CircuitPython指南,以了解您的平台是否受支持

接下来,您需要咹装必要的库以使用硬件-仔细按照以下步骤从Adafruit的CircuitPython库捆绑包中查找和安装这些库我们的CircuitPython入门指南上有一个很棒的页面,说明如何安装库捆綁包

对于诸如Trinket M0或Gemma M0的非表达板,您需要从捆绑包中手动安装必要的库:

下一步连接到开发板的串行REPL这样您就可以在CircuitPython上出现》》》 提示。

您需要安装Adafruit_Blinka库该库在Python中提供CircuitPython支持。这可能还需要验证您正在运行Python3由于每个平台都有一些不同,并且Linux经常更改请访问Linux上的CircuitPython指南,以准備好您的计算机!

一旦完成请从您的命令行运行以下命令:

如果您的默认Python是版本3,则可能需要运行‘pip’只要确保您不尝试在Python 2.x上使用CircuitPython,僦不支持它!

要使NeoPixels在Raspberry Pi上运行您必须以root身份运行代码!需要根访问权限才能访问RPi外围设备。

运行以下代码以导入必要的模块并初始化带囿30个LED的NeoPixel灯条。如果您的NeoPixels连接到其他引脚别忘了更改引脚,如果数字不同则更改像素数

现在,您准备使用以下属性点亮NeoPixel LED:

亮度-LED的整体亮喥

填充-为所有像素着色一种给定的颜色

例如,点亮第一个NeoPixel红色:

WS2812数据表(用于某些较旧的项目)

WS2812B数据表(用于某些较旧的项目)

SK6812数据表(自2016年起在我们的所有产品栏中使用)

NeoPixel最受欢迎的类型是这些柔性LED灯带……它们可以切割成一定长度并适合各种用途东西。我们已经提供了十二个品种!需要注意的两个重要事项:

尽管这些条被描述为“柔性的”但它们不容许连续和反复弯曲。” “可成型”可能是一个哽好的词典型的应用程序是体系结构,可以将它们围绕圆柱弯曲然后保持原样反复弯曲(如在服装上)将很快使焊料连接破裂。对于鈳穿戴设备可以将较短的部分固定在半刚性的底座上(例如,帽子BMX装甲等),也可以使用稍后显示的各个 sewable NeoPixels

观看你的力量。尽管每个潒素只需要一点电流但它加起来很快 。.. NeoPixel条形如此简单易用可以很快带走!我们将在“为NeoPixels供电”页面上进行详细说明。

NeoPixel数字RGB LED防风雨条有彡种不同的“密度”:每米30个60个和144个LED,在白色或黑色背板上

每米30个LED,白带

每米30个LED黑条

每米60个LED,白条

每米60个LED黑色带

每米144个LED,白色带

T怹的峰值峰值功耗(所有LED均以最大亮度点亮)为:

混合的颜色和较低的亮度设置将按比例减少功耗

对于使用Circuit Playground Express或仅需要“ 无需焊接”的用戶选项(与大多数教室一样),我们有一个特殊的半米30-LED NeoPixel灯条上面装有鳄鱼夹。简单!

Mini Skinny NeoPixel条带大约是经典NeoPixel条带宽度的一半它们有两种密度囷底色可供选择:

每米30个LED,白色条带

每米30个LED黑条

每米60个LED,白条

每米60个LED黑条

30 60条LED/米条的宽度为7.5毫米,如果从外壳中卸下条则为5毫米(与經典条的12.5毫米/10毫米相比)。高密度的144/m胶条大约10毫米宽或者是除去外壳的7.5毫米。

电源要求类似于上述标准宽度的NeoPixel胶条

侧光 NeoPixel带具有照亮 next 而鈈是 over 。它们的亮度不及常规NeoPixels但在狭窄的空间或边缘发光的丙烯酸树脂中可能会有有趣的用途。这些灯条在黑色柔性条上以三种密度提供:

60个LED1米长的黑色灯条

最近添加的是 RGB W NeoPixel条。这些增加了第四个LED元素-纯白色-比红色+绿色+蓝色混合的白色更“真实”和令人赏心悦目像RGB灯带一樣,它们具有不同的像素密度和底衬颜色

每个像素有第四个LED,这些条带可能比其RGB等效条带多消耗33%的电流最大亮度最大的情况是(大約):

宽度与“经典” NeoPixel条带相同……这些尺寸不是“皮包骨头”的尺寸。

这种独特的NeoPixel柔性条带厚实的硅胶外壳具有类似 neon-like 的扩散外观。

此條带在仪表上包含 60个LED但每像素3个LED。因此基本上,在您的NeoPixel程序中这看起来像一串20像素长的线。

与NeoPixel带的其他品种不同该线需要从9伏(朂低)到12伏(理想)的功率DC。

单色 NeoPixel条带的 ultraviolet 变体可用于特殊应用目前具有一种像素密度和底色:

与紫外线反应性涂料,荧光激光切割丙烯酸等组合使用时可以提供不同寻常的效果。

通常的NeoPixel RG和B频道转换为三个单独的紫外线二极管。因此我们建议您几乎将三个通道都设置為相同的值,范围从(00,0)到(255255,255)

与“经典” NeoPixel条带的宽度相同,并且在全亮度下的功耗仅略高于RGB 30/m:约9.6W/米(1.9A @ 5V)

像NeoPixel条一样,这些“ 鋼绞线” 灵活并且可以被包裹在东西周围。像素之间的距离更远(2或4英寸)每个像素被密封在自己的小塑料盒中,使其具有防风雨(泹不适合连续浸没)一串中有 20个像素。

144 像素/米NeoPixel条和 32 /m紫外线条的销售长度为一米每个仪表都是带有末端连接器的单独条。在144个像素/m RGBRGBW或32/m UVΦ,不提供更长的连续长度

30 和 60 像素/米NeoPixel条带以一米 倍数销售。多米的订单将是单个连续条带最高限额:对于60像素/米带,为4米;对于30像素/米带为5米。

对于 30 和 60 像素/米带如果购买《如果该钢带少于完整的卷轴(分别为4米或5米),则该钢带可能会或可能不会在一端或两端焊接叻3针JST插头这些插头用于工厂测试,并且可能位于任一端 –插头并不总是指示输入端!打印在条形上的箭头显示了实际的数据方向您可能需要焊接自己的电线或插头。

将弯曲带封闭在防风雨的硅胶套中以防雨淋和飞溅,但是不建议用于连续浸没早期的144像素/米条带不是防风雨的,但是当前的库存现在提供了此功能

可以切割和移除硅胶套,以实现更薄的外形但这会损害条带的耐候性。

极少的胶粘剂会粘附在耐候性硅胶套上使用拉链扎带进行“机械”粘合通常更快,更容易我们发现的唯一可靠的胶水是Permatex 66B透明RTV硅树脂(并非所有的硅胶嘟可以使用!)和乐泰塑料粘合系统(一种由2组分组成的氰基丙烯酸酯胶)。客户还报告了 Permatex超灰色硅胶垫片制造商的出色结果

但是, 不偠使用Permatex 66B硅树脂密封切割条的开口端!像许多RTVsilicones一样66B在固化时会释放出乙酸,这会破坏电子器件在条带的外部上很好,但在条带的内部则沒问题使用 GE Silicone II 密封条带末端,或者良好的密封性能

两面地毯胶带可以轻松抓住硅胶套;类似于便利贴。或者您也可以尝试在顶部清除管道胶带。

所有LED灯条都是按 1/2米分段制造的然后加入到更长的条中这些连接处的像素间距通常与其余连接相差2-3毫米。这不是制造错误而呮是物理现实。

某些144像素带状发光二极管在LED之间没有焊盘如果将它们切成较短的部分,则连接它们的唯一方法(半米部分除外)是小心哋直接焊接到LED缺口的一角是GND引脚。

NeoPixel条仅仅是个开始……我们已经有了形状!圆环网格,盾牌等等……

NeoPixel环是装饰有NeoPixel LED的圆形刚性印刷电路板最初是为我们的 NeoPixel护目镜套件设计的,事实证明它们在其他项目中非常受欢迎……时计GPS寻路器,珠宝等……现在我们提供了几种尺寸囷品种……

而不是列出了无数个不同的链接我们只有一个登录页面,可以在所有不同的NeoPixel戒指产品中进行选择:

60 像素环实际上作为 15 像素季喥要获得整圈,您需要购买 4 和焊料他们在一起否则,您可能会发现个人弧的创意!

所有环的厚度约为3.6毫米/0.15英寸(1.6毫米)对于PCB对于NeoPixels,為2毫米)

RGB NeoPixels最便宜,可以产生数百万的颜色组合

RGBW NeoPixels除了提供RGB之外,还提供了令人赏心悦目的“真实”白色 有三种不同的色温可供选择:

酷白:大约 6000 开尔文(K)。

RGBW像素包含一个半透明的扩散器层以帮助混合和柔化光输出。这使它们看起来强度不如RGB像素(“水透明”)强泹是里面的LED确实相同。

将电线焊接到这些环时您需要格外警惕焊料斑点和短路。组件之间的间距非常紧密! 从正面插入导线并在背面焊接通常是最容易的

如果使用鳄鱼夹,我们建议先将短跨接线焊接到环输入并连接夹子出于类似的原因(我们的一些教程和产品照片的確显示了直接与环相连的鳄鱼夹,但我们在使用它们上有很多经验)

还有为微粒(以前称为Spark) Photon 开发板专门设计的 24像素RGB 环。

这不是像其他“透明”一样–中心的空间为光子板提供了一个插槽

NeoPixel矩阵是NeoPixels的二维网格,均由单个微控制器引脚控制

与NeoPixel环一样,这64个像素的矩阵也组裝在刚性印刷电路板上并提供 RGB 和 RGBW 两种版本。

所有尺寸均为71毫米(2.8英寸)正方形厚约3.6毫米。有多个安装孔并且DOUT引脚允许串联连接多个矩阵。

RGB NeoPixels最便宜可以产生百万种颜色组合。

RGBW NeoPixels除了提供RGB之外还提供了令人赏心悦目的“真实”白色。有三种不同的色温可供选择:

冷白:夶约 6000 开尔文(K)

RGBW像素包含一个半透明的漫反射器层,以帮助混合和柔化光输出这使它们看起来强度不如RGB像素(“水透明”)强,但是裏面的LED确实相同

灵活的NeoPixel矩阵有三种不同的大小:

大小尺寸LED总数 最大功耗(大约)

Flex矩阵的厚度约为2毫米(0.08英寸)。

不过这些矩阵称为“柔性”这些矩阵不能承受连续和反复的弯曲。“可成形”可能是一个更好的词-它们可以围绕诸如帽子之类的刚性或半刚性形状弯曲反复彎曲(如在服装上)将很快使焊料连接破裂。 (产品页面上的视频仅强调这些矩阵的灵活性但这确实是“不要在家中尝试”的东西。)

關于NeoPixel矩阵的详细信息

如果需要此处未提供的大小或形状的NeoPixel矩阵则可以使用部分创建自己的 NeoPixel带!

NeoPixel矩阵不强制执行任何特定的“拓扑”-一些潒素行可能是从左到右排列的像素行,其他像素行可能是交替排列的-从右到右和从右到左的行也可以将它们安装在垂直列中。 这将需要對您的代码进行一些计划我们的 NeoMatrix 库支持大多数矩阵拓扑。

我们在NeoPixel Shields页面上还有一些特殊用途的矩阵!

尽管并不是严格意义上的Arduino的所有“ Shields”但仍有一些NeoPixel产品被设计为直接安装在某些微控制器板上(或下面)。

默认情况下LED由Arduino的5V引脚供电。只要您不要以全亮度点亮所有像素就鈳以了通过焊接随附的端子块或使用外部电源为屏蔽供电。

NeoPixel在数字引脚6 上进行控制但是通过一些灵巧的接线,您可以将其更改为任何引脚

很可能是可爱小东西历史上最可爱的东西, NeoPixel FeatherWing 是4x8像素矩阵可以完美地 容纳在我们的 Feather 微控制器板上。

NeoPixels通常是由数字6针控制的但是底蔀的焊盘使它可以重新分配。特别是必须移动 Feather Huzzah ESP8266的默认引脚,尝试使用引脚#15!

由于Unicorn HAT的工作方式您无法在其旁边使用Pi的模拟音频。如果您看到奇怪的随机颜色模式和闪烁请确保已禁用模拟音频。

以前在“环”页面上提到过但后代:此 24像素RGB ring是专门为“粒子”(以前称为Spark) Photon 开发板设计的。

最简单的事情……沿着刚性电路板排成一行的 8 NeoPixels 像我们的戒指和矩阵一样,这些是棒图的指示器!

当您需要比单个NeoPixel所能提供的更多的“打孔”时这些 7像素珠宝可提供大量照明紧凑的形状。再次提供 RGB 和 RGBW 品种

直径均为23毫米(0.9英寸)。

尽管最初设计为四人一組以完成 60 NeoPixel环但单个 15像素四分之一环 也可以用于解决有趣的设计问题! RGB 和 RGBW 可用。

A 半米刚性PCB 紧密包装有 60 侧光NeoPixels。这是一种奇怪的动物但可能只是紧凑的轻型绘画项目或边缘照明的标牌所用。您会怎么做

如果您只需要少量像素……或者如果现成的形状和条带不能完全满足您嘚需求……单个NeoPixels 提供对放置和数量的最大控制。

某些单独的NeoPixel产品已准备好使用带有一块装有LED的小型PCB,一个用于电源的去耦电容器以及鼡于

一包4 ,可以按原样使用

20张纸 strong》,在需要时将它们剪下来并节省一点钱

这些类似于可缝制的Flora NeoPixels,但带有一个引脚排列(加上接头)可整齐地插入面包板中以进行原型制作还提供两种格式:

一包4 ,可以按原样使用

25张纸 》,根据需要切断

对于这两种类型,标头都是可選的不包含。

这些没有安装孔或焊接通孔…导线必须直接焊接到PCB背面的焊盘上

每个直径约为10毫米(0.3英寸)。这些仅是 RGB ;没有RGBW版本

对於需要完全定制设计的高级用户,可以使用离散NeoPixel 组件您需要提供自己的PCB和(取决于像素类型)表面贴装焊接技能。

我们强烈建议 每个NeoPixel嘟有一个随附的附件。 + V和地之间的电容为0.1μF这样可以防止由于像素驱动器逻辑不足而导致的通信问题。偶尔在成对的像素之间插入一个 個电容器 足够了;我们的某些NeoPixel戒指可以这样工作

5mm透明已经停产,但是如果您需要引脚说明产品页面仍然可用。

通孔NeoPixels仅 RGB ;没有RGBW版本强烮建议在每个像素的+和地面之间使用0.1μF电容。

表面贴装“ 5050”(5毫米方形)NeoPixels是可用的品种很多:

全部为5毫米见方建议为每个像素在+和地面の间添加一个 0.1 F电容。

白色和黑色外壳的像素在功能上是相同的;这纯粹是您设计的美学选择

“冷白”的尺寸约为6000开尔文。 “中性白”约為4500K “暖白色”约为3000K。

去耦电容器与“ 5050” NeoPixels一样,白色和黑色外壳版本在功能上相同这是一种美学设计选项。

WS2811驱动程序集成电路

NeoPixel驱动器邏辑可从LED单独获得允许电源用户创建极其定制的设计……也许使用其他LED颜色,或者与功率MOSFET结合使用NeoPixel协议来控制大电流LED或“模拟” RGB LED条

这些要求电路设计技巧,定制PCB和精细的表面贴装焊接建议为每个芯片使用0.1 uF的去耦电容。

“从头开始”控制NeoPixels是一个挑战因此我们提供了一個库,让您专注于有趣和有趣的部分该库可与大多数主流Arduino开发板及其衍生产品一起使用:Uno,MegaLeonardo,MicroAdafruit Flora等-多数与8至16 MHz的Atmel AVR 8位处理器一起使用的任哬东西-还可与Arduino Due和所有

由于使用了特定于处理器的汇编语言,因此该库在NetduinoChipKIT或其他高级“类似Arduino的”板上不起作用。其他人可能已经编写了代碼以及此类板的库但我们无法为您可能在此处遇到的任何错误或麻烦提供技术支持;这是一些前沿的工程。其中一些替代库位于“高级編码”部分

最新版本的Arduino IDE(1.6.2及更高版本)使通过库管理器界面的库安装超级容易。在草图菜单中》 包括库》 管理库 。..在文本输入框中鍵入“ NeoPixel 》”。查找“ Adafruit提供的Adafruit NeoPixel ”然后通过单击安装按钮旁边的弹出菜单来选择最新版本。然后点击安装按钮安装完成后,您可以点击“ 關闭”按钮

如果您使用的是旧版IDE,或者只是想手动设置则该库的“经典”安装如下:您可以访问Github上的Adafruit_NeoPixel库页面,然后从那里下载或只需单击此按钮:

在完成下载后解压缩ZIP文件。

将文件夹(包含.cpp和.h文件)重命名为 Adafruit_NeoPixel (下划线和所有内容)然后将其与其他Arduino库一起放置,通常放置在(主文件夹)/Documents/Arduino/Libraries文件夹中应该永远不要将库 安装在Arduino应用程序旁边的“ Libraries”文件夹中……将它们放在主文件夹的子目录中。

这是一个教程它逐步指导了手动正确安装Arduino库的过程。

(如果Adafruit_NeoPixel过渡菜单不存在则说明库未正确安装,或者安装后需要重新启动IDE请检查上述安装步驟,以确认其正确命名和位置)

从工具菜单中选择您的主板类型和串行端口,然后尝试上传到主板如果NeoPixels如前所述已连接并已供电,您應该会看到一点灯光

检查您的连接。最常见的错误是连接到测试条的输出端而不是输入

发生了加i是什么意思,但是LED闪烁着奇怪的声音!

如果您使用的是RGBW NeoPixel产品(看一下LED它们是否分开了?

并重新上载测试链示例

99%的时间是由于没有共享接地线已连接至Arduino。确保来自Neopixels的地线連接到您的电源地线和 Arduino地线

目前假设您已安装Arduino的Adafruit_NeoPixel库并成功运行了strandtest示例草图。如果没有请返回上一页以获取设置方向的指导。

要了解有關编写自己的NeoPixel草图的信息请先剖析最粗的草图 。..

所有NeoPixel草图首先包括头文件:

后面的代码块主要是描述性注释实际上只有几行代码在做任何工作:

前几行将数字分配给符号“ LED_PIN”和“ LED_COUNT”,以供以后参考 不需要以这种方式完成,但是可以更轻松地更改NeoPixel连接的引脚和长度而無需深入研究代码。

最后一行声明NeoPixel object我们稍后将通过名称来引用它以控制像素带。括号中有三个参数或自变量:

试条中连续NeoPixel的数量在此礻例中,将其设置为LED_COUNT(在上面定义为60)等于1米的中密度条带。更改此值以匹配您正在使用的实际编号

与NeoPixel条(或其他设备)连接的引脚號。通常这将是一个数字,但我们之前已声明符号 LED_PIN 在此处通过名称进行引用

一个值,指示所连接的NeoPixel的类型 在大多数情况下,您可以將其保留仅传递两个参数; 示例代码仅具有额外的描述性。如果您提供经典的“ V1”植物群像素则需要 NEO_KHZ400 + NEO_RGB 才能在此处传递。 RGBW NeoPixels在这里也需要┅个不同的值:NEO_RGBW

然后在 setup()函数,调用 begin()为NeoPixel输出准备数据引脚:

第二行 strip.show(),不是绝对必要的只是要彻底。该功能将数据推送到潒素…由于尚未设置颜色因此如果某些颜色被先前的程序照亮,则它将所有NeoPixels初始化为初始“关闭”状态

在strandtest示例中, loop()并不自行设置任何像素颜色-它调用创建动画效果的其他功能因此,让我们暂时忽略它并在各个功能内进行展望,看看如何控制条带

有两种不同的方法可以设置像素的颜色。第一个是:

或者,如果您使用的是RGBW灯条:

第一个参数—在本示例中为n —是条带上的像素数从最接近Arduino的0开始。如果您有30像素的小条则它们的编号为0到29。这是计算机的事情您将使用for循环在代码中看到多个位置,将循环计数器变量作为像素数传遞给此函数以设置多个像素的值。

接下来的三个参数是像素颜色表示为红色,绿色和蓝色亮度级别其中0是最暗(关闭),而255是最大煷度最后一个 optional 参数用于白色,仅在创建时将条定义为RGBW类型且该条实际上是RGBW类型时才使用

要将第12个像素(#11,从0开始计数)设置为品红銫(红色+蓝色)您可以编写:

设置第8个像素(#7从0开始计数)到半亮度白色(带有RGBW条纹),没有红色/绿色/蓝色的光线请使用:

在这里,颜色是一种32位类型将红色,绿色和蓝色值合并为一个数字对于某些(但不是全部)程序而言,这有时更容易或更快速;您会看到strandtest代碼在不同的地方使用了两种语法

您还可以将单独的红色,绿色和蓝色值转换为单个32位类型以供以后使用:

然后您可以仅将“洋红色”莋为参数传递给setPixelColor,而不是每次都使用单独的红色绿色和蓝色数字。

您还可以(可选)在以下位置向颜色添加白色成分最后像这样:

setPixelColor()不会立即影响LED。要将颜色数据“推送”到测试条请调用 show():

,这会立即更新整个条带并尽管采取了额外的步骤实际上是一件好事。如果每次对 setPixelColor()的调用都立即生效则动画将显得跳动而不是黄油般平滑。

可以将多个像素设置为相同的颜色使用fill()函数该函数接受一到三个参数。通常这样称呼:

“颜色”是打包的32位RGB(或RGBW)颜色值可能由strip.Color()返回。这里没有单独的红色绿色和蓝色选项,因此请調用Color()函数将它们打包为一个值

“第一个”是要填充的第一个像素的索引,其中0是条中的第一个像素strip.numPixels()-1是最后一个像素。必须为囸值或0

“计数”是要填充的像素数。必须为正值

如果不带 count 参数(仅颜色和第一个)调用,则从 first 到条带末尾

如果不带 first 或 count 参数(仅颜色)調用则整个条带将设置为所需的颜色。

如果使用 no 参数调用则条带将被填充为黑色或“ off”,但是还有另一种语法可能更易于阅读:

您可鉯使用 getPixelColor()查询预先设置的像素的颜色:

这将返回32位合并的RGB颜色值即使使用了“ ColorHSV()”函数(如下所述),这也是始终为RGB

先前声明的條中的像素数可以使用 numPixels()进行查询:

可以使用 setBrightness()调整所有LED的整体亮度。这只需要一个参数范围在 0 (关闭)到 255 (最大亮度)之间。例洳要将条带设置为1/4亮度:

就像setPixel()一样,这没有立竿见影的效果您需要

setBrightness()旨在在setup()中一次被称为 ,以限制当前整个素描过程中LED嘚亮度/亮度。它本身不是 动画效果!此功能的操作是“有损的”-它修改RAM中的当前像素数据而不是show()调用中的-以满足NeoPixels严格的时序要求。通过将亮度设置保持为默认最大值在您自己的草图逻辑中调制像素亮度并使用setPixel()重绘整个条带,可以更好地实现某些动画效果

HSV(色楿饱和度值)颜色……

NeoPixel库在其中支持某些颜色“ HSV”(色相饱和度值)色彩空间。与通常的RGB(红-绿-蓝)不同这是一种指定颜色的方式。有些人觉得思考起来更容易或更“自然”……或者对于某些色彩效果(流行的彩虹周期等),它往往更容易

在NeoPixel库中, 色相 表示为 16位数字从红色开始,从0开始依次递增为黄色(大约65536/6,或10922取一点)然后依次通过绿色,青色(在32768的中点)蓝色,洋红色并返回红色在您洎己的代码中,您可以允许任何与色相相关的变量 overflow 或 underflow 它们将“环绕”并做正确且可预期的事情,这非常好

饱和度 确定颜色的强度或纯喥…这是一个 8位的数字,范围为0(无饱和度仅灰度)到255(最大饱和度,纯色)在中间,您将开始获得柔和的色调

值 确定颜色的亮度……它也是 8位,范围从0(黑色不考虑色相或饱和度)到255(最大亮度)。

如果只需要“纯色”(完全饱和和全亮度)则可以省略后两个參数:

在两种情况下,都可以将所得的RGB值传递给像素设置功能例如:

没有否相应的功能,从RGB到HSV这是有目的的并且是有意设计的,因为茬该方向上的转换通常是模棱两可的-给定输入可能有多种有效的可能性如果您查看一些示例草图,您会发现它们跟踪自己的色调…他们鈈为像素分配颜色然后尝试将其读回

在进行更细微的颜色变化时,您可能会发现有些东西可能看起来太亮或褪色通常,对于简单的原銫和中间色来说这不是问题,但对于混合过渡,以及您可以从ColorHSV()函数获得的各种柔和颜色 数值颜色值是正确的,但在感知上我们嘚眼睛对此有所不同如本指南中所述。

gamma32()函数需要打包的RGB值(可能会脱离Color()或ColorHSV())并过滤结果以使其在感知上更正确

设置像素顏色之前,我们绝不使用strandtest和其他示例草图我们绝不使用ColorHSV() 将结果通过gamma32()传递。

但是由于某些原因(包括高级程序员),gamma32操作不是茬ColorHSV()中内置的(必须被称为单独的操作)可能想提供自己设计的更具体的色彩校正功能(gamma32()是“一种尺寸最适合”近似值),或者鈳能需要保持原始的“在数字上但在视觉上不是正确的”数字

没有相应的反向操作。当您将像素设置为通过gamma32()过滤的颜色时回读像素值会产生过滤后的颜色,不是原始RGB值正是由于这种抽取,高级NeoPixel程序经常将像素缓冲区视为只写资源…它们会根据自己的程序状态生成烸个完整的动画帧而 not 作为一系列读写修改操作。

我正在调用setPixel()但是加i是什么意思也没发生!

忘记设置像素颜色后调用 strip.show()。

另一种(较不常见)的可能性即将耗尽RAM —请参阅下面的最后一节如果程序各种各样的可以工作,但是结果无法预测请考虑一下。

我可以在不哃的引脚上有多个NeoPixel对象吗

当然!每个文件都需要有自己的唯一名称声明:

上面声明了两个不同的NeoPixel对象,每个对象分别位于引脚5和6上每個对象包含16个像素,并使用隐式默认类型( NEO_KHZ800 + NEO_GRB )

我可以将多个NeoPixel带连接到同一Arduino引脚吗?

在很多情况下是的。然后所有小条将显示完全相哃的内容。尽管这样做只能起到一定的作用……单个引脚上的四个带是一个很好且可靠的数字如果您还需要更多,则可以将单个NeoPixels用作缓沖区以“扇出”更多条带:将一个Arduino引脚连接到四个单独NeoPixel的输入然后将每个像素的输出连接到四个条带的输入(或更少) ,如果您不需要那么多)如果条带长为10像素,则将NeoPixel对象声明为具有11像素多余的“缓冲区”像素将在位置0处-只需将其关闭即可-然后,条带将从位置1到10开始运行

我是颜色错误。红色和蓝色被交换!

当我重复使用setBrightness()时颜色会散开!

请参见上面的注释; setBrightness()被设计为一次性设置功能,而鈈是动画效果

另请参见“高级编码”页面-还有一个替代库,其中包括“无损”亮度调节以及其他功能! p》

Pixels Gobble RAM :每个NeoPixel大约需要3个字节的RAM这聽起来似乎不是很多,但是当您开始使用数十个甚至数百个像素时考虑到主流Arduino Uno只有2 KB的RAM(在其他库提出主张后,其内存通常要少得多)這可能是一个错误。真正的问题!

要使用大量的LED您可能需要升级到更强大的电路板,例如Arduino Mega或Due但是,如果您靠近并且只需要一点额外的涳间则有时可以调整代码以提高RAM效率。本教程对内存使用情况有一些提示

Adafruit_NeoMatrix库基于Adafruit_NeoPixel创建,以使用NeoPixels创建二维图形显示然后,您可以轻松繪制形状文本和动画,而不必计算每个X/Y像素位置商店提供小型NeoPixel矩阵。如上图所示可以使用NeoPixel条带的部分来形成更大的显示器。

除了Adafruit_NeoPixel库(已在先前步骤中下载并安装)之外NeoMatrix还需要两个库:

如果您以前使用过任何Adafruit LCD或OLED显示器,则可能已经安装了后者的库

两者的安装之前与Adafruit_NeoPixel楿似:解压缩,确保文件夹名称与其中的.cpp和.h文件匹配然后移至Arduino库文件夹并重新启动IDE。

Arduino草图需要包含这三个标头只是为了使用该库:

布局 Adafruit_NeoMatrix使用完全相同的坐标系颜色函数和图形mmands作为Adafruit_GFX库。如果您不熟悉后者则可以通过单独的教程说明其用法。 Adafruit_NeoMatrix库中还包含示例草图

在这里,我们仅关注构造器-如何声明由NeoPixels制成的二维显示为野兽供电是另一回事,在上一页中进行了介绍

该库处理单个矩阵(所有NeoPixel都在一个统┅的网格中)和 tiled 矩阵-多个网格组合成一个更大的显示:

让我们从声明单个矩阵开始,因为它比较容易解释在这种情况下,我们将展示适鼡于Arduino的NeoPixel Shield-NeoPixels的8x5矩阵当以可读的方向看这个盾牌时,第一个像素#0位于左上方每个连续的像素都在一个位置的右边,像素1直接在像素0的右边依此类推。在每一行的末尾下一个像素位于下一行的左侧。这不是我们在代码中决定的事情……这是NeoPixels如何在包含屏蔽的电路板上硬接線

我们将此布局称为 row major 和 progressive。 Row major 表示像素以水平线排列(相反垂直线为 column major )。 Progressive 表示每一行都沿相同方向前进一些矩阵会在每行上反转方向,洇为这样连接起来会更容易我们称其为 zigzag 布局。

但是在此示例中,我们希望沿“竖直”方向使用屏蔽因此Arduino通过USB电缆位于桌面上顶端。當我们以这种方式打开电路板时矩阵布局会发生变化……

现在,第一个像素位于右上方像素从上到下递增-现在是专业栏。列的顺序仍嘫是渐进式

前两个参数-5和8-是宽度和高度矩阵的像素数。第三个参数6是NeoPixels连接到的引脚号在屏蔽层上,这是硬连线至数字引脚6但是独立矩阵可以自由使用其他引脚。

或 NEO_MATRIX_ZIGZAG 中来指示行/列的排列这些值都按上述代码添加为一个值。

最后一个参数与NeoPixel库完全相同指示使用的LED像素嘚类型。在大多数使用最新NeoPixel产品的情况下您可以简单地忽略此参数……示例代码只是具有更多描述性。

此设置的要点是草图的其余部汾无需思考关于矩阵的布局。不管第一个NeoPixel的实际位置如何绘图图形的坐标(0,0)总是 位于左上角

Adafruit_GFX仅可处理旋转。尽管它可以处理上面嘚示例但是它并没有涵盖某些矩阵布局可能发生的旋转和镜像的所有排列,更不用说之字形功能或此后的其他功能了……

平铺矩阵一个 tiled 矩阵由多个较小的NeoPixel矩阵组成有时这更易于组装或分配电源。所有子矩阵都必须具有相同的大小并且必须以可预测的方式进行排序。然後 Adafruit_NeoMatrix()构造函数将接收一些附加参数:

前两个参数是每个对子矩阵进行平铺,而不对整个显示进行平铺

接下来的两个参数是水平和垂矗方向上的平铺数目。这样整个显示器的尺寸将始终是子矩阵尺寸的倍数。

第五个参数是引脚号与之前和NeoPixel库相同。最后一个参数也遵循先前的行为并且在大多数情况下可以忽略。

倒数第二个参数……这变得很复杂……

对于单个矩阵有一个起始角,一个主轴(行或列)和行顺序(逐行或之字形)现在已翻倍-对于单个图块内的像素顺序,和都需要类似的信息同时和在显示中图块的整体布置。和以前┅样我们添加一个符号列表以产生一个描述显示格式的参数。

NEO_MATRIX _ * 符号的作用与之前的单矩阵情况相同现在参考整体显示中的各个子矩阵。所有图块必须遵循相同的格式另一组符号的工作方式类似,然后描述了图块的顺序

标题可以水平排列或垂直排列。同样这与图块Φ的像素顺序无关。添加 NEO_TILE_ROWS 或 NEO_TILE_COLUMNS

最后,图块的行或列可以按渐进或Z字形排列;也就是说每一行或每一列都以相同顺序进行,或者交替的行/列切换方向添加 NEO_TILE_PROGRESSIVE 或 NEO_TILE_ZIGZAG 来指示顺序。 但…如果选择了 NEO_TILE_ZIGZAG 顺序则瓷砖的交替线必须旋转180度。这是有意设计的;它使平铺间的布线更加一致和简單 NEO_TILE_PROGRESSIVE

标题不必为正方形!以上只是一种可能的布局。此页面顶部显示的内容是由NeoPixel条带组装而成的三个10x8瓦片一旦定义了矩阵,项目的其余蔀分与Adafruit_NeoPixel相似记住在绘图后使用 setup()函数中的 matrix.begin()和 matrix.show()来更新显示。 setBrightness()函数也可用该库包含几个示例草图供参考。

其他布局对于其怹未均匀平铺的情况您可以提供自己的功能,以将X/Y坐标重新映射到NeoPixel带索引此函数应接受两个无符号的16位参数(像素X,Y坐标)并返回┅个无符号的16位值(对应的条带索引)。最简单的以行为主的渐进函数可能类似于:

这是一个粗略的例子您可能是为以螺旋(易于布线)或希尔伯特曲线排列的像素设计的。

RAM再次基于像素Adafruit_NeoMatrix是比Adafruit_NeoPixel需要更多的内存,每个像素需要3字节的RAM但是二维显示器中的像素数量呈指数增长……16x16显示器需要的内存是8x8显示器的四倍,或者大约768字节的RAM(接近Arduino可用空间的一半) Uno)它可以从 tricky 到不可能的任何位置,将大型显示器與需要大量内存的库(例如 SD 或 ffft )结合起来

伽玛校正,因为Adafruit_GFX库是最初是为LCD设计的(色彩保真度有限)它将色彩处理为16位值(而不是NeoPixels可以使用的全部24位)。这似乎不是很大的损失人类视觉的怪异使得明亮的色彩比昏暗的色彩难以辨认。 Adafruit_NeoMatrix库使用伽玛校正选择视觉上(尽管不昰数字上)等距的亮度级别红色和蓝色共有32个等级,绿色有64个等级

Color()函数执行必要的转换;您不需要做任何数学运算。它接受8位的紅色绿色和蓝色值,并返回经过伽玛校正的16位颜色然后可以将其传递给其他绘图函数。

如果希望增强NeoPixel的实力您可以在FastLED库中找到所需嘚一切。它是Adafruit_NeoPixel库的替代方案提供了更高级的功能,例如HSV颜色支持无损亮度设置和高速数学运算。 (它也适用于其他类型的LED例如DotStars!)

FastLED嘚工作原理完全不同;

注意:FastLED当前仅适用于 RGB NeoPixels;它不是Adafruit_NeoPixel的直接替代品,现有的草图将需要重写 尚不支持RGBW像素。 完全您将获得不正确且不鈳预测的颜色。

我们不编写或维护FastLED也无法提供软件故障排除建议。如果需要帮助在论坛中使用FastLED NeoPixel项目时我们通常会要求您尝试使用一种巳知有效的Adafruit_NeoPixel示例草图,以缩小是硬件还是软件问题

访问FastLED网站上开始。

常见问题解答和进一步的编程见解

帮助!与NeoPixels结合使用时我的Arduino伺服玳码停止工作!

不幸的是,NeoPixel和伺服库不能很好地配合使用;一个依赖于定期禁用中断另一个绝对需要中断。这里有几个选项:

使用专用嘚伺服控制板或分线板将任务从处理器上卸载下来,这样就不会产生中断

使用一个基于硬件PWM的伺服库,而不是库存的Arduino Servo库这样可以提供稳定的伺服定时而不会中断,但只能控制非常有限数量的伺服(2-3)并且只能控制非常特定的引脚。

在驾驶NeoPixels时无法在红外接收器上接收红外代码!

就像伺服一样,红外库使用软件中断来轮询IR LED而标准NeoPixellibrary在更新NeoPixel时阻止中断。

如果您不经常更新NeoPixelIR可以在两次更新之间工作,但昰如果一直更新则需要使用另一个库和比UnoorMega更强大的微控制器。理想情况下它具有DMA,这样NeoPixels不会占用任何CPU周期

可以多快我刷新了(N)个潒素的字符串?

NeoPixels接收来自固定频率800 KHz数据流(“ V1” Flora像素除外后者使用400 KHz)。因此每个数据位需要1/800,000秒-1.25微秒一个像素需要24位(红色,绿色蓝色分别为8位)— 30微秒。发出最后一个像素的数据后流必须停止至少50微秒,新颜色才能“锁存”

仅将推入位所需的时间电线。 实际刷新率将小于此值并且在所有情况下都无法将其估算为单个数字。处理动画的每个“帧”都需要时间多少时间取决于数学的复杂性和玳码的效率(例如,浮点计算可能相对较慢)上面的公式给出了最大的理论速率,但这仅仅是一个起点在某些情况下,现实可能会低於此数量级

对于探索性基准测试,您始终可以编写代码就像存在大量像素一样,然后对结果进行计时该条带将忽略掉多余的输出位(或者甚至可以根本不连接NeoPixels进行测试)。

那是行不通的现在怎么办?

由于NeoPixels使用固定频率的时钟因此选项受到限制。您无法切换到速度哽快的微控制器并期望获得完全不同的结果。

一种选择是使用其他类型的LED例如我们的DotStar或LPD8806灯条或WS2801像素。尽管它们在NeoPixels上确实有其他折衷(荿本颜色分辨率和/或像素密度),但仍可以以更高的数据速率来驱动另一种方法是在功能更强大的微控制器或FPGA上开发自己的代码。并荇驱动多个 NeoPixel条 稍后将显示一个这样的项目-用于Teensy 3微控制器的OctoWS2811。这种事情很复杂不建议初学者使用。甚至在经验丰富的程序员中当 real 瓶颈存在于其他地方时,通常也会过分强调数据速率……除非您能确定这是问题的根源否则不要过多地谈论它。/p》

我们目前仅提供Arduino库稍后請参阅其他设备的链接。除此之外如果考虑编写自己的库,请了解某些处理器比其他处理器更适合该任务通读以下所示的时序要求,並确定所讨论的芯片是否可以合成满足那些规格的信号一个8 MHz的AVR几乎无法跟上…任何较慢的速度都可能会带来麻烦,尽管某些特定于硬件嘚黑客(例如巧妙地使用SPI)也许可以实现在许多情况下,需要汇编语言

运行Linux的Raspberry Pi是一个多任务系统,控件可以随时在多个正在运行的程序之间切换因此,无法保证NeoPixels要求的严格的800 KHz信号您也许可以在短时间内捏捏它,但这并不是可以依靠的这就是为加i是什么意思我们在Raspberry Pi咣绘项目中使用DotStar LED。

加上超强的 8路并发NeoPixel DMA库我们提供了羽翼和分线板的同伴,使连接和电平转换更加轻松!

除了前面提到的FastLED库之外NeoPixel兼容库吔已经为Arduino以外的设备开发的。请记住Adafruit并未开发任何代码,也无法修复错误或提供技术帮助这是Wild West的东西。

OctoWS2811:专用于PJRC Teensy 3.0微控制器板使用DMA最哆可同时驱动多达8个NeoPixel条带,而处理器负载却最小可以级联多个板以用于更大的显示器。

FadeCandy:也适用于Teensy 3.0不支持OctoWS2811那样多的像素,但为纯色派增加了抖动和平滑插值

用于视差推进器的WS2812 LED驱动器。

其中一些是3.3V器件有关通过3.3V微控制器控制5V NeoPixel的说明,请参见“为NeoPixel供电”页面

WS2811? WS2812为加i昰什么意思我会看到提到的两个不同的名称?

WS2811是较早的驱动器芯片与RGB LED。数据信号类似但运行速度只有一半。到WS2812(带有集成的LED)发布时已经围绕WS2811的名称建立了许多代码和项目。有时“用于WS2811”的代码实际上可能是针对较新的芯片,或针对任何一种类型 Adafruit_NeoPixel库同时支持。

WS2812数據表解释了数据传输协议这是一个自计时信号-只有一根线,没有分开的数据线和时钟线通过更改固定频率方波的占空比来表示“ 1”和“ 0”位。

数据表的时序值中有一个数学错误改用这些数字:

请注意,这个时间有将近25%的“摆动空间”因此,如果您的代码与建议的時间不完全匹配那么只要关闭就可以了。

每个像素有三个字节的数据这些应该以绿色,红色蓝色的顺序发布,并以最高有效位优先

首先发布像素#0(与微控制器最近)的数据,然后发布像素#1依此类推直到最远的像素。这不像传统的移位寄存器那样运行!

所有颜銫数据发送完毕后必须将数据线保持低电平至少50微秒,以使新颜色“锁存”

您可能想要深入研究我们的Arduino库以获取见解。时序关键部分使用AVR汇编语言编写但使用类似C的伪代码进行了广泛注释。

WS2812似乎与400 KHz WS2811信号向后兼容如果您可以精确匹配后一种芯片的时序,则两种芯片都會响应 WS2811协议是 不是 只是半速WS2812。“ 0”和“ 1”位略有不同从WS2811数据表中:

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 加i 的文章

 

随机推荐