Arduino 社区最强大的点之一在于它的代码库 —— 这些专门的编程包能够让您用简单的指令控制复杂的计算工具。Arduino 会识别这些附加模块,让您可以在您的程序中使用这些指令。以下视频将带来走进 Arduino 代码库。赶快点开来看,实现您的创意吧!
Arduino 的代码库涵盖各种复杂任务,比如控制大量 LED、读取传感器、生成声音、处理数据、写入显示器等等。有些库是 Arduino 软件内置的,例如允许您控制伺服电机的库。任何人都可以发布其代码库,而 Arduino 软件也自带了成千上万个可供安装的代码库。
在开始时,我建议首先使用的开发板是 Arduino Uno (1050-1024-ND) 或兼容产品,例如 Adafruit Metro (1528-1214-ND)、Sparkfun Redboard (1568-1977-ND) 或 Seeeduino (102010026-ND)。
要构建本视频中的电路,您需要:
- Arduino Uno 或兼容产品,以及 USB 线
- 无焊面包板
- 跳线 或 实心连接线
- WS2812 可寻址 led 灯带(又名 NeoPixel 灯带)
让我们从智能可寻址 LED 开始,这是一系列可控制的 LED 灯,通常称为 NeoPixels,这是 Adafruit 的品牌名称。每个像素包含一个 WS2812 芯片,该芯片与 Arduino 主板和灯带中的其他像素进行通信,以确定是否点亮以及点亮什么颜色——没有控制器,它是无法亮起的。为了控制这条灯带,我们需要一些额外的 Arduino 函数,您可以通过安装代码库来获取它们。
安装库的步骤是,打开库管理器,点击“Sketch”(菜单) > “Include Library”(包含库)>“ Manage Libraries” (管理库) 。
然后搜索 “NeoPixel” ,找到 “Adafruit NeoPixel” 库并点击安装。现在,您已准备好在 Arduino 项目中使用 NeoPixel 库!您可以在需要时使用库管理器安装新的库。
NeoPixel 灯带中的每个像素都包含一个非常小的 RGB LED,理论上可以形成任何颜色的光。但是,生成纯白色对于 RGB LED 来说有难度,产生的光的色调不准或混合质量不佳等问题常常令用户失望。
因此,还有一种 RGBW 类型的 LED,在其封装内部还包括一个白色 LED,编写这些像素的代码将包括四个亮度值来描述像素的颜色: 红色、绿色、蓝色和白色。
这类似于本系列前面一集中的analogWrite()函数示例,您需要提供0到255之间的数字来表示每个led的亮度。NeoPixel库中的函数以像素编号和这些颜色值作为参数,然后将它们转换为要发送给像素的命令。
要组装电路,请将导线焊接到了像素的电源、地线和输入引脚上,然后将Arduino板断电,现在是时候连接电路了。
将红色导线连接到5伏电源,黑色导线接地。白色数据线需要连接到 Arduino 引脚 6,因为这是所包含的代码示例使用的引脚。
请确保您将数据线连接到灯带的输入端,因为如果连接到输出端,它将无法工作。电源和地线可以连接到灯带的任何位置。
您可以在 “File”(文件) > “Examples”(示例)滚动到底部来找到代码示例,在那里您可以根据库的名称查看子菜单。然后,打开名为 “strandtest” 的示例。
第一部分创建了NeoPixel灯带的实例,并设置了程序的可配置部分,比如连接到NeoPixel灯带的引脚,像素数量以及全局亮度级别。
#define语句类似于变量声明,但用于在程序运行时不会更改的信息,比如引脚号或led数量。它们占用的内存比常规变量声明要少。
strip.show()可以用来使像素灯带产生变化,设置像素颜色和显示最新更改被分成两个单独的命令。
主循环只是调用一些外部函数,第一个是 colorWipe(),它接受两个参数:一个颜色值和一个以毫秒为单位的速度值。
要了解 colorWipe() 的作用,请在主循环下方寻找定义该函数的位置。函数定义以指定函数将返回或发送回主程序的数据类型开始。这次,该函数不返回任何内容,它只是控制像素,因此,在函数定义的开头使用了 ‘void’。接下来是函数的名称,在本示例中为“colorWipe”。当您定义自己的函数时,您可以随意命名。
在函数名称后的括号中,是该函数接受的参数。在本示例中,有一个名为“color”的 32 位无符号整数和一个名为“wait”的 8 位无符号整数。在函数内部,这些局部变量用于引用您从主循环或另一个函数传递给它的信息。
该函数本身使用 for 循环和 NeoPixel 库函数 strip.numPixels(); 逐个处理灯带中的所有像素,让每个像素发出有颜色的光,然后再继续下一个。strandtest 程序中的其他函数以相同的方式工作,并通过计算实现一些特别的灯光效果。
您可以轻松修改 colorWipe() 函数以编写自己独特的动态效果。复制并粘贴整个函数定义,更改函数名称,然后就可以尝试代码了。务必从主循环内部调用新函数。如果您找到喜欢的效果,则可以停止编辑该函数并创建一个新的函数。函数对于分离出您想要重复访问的代码块很方便,并且可以使您的代码更易于阅读。
无论您是新手还是经验丰富的工程师,Arduino都为您提供丰富的资源和灵感。希望能通过这些代码库,可以让您轻松实现创意,开启无限的可能性。让我们继续一起探索Arduino的世界,创造出令人惊叹的项目吧!
完整内容欢迎到得捷微信服务号查看推文《用 Arduino 代码库做LED灯带控制 太强了!》
关于本系列视频
电子设计博大精深,对于初学者来说,有一定的难度。本系列视频旨在介绍一些入门级的技术和技巧,包括电路设计基础知识、简单程序设计等,让初学者从基础开始,再一步步向更进阶出发,在电子设计的世界里,发掘更多乐趣,同时也可以让电子设计爱好者温故知新。
您是否有用过 Arduino 代码库来进行项目开发?您对Arduino代码库的运用有哪些问题或经验?欢迎留言,分享交流!