作者:Becky Stern
关键词:电路设计, 开发工具, 编程, 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,理论上可以形成任何颜色的光。但是,生成纯白色对于RGB led来说有难度,产生的光的色调不准或混合质量不佳等问题常常令用户失望。
因此,还有一种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 项目从想法转化为代码。基本上,您可以使用库示例代码让每个单独的输入和输出都正常工作,然后可以提取其他示例代码中的片段逐步构建一个新的程序。
在您学习使用 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 ARDUINO UNO R3 ATMEGA328P 开发板 |
Adafruit METRO ATMEGA328评估板 |
SparkFun
REDBOARD QWIIC ATMEGA328评估板 |
Seeed Technology
SEEEDUINO V4.3 ATMEGA328P开发板 |
DFRobot 无焊面包板 |
Adafruit 跳线 |
Adafruit 实心连接线 |
Adafruit 可寻址照明 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”或“得捷电子”
关注我们官方微信
并登记成会员,
每周接收工程师秘技,
赚积分、换礼品、享福利