用Arduino代码库做LED灯带控制 太强了!

用Arduino代码库做LED灯带控制 太强了!

作者:Becky Stern

关键词:电路设计, 开发工具, 编程, LED


Arduino社区最强大的点之一在于它的代码库 —— 这些专门的编程包能够让您用简单的指令控制复杂的计算工具。Arduino会识别这些附加模块,让您可以在您的程序中使用这些指令。以下视频将带来走进Arduino代码库。赶快点开来看,实现您的创意吧!

Arduino Code Libraries with Becky Stern

Arduino的代码库涵盖各种复杂任务,比如控制大量led、读取传感器、生成声音、处理数据、写入显示器等等。有些库是 Arduino 软件内置的,例如允许您控制伺服电机的库。任何人都可以发布其代码库,而Arduino软件也自带了成千上万个可供安装的代码库。

在开始时,我建议首先使用的开发板是 Arduino Uno (1050-1024-ND) 或兼容产品,例如 Adafruit Metro (1528-1214-ND)Sparkfun Redboard (1568-1977-ND)Seeeduino (102010026-ND)

要构建本视频中的电路,您需要:

Arduino Code Libraries with Becky Stern

让我们从智能可寻址 led 开始,这是一系列可控制的 led 灯,通常称为 NeoPixels,这是 Adafruit 的品牌名称。每个像素包含一个 WS2812 芯片,该芯片与 Arduino 主板和灯带中的其他像素进行通信,以确定是否点亮以及点亮什么颜色——没有控制器,它是无法亮起的。为了控制这条灯带,我们需要一些额外的Arduino函数,您可以通过安装代码库来获取它们。

Arduino Code Libraries with Becky Stern

安装库的步骤是,打开库管理器,点击“Sketch”(菜单) > “Include Library”(包含库)>“ Manage Libraries” (管理库) 。

Arduino Code Libraries with Becky Stern

然后搜索 “NeoPixel” ,找到 “Adafruit NeoPixel” 库并点击安装。现在,您已准备好在 Arduino 项目中使用 NeoPixel 库!您可以在需要时使用库管理器安装新的库。

Arduino Code Libraries with Becky Stern

NeoPixel 灯带中的每个像素都包含一个非常小的 RGB led,理论上可以形成任何颜色的光。但是,生成纯白色对于RGB led来说有难度,产生的光的色调不准或混合质量不佳等问题常常令用户失望。

Arduino Code Libraries with Becky Stern

因此,还有一种RGBW类型的led,在其封装内部还包括一个白色led,编写这些像素的代码将包括四个亮度值来描述像素的颜色: 红色、绿色、蓝色和白色。

这类似于本系列前面一集中的analogWrite()函数示例,您需要提供0到255之间的数字来表示每个led的亮度。NeoPixel库中的函数以像素编号和这些颜色值作为参数,然后将它们转换为要发送给像素的命令。

Arduino Code Libraries with Becky Stern

要组装电路,请将导线焊接到了像素的电源、地线和输入引脚上,然后将Arduino板断电,现在是时候连接电路了。

Arduino Code Libraries with Becky Stern

将红色导线连接到5伏电源,黑色导线接地。白色数据线需要连接到 Arduino 引脚 6,因为这是所包含的代码示例使用的引脚。

Arduino Code Libraries with Becky Stern

请确保您将数据线连接到灯带的输入端,因为如果连接到输出端,它将无法工作。电源和地线可以连接到灯带的任何位置。

Arduino Code Libraries with Becky Stern

您可以在 “File”(文件) > “Examples”(示例)滚动到底部来找到代码示例,在那里您可以根据库的名称查看子菜单。然后,打开名为 “strandtest” 的示例。

Arduino Code Libraries with Becky Stern

第一部分创建了NeoPixel灯带的实例,并设置了程序的可配置部分,比如连接到NeoPixel灯带的引脚,像素数量以及全局亮度级别。

Arduino Code Libraries with Becky Stern

#define语句类似于变量声明,但用于在程序运行时不会更改的信息,比如引脚号或led数量。它们占用的内存比常规变量声明要少。

Arduino Code Libraries with Becky Stern

strip.show()可以用来使像素灯带产生变化,设置像素颜色和显示最新更改被分成两个单独的命令。

Arduino Code Libraries with Becky Stern

The main loop just calls other functions. The first is colorWipe(), which takes two arguments: a ‎color, and a speed value in milliseconds.

主循环只是调用一些外部函数,第一个是 colorWipe(),它接受两个参数:一个颜色值和一个以毫秒为单位的速度值。

Arduino Code Libraries with Becky Stern

要了解 colorWipe() 的作用,请在主循环下方寻找定义该函数的位置。函数定义以指定函数将返回或发送回主程序的数据类型开始。这次,该函数不返回任何内容,它只是控制像素,因此,在函数定义的开头使用了 ‘void’。接下来是函数的名称,在本示例中为“colorWipe”。当您定义自己的函数时,您可以随意命名。

在函数名称后的括号中,是该函数接受的参数。在本示例中,有一个名为“color”的 32 位无符号整数和一个名为“wait”的 8 位无符号整数。在函数内部,这些局部变量用于引用您从主循环或另一个函数传递给它的信息。

Arduino Code Libraries with Becky Stern

该函数本身使用 for 循环和 NeoPixel 库函数 strip.numPixels(); 逐个处理灯带中的所有像素,让每个像素发出有颜色的光,然后再继续下一个。strandtest 程序中的其他函数以相同的方式工作,并通过计算实现一些特别的灯光效果。

Arduino Code Libraries with Becky Stern

您可以轻松修改 colorWipe() 函数以编写自己独特的动态效果。复制并粘贴整个函数定义,更改函数名称,然后就可以尝试代码了。务必从主循环内部调用新函数。如果您找到喜欢的效果,则可以停止编辑该函数并创建一个新的函数。函数对于分离出您想要重复访问的代码块很方便,并且可以使您的代码更易于阅读。

Arduino Code Libraries with Becky Stern

当您熟悉了安装库和通过包含的示例和库的文档,查找如何使用它们内置的函数,Arduino 世界就由您掌控。除了我们在前几集中介绍的基本输入和输出之外,库还让您可以轻松地与使用 i2c 或 SPI 等数据协议进行通信的设备进行通信。这些设备使用更少的导线来发送和接收复杂信息。

如果您对刚了解的所有新知识感到有些不知所措,请查看我的指南,了解如何将您的 Arduino 项目从想法转化为代码。基本上,您可以使用库示例代码让每个单独的输入和输出都正常工作,然后可以提取其他示例代码中的片段逐步构建一个新的程序。

Arduino Code Libraries with Becky Stern

在您学习使用 Arduino 的这个阶段,还有一件很有用的事情就是如何安装额外的电路板。就像 Sketch 菜单下的库管理器一样,工具菜单下也有一个开发板管理器。但与库不同的是,开发板管理器需要知道在哪里查找新的开发板信息。

Arduino Code Libraries with Becky Stern

例如,如果您想安装ESP开发板,您需要先将该ESP开发板的URL粘贴到Arduino首选项的这个字段中。然后打开开发板管理器,您将在列表中看到它们。您可以通过在这个字段中用逗号分隔来添加多个开发板管理器的URL。有时兼容的开发板还需要安装驱动程序,因此,请务必在准备使用新开发板时仔细阅读文档。

无论您是新手还是经验丰富的工程师,Arduino都为您提供丰富的资源和灵感。希望能通过这些代码库,可以让您轻松实现创意,开启无限的可能性。让我们继续一起探索Arduino的世界,创造出令人惊叹的项目吧!

看完视频想提问?或者有使用Auduino的经验想分享?欢迎点击以下按钮↓↓↓

我要到技术论坛一起讨论

关于本系列视频

电子设计博大精深,对于初学者来说,有一定的难度。本系列视频旨在介绍一些入门级的技术和技巧,包括电路设计基础知识、简单程序设计等,让初学者从基础开始,再一步步向更进阶出发,在电子设计的世界里,发掘更多乐趣,同时也可以让电子设计爱好者温故知新。

关于Becky Stern

A person smiling at camera

Description automatically generated

Becky Stern是一名创客,拥有多年设计电子项目的经验,创作和分享是她两大爱好。在独立创业之前,她曾担任 Instructables (Autodesk) 的产品经理、Adafruit 的可穿戴电子产品总监等。她的作品曾被 BBC、CNN、Business Insider、Forbes 和 Science Friday 等知名媒体报导过。她创建了数百个关于技术和手工制作的线上DIY教程和视频,旨在分享她的知识,帮助同是电子设计爱好者的同路人学习,以及相互交流。

喜欢【与Becky入门电子世界】系列视频吗? 请关注订阅并点赞和分享,敬请留意下一期的播放!

相关产品:

A000066

Arduino

A000066

ARDUINO UNO R3 ATMEGA328P 开发板

2488

Adafruit

2488

METRO ATMEGA328评估板

DEV-15123

SparkFun

DEV-15123

REDBOARD QWIIC ATMEGA328评估板

102010026

Seeed Technology

102010026

SEEEDUINO V4.3 ATMEGA328P开发板

FIT0096

DFRobot

FIT0096

无焊面包板

1957

Adafruit

1957

跳线

1311

Adafruit

1311

实心连接线

2541

Adafruit

2541

可寻址照明 Neopixel 60 led 灯条

小编的话:

这个视频演示再次说明了,Arduino代码库通过提供丰富的功能库、简化设备通信、提升开发效率、增强程序的可读性和可维护性等方面,为项目开发带来了显著的价值。它使得开发者能够更快速地实现创意,更高效地开发复杂的电子项目。您是否有用过Arduino代码库来进行项目开发?您对Arduino代码库的运用有哪些问题或经验?欢迎留言,分享交流!

******

如有任何问题,欢迎联系得捷电子DigiKey客服团队。

中国(人民币)客服
- 400-920-1199
- service.sh@digikey.com
- QQ在线实时咨询 |QQ号:4009201199

中国(美金)/ 香港客服
- 400-882-4440
- 8523104-0500
- china.support@digikey.com

Digikey WeChat QR Code

到微信搜寻“digikey”或“得捷电子
关注我们官方微信
并登记成会员,
每周接收工程师秘技,
赚积分、换礼品、享福利

头像
得捷电子

评论已关闭。

Copyright©DigiKey Electronics