以下文章来源于DigiKey电子技术台,作者BeckyStern
文章概述
本期内容系统梳理了Arduino项目中常见的三大典型问题:代码编译异常、程序上传失败和程序逻辑偏差,并提供了详细的排查步骤与工具使用建议,通过详细的实用的技巧,为Arduino初学者提供了全面的排障指南,帮助他们顺利完成项目并提升技能。
在创建 Arduino 项目时,了解所有可能出错的地方真的很难,无论是布线、代码还是软件设置。不过别担心,本文将为您提供协助!接下来,让我们以侦探的心态,拿出您的万用表,找出问题所在。
一、常见问题概述
在 Arduino 项目开发过程中,您可能会遇到以下三个主要问题:
代码无法编译:点击“验证”按钮时出现编译问题。
无法上传程序:点击“上传”按钮时出现错误,导致无法将程序加载到 Arduino 开发板上。
程序未按预期运行:程序编译和上传成功,但却无法按照预期运行。
二、推荐入门开发板
我们推荐的入门开发板是 Arduino Uno (1050-1024-ND),或者您可以选择一些兼容开发板,例如 Adafruit Metro (1528-1214-ND)、Sparkfun Redboard (1568-1977-ND) 或 Seeeduino (102010026-ND)。在本指南中,我们还将介绍如何安装新的开发板套件,以及如何使用万用表排除接线故障。
三、代码编译异常
您可能遇到的第一个主要问题是点击“验证”按钮时出现编译问题。如果出现问题,您会在草图下方的控制台窗口中看到红色错误信息。第一步始终是仔细阅读错误消息。
(一)语法错误
如果错误信息写着 “expected ‘;’ before ‘}’ token” 或类似内容,这通常意味着有一个括号或花括号放错位置,或者其他语法错误。错误报告会指出问题所在的区域,但也可能指出与问题点相邻或有关联的区域。
您可以将光标移到括号或花括号上,检查强调的部分匹配是否正确,以仔细检查括号或花括号。在编写程序时,意外删除或放错语句的情况非常常见。如果您已保存了上一个阶段的代码,可以打开该文件进行比较,这有助于您找出问题所在。
(二)缺少库
如果错误信息显示 “No such file or directory”,则说明程序缺少一个所需的库。
您可以尝试在库管理器中查找并安装该库。或者,您也可以手动下载并将库文件放入库文件夹中,确保其命名正确。有关 Arduino 库的更多信息,请参阅我们之前发布的关于 Arduino 库的文章。
四、程序上传失败
您可能遇到的第二个问题是点击“上传”按钮时出现错误,导致您无法将程序加载到 Arduino 开发板上。和之前一样,首先要做的是查看错误消息。
(一)板或端口选择错误
如果显示 “can't open device” 或 “programmer is not responding”,则可能是工具菜单中选择的板或端口不正确。
通常情况下,当您拔下电路板插头并重新插上时,Arduino IDE 会忘记您之前选择的端口。
如果这是您第一次使用新开发板,您可能还需要仔细检查是否已安装必要的驱动程序和电路板支持。为此,请阅读产品文档,您可以在其中找到开发板的 URL,然后将其粘贴到 Arduino 偏好设置中。
之后,您可以在电路板管理器中找到您的开发板并安装它。如果一切配置正确,您就可以从菜单中选择合适的板和端口,然后上传代码。
如果您的开发板出现在列表中,则表示已安装电路板支持。选择错误的开发板也会导致编译错误,因为并非所有开发板都具有相同的可编程功能。
如果您的开发板未出现在可用端口中,则可能意味着您缺少软件驱动程序,或者您的 USB 线是充电专用线。请确保您使用的 USB 线是支持数据传输的线缆,仔细检查产品文档以确定是否需要驱动程序,然后尝试使用计算机上的其他 USB 端口。
(二)其他常见问题
在处理技术问题时,有时只需重新启动 Arduino 软件或整个计算机,然后重试即可。这里也可能存在一些不太常见的问题。如果 Arduino 安装在计算机上的错误位置,它的行为就会异常。曾经有学生尝试从 Mac 上的下载文件夹运行该应用程序,结果在权限问题上出现了一些非常模糊的错误信息。
加密狗问题不太常见,但确实会发生。如果您使用的是 USB 适配器并遇到问题,请尝试更换它,最好是使用供电的 USB 集线器,或者更换为无需使用适配器的新线缆,这样就完全不需要适配器了。
五、程序逻辑偏差
您可能遇到的第三个问题是,程序编译和上传成功了,但却无法按照您的预期运行。请仔细检查代码中指定的引脚编号是否与设备连接的引脚编号相同。尤其要仔细检查电源和地线。如果电源和地线短路,计算机会检测到异常电流,并通过切断 USB 端口的电源进行自我保护。您通常会收到有关设备耗电过大的警告。您可能无法再次使用此 USB 端口,直到重新启动计算机。
(一)排除线路故障
要排除线路故障,请确保电路已断开电源,并将万用表设置为通断模式。
将探针触碰应该连接着的两端的其中一端,如果连接成功,您应该会听到万用表发出一声提示音。
您还需要确保所有不该连接的设备都没有连接。用探针接触两端,确保听不到任何提示音。
有时,您的面包板电线可能会在内部不显眼的地方断裂,或者无焊面包板的某个区域弹性不足,导致接触不良,又或者您根本没注意到有东西插错了位置。万用表是检查这些问题的有效方法。
(二)代码调试
在解决了任何编译、上传或接线问题之后,您可能仍需要进行相当多的代码调整,才能让您的电路产生预期的输出效果。您可以在代码的各个部分添加一些 Serial.print() 语句,以查看它们是否正在执行以及执行频率。
六、参考资料与社区支持
Arduino 网站上有一些非常有用的参考资料,即使是经验丰富的开发者也会经常去查找相关资料。不要忽视这些重要资源,请充分利用它们。
语言参考:通过命令组来描述整个编程语言的各个部分,并附有简单的示例来演示每个命令。
错误消息列表:他们还提供了更详尽的错误消息列表及其含义。
社区支持:您可以在 DigiKey 技术论坛中寻找您的问题和错误消息的解决方法,或者在 Arduino 项目中心上查找类似的项目,甚至可以分享您自己的项目。
可点击 “阅读全文” 进入 Arduino 项目中心
在探索Arduino项目的过程中,遇到问题并非失败,而是精进技能的必经之路。本文通过梳理代码编译异常、程序上传失败和程序逻辑偏差三大常见问题,为您排除障碍,顺利完成您的项目。每一次成功的排障都将深化您对Arduino的理解,让创意更稳健地落地成型。
参考视频链接:https://www.digikey.cn/zh/videos/d/digi-key-electronics/arduino-errors-and-troubleshooting-electronics-with-becky-stern-digi-key-electronics
关于本系列视频
电子设计博大精深,对于初学者来说,有一定的难度。本系列视频旨在介绍一些入门级的技术和技巧,包括电路设计基础知识、简单程序设计等,让初学者从基础开始,再一步步向更进阶出发,在电子设计的世界里,发掘更多乐趣,同时也可以让电子设计爱好者温故知新。
关于Becky Stern
Becky Stern是一名创客,拥有多年设计电子项目的经验,创作和分享是她两大爱好。在独立创业之前,她曾担任 Instructables (Autodesk) 的产品经理、Adafruit 的可穿戴电子产品总监等。她的作品曾被 BBC、CNN、Business Insider、Forbes 和 Science Friday 等知名媒体报导过。她创建了数百个关于技术和手工制作的线上DIY教程和视频,旨在分享她的知识,帮助同是电子设计爱好者的同路人学习,以及相互交流。
喜欢【与Becky入门电子世界】系列吗? 请关注订阅并点赞和分享,敬请留意下一期!
相关产品:
小编的话:
对于Arduino初学者而言,本期内容希望能够帮助大家提升对编程基础的认知,培养调试思维,熟悉开发环境与硬件关联,增强故障排查能力,强化逻辑思维训练,以及提高问题分析与解决能力。我们相信,成功解决项目中的问题所带来的成就感,以及在这一过程中积累的实践经验,也将为未来更复杂的项目开发奠定坚实的基础。结合实际经验,您对本期内容有哪些想法?欢迎留言,和DigiKey的朋友们分享交流!
领取专属 10元无门槛券
私享最新 技术干货