0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NeoPixel的基本工作方式

454398 来源:工程师吴畏 2019-08-20 11:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:什么是NeoPixel

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 “第一个会点亮。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    远距离无线通信WiFi技术的技术发展、未来趋势与挑战

    探讨远距离无线通信技术的发展及应用,揭示这一领域的前沿突破以及它将如何改变我们的生活与工作方式
    的头像 发表于 12-04 18:17 893次阅读

    UWB技术的应用场景和工作方式

    UWB(Ultra-Wide Band,超宽带)是一种无线通信技术,利用非常宽的频谱(通常超过500 MHz)进行高精度测距和定位。该技术最初主要应用于军用雷达系统。随着频谱开放以及民用市场对高精度定位的需求增长,2019年之后UWB技术逐渐普及到消费电子、汽车、工业、智能家居、医疗等多个领域。
    的头像 发表于 10-28 11:00 3629次阅读
    UWB技术的应用场景和<b class='flag-5'>工作方式</b>

    AMD Versal自适应SoC内置自校准的工作原理

    本文提供有关 AMD Versal 自适应 SoC 内置自校准 (BISC) 工作方式的详细信息。此外还详述了 Versal 的异步模式及其对 BISC 的影响。
    的头像 发表于 10-21 08:18 3858次阅读

    超高频RFID读写器原理详解:工作方式、识别距离与应用场景

    超高频RFID读写器的工作原理是什么?本文深入解析其电磁波能量传输、反向散射调制、防碰撞算法和识别距离影响因素,并结合仓储物流、制造、医疗等行业案例,帮助企业全面理解超高频RFID技术的价值和应用。
    的头像 发表于 10-10 16:17 1578次阅读
    超高频RFID读写器原理详解:<b class='flag-5'>工作方式</b>、识别距离与应用场景

    88%中国法律人已用AI,下一个改变工作方式的,会是你吗?

    技术革新已悄然走入日常——不仅改变了法律人的工作方式,也带来了全新的行业价值链重构。 全球先进的法律内容和技术提供商   LexisNexis律商联讯于6月30日正式推出律商+™平台 ,该平台致力于为中国法律从业者提供高效、精准的一站式智能解决方案,涵盖权威法律检索、
    的头像 发表于 08-06 19:19 360次阅读
    88%中国法律人已用AI,下一个改变<b class='flag-5'>工作方式</b>的,会是你吗?

    LP3799EEQ 原边控制的隔离型恒压恒流控制器

    DCM 和 CCM 两种工作方式。在恒压工作状态下,系统的工作方式随负载的变化而变化,当负载为重载的时候,其工作在峰值电流控制的定频方式
    发表于 08-02 16:15 0次下载

    WXZ196微机消谐装置的工作方式是什么

    WXZ196微机消谐装置的工作方式是什么? 1、实时监测:微机消谐装置通过高性能的传感器,实时监测电力系统中的关键参数,尤其是PT开口三角处的电压和频率。在正常工作的情况下,PT开口三角处的电压小于
    的头像 发表于 06-03 09:55 383次阅读

    开关电源的基本工作原理

    于 DC/AC 逆变电源,或 DC/DC 电压变换;后两种工作模式多用于开关稳压电源。另外,开关电源输出电压也有三种工作方式:直接输出电压方式、平均值输出电压方式、幅值输出电压
    发表于 03-10 17:01

    科普CMOS传感器的工作原理及特点

    技术的革新,还深刻影响了我们的生活和工作方式。本文将深入科普CMOS传感器的工作原理及其独特特点。 CMOS传感器的工作原理 CMOS传感器的工作原理基于半导体材料的特性,尤其是光电效
    的头像 发表于 02-27 18:36 2463次阅读
    科普CMOS传感器的<b class='flag-5'>工作</b>原理及特点

    使用ADS1258的时候调试了它的两种工作方式,寄存器的值会发生错乱,为什么?

    我在使用ADS1258的时候调试了它的两种工作方式,一是auto channel,一种是fix channel;使用第一种方式都是正常的,但是用第二种方式是,总是会出现bug,在程序运行一段时间后
    发表于 02-10 08:21

    数字化仪的工作方式有哪些

    数字化仪,作为一种将图像(胶片或像片)和图形(包括各种地图)的连续模拟量转换为离散的数字量的装置,是专业应用领域中一种用途非常广泛的图形输入设备。本文将深入探讨数字化仪的多种工作方式,包括其技术原理、操作特点以及应用领域。
    的头像 发表于 01-30 15:27 1573次阅读

    串行接口的工作方式有几种,串行接口的RXD1和TXD1是什么端口

    在数字通信领域,串行接口作为一种高效的数据传输方式,广泛应用于各种电子设备之间的数据交换。串行接口不仅具有结构简单、传输距离远、抗干扰能力强等优点,而且能够支持多种工作方式,以适应不同应用场景的需求。本文将深入探讨串行接口的工作方式
    的头像 发表于 01-29 16:51 2100次阅读

    使用伺服机构开发板控制 NeoPixel LED

    [Adafruit]的 [NeoPixel LED 灯条]! 图 1:Kitronik Simply 伺服机构板。(图片来源:Kitronik) 最近,我有个想法,用我的遥控飞机制作一架夜间飞行器。
    的头像 发表于 01-25 15:04 803次阅读
    使用伺服机构开发板控制 <b class='flag-5'>NeoPixel</b> LED

    想读ADS1248寄存器写入的值,是否必须改变SPI工作模式?

    reading out the register data 请问难道我想读ADS1248寄存器写入的值,我还必须改变我的SPI工作模式?我目前使用的SPI是全双工方式,我想读被写入到寄存器中的值就必须得换SPI工作方式?另外
    发表于 01-09 07:45

    艾为推出4路电流源红外LED驱动芯片AW36604DNR

    在科技飞速发展的当下,虚拟现实(VR)技术作为一项前沿技术,正在迅速改变人类的生活和工作方式
    的头像 发表于 12-10 09:22 1359次阅读
    艾为推出4路电流源红外LED驱动芯片AW36604DNR