第1步:什么是neopixel
在我们开始学习帮助我们控制它们的库之前,我们先来谈谈neopixels。
这些是可单独寻址的led 所有安装在一根可以通过微控制器上的单引脚控制的字符串上。这意味着一个引脚可以控制所有led颜色以及在任何给定时间led都处于打开状态。与普通rgb led 相比,您会注意到我们需要3个引脚来控制红色 绿色和蓝色值和所有led必须保持 或关闭。因此,你可以看到使用单独可寻址可以帮助创建一些很酷的效果。
许多公司销售可寻址led条,但最受欢迎的是adafruit的 neopxiel 。 adafruit生产一系列可寻址的led灯条,并提供图书馆来控制它们,这被称为“adafruit neopixel”,还有其他公司已经制作了控制这些可寻址led的库,但在我看来,我发现adafruits有最好的支持并且最容易上手
如果你还没有,你可以在这里获得neopixel
第2步:安装库
因此我们决定使用adafruit库来控制我们的neopixel,我们如何安装它?
首先,您需要先在计算机上安装 arduino ide ,然后才能从此处下载。一旦完成所有加载并继续启动arduino ide并执行以下操作:
单击“草图”,然后将鼠标悬停在“包含库”上
点击“管理库”
您现在应该会看到一个弹出窗口打开,这就是我们所在的位置安装和更新新库。
在搜索栏中,搜索“adafruit neopixel”
点击名为的那个adafruit neopixel“
点击”安装“
一旦完成加载,neopixel库现在将在您的ide中。您可以通过检查示例是否已加载到ide中来测试:
单击“文件”,然后将鼠标悬停在“示例”
在列表中的某个位置,您应该看到“adafruit neopixel”
点击“adafruit neopixel”也看到所有示例
此时,库已成功加载到我们的arduino ide中,现在我们可以继续查看示例。
第3步:示例
现在,如果您点击任何一个示例,您可能会有点意外在获得其中一个点亮的过程中涉及多少代码。 “standardtest”示例有6个额外的功能!控制其中一个绝对比仅仅将红绿色或蓝色引脚设置为高标准rgb条带更具挑战性,但它值得搞清楚,因为它可以让你做一些非常酷的东西。
“标准测试”实际上是更高级的示例之一,所以让我们从一个简单的示例加载开始,比“simple”示例更简单的示例:
点击“文件”,然后将鼠标悬停在“示例”
点击“adafruit neopixel “
点击”简单“
现在我们可以在ide中打开一个简单的示例。
第4步:简单示例
在这个例子中发生了很多重要的代码,所以我们将逐一看一下。
在示例的最顶层我们有以下代码:
#include
这告诉arduino我们想要使用neopixel及其在此草图中带来的所有属性,如果没有这个草图,草图将无法运行。
接下来,我们看到以下内容:/p》 #ifdef __avr__
#include
#endif
这说明如果我们使用的是avr板,例如th e trinket或gemma包含与它们兼容的库。如果您使用的是arduino,则无效。
接下来,我们会看到两行非常重要的代码:
#define pin 6
#define numpixels 16
第一个名为“pin的值“用于告诉草图我们要在微控制器上使用哪个引脚。如果您希望通过微控制器上的引脚8控制neopixel,则需要将“6”更改为“8”。
名为“numpixels”的值用于告诉字符串特定字符串上有多少个像素。例如,我的字符串有8个像素,所以我将值更改为8.此值有助于草图跟踪字符串上有多少像素,允许我们使用此值创建函数,稍后我们将对此进行处理。
接下来,我们有一行代码引用我们已经定义的值:
adafruit_neopixel pixels = adafruit_neopixel(numpixels, pin, neo_grb + neo_khz800);
这段代码实际上并没有为我们服务,它可以帮助微控制器进行通信与neopixel。你可能会注意到我们定义的那些值在这里,我们可以删除单词“numpixels”和“pin”,如果我们愿意,只需用值替换它们。
接下来,我们有一个延迟值,我们稍后会参考。
int delayval = 500;
这很简单,只是声明“delayval” = 500 这是半秒
现在我们请参阅 void setup :
void setup() {
#if defined (__avr_attiny85__)
if (f_cpu == 16000000) clock_prescale_set(clock_div_1);
#endif
pixel.begin();
}
前几行代码再次与该类的饰品和其他微控制器一起使用,因此我们真的不需要担心它。 “pixel.begin”很重要,这会让草图初始化库。
接下来,我们看到 void loop 。这就是有趣的事情发生的地方。
for(int i=0;i
现在,这段代码非常复杂,用于创建一个函数,我们将在下一步回到这一点。
接下来,我们看到控制所有内容的代码
pixels.setpixelcolor(i, pixels.color(0,150,0));
代码以“pixels.setpixelcolor”开头,所以似乎有理由相信这一点代码将允许我们更改像素的颜色。第一个值是“i”现在这是代码的一部分我们告诉它我们想要点亮哪个像素,现在它设置为“i”因为我们之前讨论过它的部分功能,但如果我将此值从“i”更改为“3”,然后将代码上传到字符串上的第三个像素会点亮。这就是我们控制个人像素的方法。
在此之后我们看到“pixels.color(0,150,0)”这些是我们改变颜色的值,第一个值是红色第二个值是绿色,最终值是蓝色。现在,值设置为“(0 ,150,0)“表示条带为浅绿色(0表示颜色关闭,255表示颜色最亮)。如果我要将其改为“(0,0,255)”并上传它,那么条带会变得非常亮蓝色。我们也可以混合像“(150,0,15)”这样的颜色来违反。
接下来我们有最后一段代码:
pixels.show();
delay(delayval);
“pixels.show”将当前设置发送到像素,如果我们没有这个,它将永远不会更新像素,它将保持不变。 “延迟”可以阻止像素更新太快,并且会在我们下一步要做的功能中扮演一个双重角色。
这是一个非常长时间停止,但我们学习了如何控制neopixel的关键基础知识,在这一步中,我们了解了如何开启或关闭各个led以及如何设置这些单个neopixel的颜色。
步骤5:简单示例函数
现在将所有基本设置代码放在一边让我们来看看在我之前谈到的基本功能中。
我们要创建的功能会在每个neopixel之后打开,所以第一个会点亮,然后会发生短暂的延迟,然后第二个会点亮,然后是另一个短暂的延迟,一直到第8个neopixel。
为此,我们使用以下代码:
for(int i=0;i
并且:
pixels.setpixelcolor(i, pixels.color(0,150,0));
你会注意到这封信 “i”在应该有一个用于设置neopixel打开的数字的空间中。您还会注意到“i”在第一段代码中也是“i = 0”和“i ++”。
这里发生的事情是我们说“i”=字符串上的第一个neopixel(i = 0)(字符串上的第一个neopixel是0,第二个是1,第三个是2 。..。.第八个是7)然后我们说我们需要每个循环增加“i” 1 “i ++”然后当我们被问到我们想要点亮哪个neopixel时,我们给它赋值“i”所以每次循环运行时“i”的值增加1下一个neopixel点亮。
继续上传,你应该看到第一个neopixel点亮,然后是第二个,然后是第三个点亮,直到它们全部点亮。
现在看一下这段代码:
for(int i=7;i
在这个版本的代码“i”从7开始,并且“我 - ”这将使每个循环的“i”的值减少1,这意味着最后一个neopixel将亮起,然后是第二个最后一个,直到“i = 0 “第一个会点亮。
让键盘侠禁言:10 月 1 日起,网上发帖、跟帖、发弹幕全都得实名认证
如何快速的完成器件参数检验工作
PNP与NPN晶体管的检测方法
关于以Cortex-A8内核为基础的嵌入式实验平台方案设计详解
啤酒机如何实现液体流量控制
NeoPixel的基本工作方式
采用两只MOSFET进行串联替代普通继电器实现应用
相对漏电起痕指数失效分析
液晶广告机的投放优势?
可以给电动汽车安装一个超大的电池来增加续航吗
iPhone8和iPhoneX哪个最值得买
物联网现在能够自我意识了?
变压器极性的测定
温莎与口碑合作打造智慧KTV,将支持口碑APP点酒水
MTBF测试介绍
发展5G要有合力、定力和耐力
智慧物流|纵行科技ZETag云标签在资产管理方案中怎样发挥作用?
电容屏和电阻屏的区别是什么
瑞萨瞄准空调、太阳能电池及燃料电池市场
分布式存储系统与纠删码技术背景