在尝试了许多内置可下载的示例,像之前的视频中介绍的那些,然后,你在 Arduino 学习之旅的下一步,就是将示例代码组合起来,制作出你想要的原型。本期将会介绍如何首次构建自己独特的 Arduino 项目。赶快点开来看,让我们一起完成吧!
建议刚开始时可以使用的开发板是 Arduino Uno (1050-1024-ND) 或兼容产品,例如 Adafruit Metro (1528-1214-ND)、Sparkfun Redboard (1568-1977-ND) 或 Seeeduino (102010026-ND)。
要构建本视频中的电路,您需要:
-
Arduino Uno 或兼容产品,以及 USB 线
此外,你可能还需要一些附加组件,这取决于你希望你的 Arduino 项目实现什么功能,以下是这次使用的组件:
弄清楚如何为你的项目编写代码可能会让人感到非常吃力,所以这里会逐步解释每个过程。
首先,写出你项目的主要目的,如果它有很多功能,你需要决定哪些是绝对必要的,哪些功能是 “加分项”,但前期并不需要。后期你还是可以添加你的 “额外功能”,但作为初学者,你应该从最简单的版本开始。
接下来,列出项目的输入和输出,比如一个密码锁可能会有键盘输入、LED 显示输出和电磁铁输出;互联网项目可能会将云服务作为输入、输出或两者皆有。但如果这是你第一次构建 Arduino 项目,我建议将物联网相关的项目留到第二或第三个项目再尝试。
这次要构建的项目是一个网络摄像头隐私保护装置,它使用按钮和实时时钟作为输入,然后通过伺服电机进行输出。
接下来的步骤是编写你程序主循环的大纲,这被称为伪代码,它应该绘制出你在程序中想要的因果关系。
在选择项目的电子元件时,问问自己,每个输入和输出是数字的(“开或关”)、模拟的(“在一个范围内”)或之类,比如需要使用代码库才能工作的伺服电机。
不是所有产品的文档都是一样的,所以对于初学者最佳的建议是购买那些有良好教程和示例代码的组件,例如内置示例中提到的那些,或者来自信誉良好的库的示例代码。找出你项目的每个组件的示例和教程,逐个构建和运行它们,然后再尝试将它们的代码组合在一起。
例如,在我的网络摄像头隐私设备项目中,有一个瞬时按键输入来手动操作设备、一个保持开启状态的电位器用于调整时间,还有一个实时时钟来准确跟踪时间,然后还有伺服电机,所以我有三个输入和一个输出。
因此,我会从内置的 Arduino 示例 DigitalReadSerial 开始,连接我的按钮,然后观察串行输出,以确认我的按钮是否正常工作。
在这个阶段也更容易发现接线错误,因为你正在使用适用于当前组件的代码,而不是同时尝试调试接线和新代码。
然后,我会将电位器添加到我的电路板上,并打开另一个代码示例 AnalogReadSerial,观察串行输出以确认我的旋钮电路。
正如我们在之前的视频中介绍的那样,基本的数字和模拟代码可以与各种不同的传感器一起使用,通常几乎不需要修改。所以,例如,我可以将按钮替换为 PIR 运动传感器,或者将旋钮替换为滑块或压敏电阻器。拥有串行输出可以帮助确定数字逻辑是否需要反转,或将传感器范围映射到适应输出范围。
对于实时时钟,需要下载一个库来与设备通信,安装库后,在示例菜单中可以找到带有示例代码的库。
最后,是时候测试伺服电机了。它需要一个库,而这个库恰好在Arduino软件中预先安装好了。
现在是时候创建一个新的草图,应用使功能正常工作的逻辑,该草图将操作所有的输入和输出。
有时候,一些类似于你想要的功能的示例已经存在,你可以在此基础上进行构建,或者从上一步中运行的任何一个基本测试程序开始。
基本概念是将所有需要的部分添加在一起,比如库的引入和设置等等,然后编写一个根据伪代码中描述的操作执行任务的代码。事实上,将你的伪代码直接粘贴到你的程序中作为注释,是个明智的做法。这样你就能一直以更简单的语言看到你想要做的事情。注释还可以让其他人更容易继续你的工作,即使那个人就是你自己。
在每次重要更改后,你都需要编译你的新程序,就像逐个测试硬件的每个部件一样。频繁编译可以帮助发现和隔离错误,比如放错了分号或大括号。如果你一直在做更改并打算稍后才修复所有错误,那么隔离和修复每个错误将会更加困难。我将在以后的视频中详细介绍错误排除的方法。
当你的程序达到重要的步骤时,切记将你的代码保存到新版本,这有点像在重要的游戏关口存档最新的状态。
随着项目的进展,你可能会改变一些元素,这是完全正常的。当你得到一个良好的基本原型,你就可以开始添加之前写下的加分项功能。
这个逐步构建的过程将使你的项目更容易完成,更重要的是,它将更有趣,更少令人感到沮丧。当然免不了是会有沮丧的时候,那就休息一会儿。所以如果你是学生,不要等到最后一刻才开始动手,用新的视角重新审视代码总可以使代码得到改进。
在完成这些项目后,你将能够更自信地探索 Arduino 的无限可能。无论是简单的创意还是复杂的原型,实践是提升技能的关键。不要忘记分享你的成果和经验,与其他爱好者一起交流和学习。让我们一起加油,开启更多有趣的Arduino之旅!
关于本系列视频
电子设计博大精深,对于初学者来说,有一定的难度。本系列视频旨在介绍一些入门级的技术和技巧,包括电路设计基础知识、简单程序设计等,让初学者从基础开始,再一步步向更进阶出发,在电子设计的世界里,发掘更多乐趣,同时也可以让电子设计爱好者温故知新。
喜欢【与 Becky入门电子世界】系列视频吗?敬请留意下一期的播放!
相关产品:
| Arduino | Adafruit | SparkFun |
| A000066 | 2488 | DEV-15123 |
| Arduino Uno R3 | METRO | REDBOARD QWIIC |
| ATMega328P 开发板 | ATMega328 评估板 | ATMega328 评估板 |
| Seeed | DFRobot | DFRobot |
| 102010026 | FIT0096 | 1449 |
| Seeeduino V4.3 | 无焊面包板 | 伺服电机 |
| ATmega328P 开发板 | ||
| DFRobot | TT Electronics | Adafruit |
| FIT0033 | P160KNP-0EC15A10K | 3013 |
| 伺服电机延长线 | 电位计 | DS3231 实时时钟模块 (RTC) |
| Seeed | DFRobot | Adafruit |
| 102010428 | FIT0624 | 4282 |
| RP2040 微控制器 | 电磁铁 | DS3231 实时时钟(RTC) |
| Same Sky | Adafruit | Adafruit |
| TS14-1212-43-BK-160-SCR-D | 356 | 30-81794 |
| 触摸开关 | 电位计 | 压敏电阻器 |





























