原创:Becky Stern@DigiKey得捷
本文介绍了Arduino代码库的强大功能,推荐使用Arduino Uno等开发板,并详细说明了如何安装和使用Adafruit NeoPixel库来控制智能可寻址 LED灯带。文章还解释了如何组装电路、编写和修改函数以创建独特的灯光效果,并强调了库在简化设备通信和程序构建中的重要性。此外,文章还介绍了如何安装额外的开发板。
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,理论上可以形成任何颜色的光。但是,生成纯白色对于RGBLED来说有难度,产生的光的色调不准或混合质量不佳等问题常常令用户失望。
因此,还有一种 RGBW 类型的LED,在其封装内部还包括一个白色LED,编写这些像素的代码将包括四个亮度值来描述像素的颜色: 红色、绿色、蓝色和白色。
这类似于本系列前面一集: 中的analogWrite()函数示例,您需要提供0到255之间的数字来表示每个LED的亮度。NeoPixel库中的函数以像素编号和这些颜色值作为参数,然后将它们转换为要发送给像素的命令。
要组装电路,请将导线焊接到了像素的电源、地线和输入引脚上,然后将Arduino板断电,现在是时候连接电路了。
将红色导线连接到5伏电源,黑色导线接地。白色数据线需要连接到Arduino 引脚 6,因为这是所包含的代码示例使用的引脚。
请确保您将数据线连接到灯带的输入端,因为如果连接到输出端,它将无法工作。电源和地线可以连接到灯带的任何位置。
您可以在 “File”(文件) > “Examples”(示例)滚动到底部来找到代码示例,在那里您可以根据库的名称查看子菜单。然后,打开名为 “strandtest” 的示例。
第一部分创建了NeoPixel灯带的实例,并设置了程序的可配置部分,比如连接到NeoPixel灯带的引脚,像素数量以及全局亮度级别。
#define语句类似于变量声明,但用于在程序运行时不会更改的信息,比如引脚号或LED数量。它们占用的内存比常规变量声明要少。
strip.show()可以用来使像素灯带产生变化,设置像素颜色和显示最新更改被分成两个单独的命令。
The main loop just calls other functions. The first is colorWipe(), which takes two arguments: a color, and a speed value in milliseconds.
主循环只是调用一些外部函数,第一个是 colorWipe(),它接受两个参数:一个颜色值和一个以毫秒为单位的速度值。
要了解 colorWipe() 的作用,请在主循环下方寻找定义该函数的位置。函数定义以指定函数将返回或发送回主程序的数据类型开始。这次,该函数不返回任何内容,它只是控制像素,因此,在函数定义的开头使用了 'void'。接下来是函数的名称,在本示例中为“colorWipe”。当您定义自己的函数时,您可以随意命名。
在函数名称后的括号中,是该函数接受的参数。在本示例中,有一个名为“color”的 32 位无符号整数和一个名为“wait”的 8 位无符号整数。在函数内部,这些局部变量用于引用您从主循环或另一个函数传递给它的信息。
该函数本身使用 for 循环和 NeoPixel 库函数 strip.numPixels(); 逐个处理灯带中的所有像素,让每个像素发出有颜色的光,然后再继续下一个。strandtest 程序中的其他函数以相同的方式工作,并通过计算实现一些特别的灯光效果。
您可以轻松修改 colorWipe() 函数以编写自己独特的动态效果。复制并粘贴整个函数定义,更改函数名称,然后就可以尝试代码了。务必从主循环内部调用新函数。如果您找到喜欢的效果,则可以停止编辑该函数并创建一个新的函数。函数对于分离出您想要重复访问的代码块很方便,并且可以使您的代码更易于阅读。
当您熟悉了安装库和通过包含的示例和库的文档,查找如何使用它们内置的函数,Arduino 世界就由您掌控。除了我们在前几集中介绍的基本输入和输出之外,库还让您可以轻松地与使用 i2c 或 SPI 等数据协议进行通信的设备进行通信。这些设备使用更少的导线来发送和接收复杂信息。
基本上,您可以使用库示例代码让每个单独的输入和输出都正常工作,然后可以提取其他示例代码中的片段逐步构建一个新的程序。
在您学习使用 Arduino 的这个阶段,还有一件很有用的事情就是如何安装额外的电路板。就像 Sketch 菜单下的库管理器一样,工具菜单下也有一个开发板管理器。但与库不同的是,开发板管理器需要知道在哪里查找新的开发板信息。
例如,如果您想安装ESP开发板,您需要先将该ESP开发板的URL粘贴到Arduino首选项的这个字段中。然后打开开发板管理器,您将在列表中看到它们。您可以通过在这个字段中用逗号分隔来添加多个开发板管理器的URL。有时兼容的开发板还需要安装驱动程序,因此,请务必在准备使用新开发板时仔细阅读文档。
无论您是新手还是经验丰富的工程师,Arduino都为您提供丰富的资源和灵感。希望能通过这些代码库,可以让您轻松实现创意,开启无限的可能性。让我们继续一起探索Arduino的世界,创造出令人惊叹的项目吧!
看完视频想提问?或者有使用Auduino的经验想分享?欢迎点击以下按钮↓↓↓
我要到技术论坛一起讨论
关于本系列视频
电子设计博大精深,对于初学者来说,有一定的难度。本系列视频旨在介绍一些入门级的技术和技巧,包括电路设计基础知识、简单编程等,让初学者从基础开始,再一步步向更进阶出发,在电子设计的世界里,发掘更多乐趣,同时也可以让电子设计爱好者温故知新。
关于Becky Stern
Becky Stern是一名创客,拥有多年设计电子项目的经验,创作和分享是她两大爱好。在独立创业之前,她曾担任 Instructables (Autodesk) 的产品经理、Adafruit 的可穿戴电子产品总监等。她的作品曾被 BBC、CNN、Business Insider、Forbes 和 Science Friday 等知名媒体报道过。她创建了数百个关于技术和手工制作的在线DIY教程和视频,旨在分享她的知识,帮助同是电子设计爱好者的同路人学习,相互交流。
喜欢【与Becky入门电子世界】系列视频吗?请关注订阅并点赞、收藏和分享,敬请留意下一期的播放!
相关产品:
Arduino
A000066
ARDUINO UNO R3 ATMEGA328P 开发板
Adafruit
2488
METRO ATMEGA328评估板
SparkFun
DEV-15123
REDBOARD QWIIC ATMEGA328评估板
Seeed Technology
102010026
SEEEDUINO V4.3 ATMEGA328P开发板
DFRobot
FIT0096
无焊面包板
Adafruit
1957
跳线
Adafruit
1311
实心连接线
Adafruit
2541
可寻址照明 Neopixel 60 LED 灯条
小编的话
掌握Arduino基本输入/输出的方法使设计者能够构建交互式、响应式的系统原型,从而更直观地理解和测试设计概念,并有助于设计者优化原型的功能和性能,提升原型的用户体验,也为原型的后续开发和迭代提供了坚实的基础。看了本期内容,您有哪些想法或疑问?欢迎留言,分享交流!