新闻  |   论坛  |   博客  |   在线研讨会
使用Arduino开发板时的最常见错误
utmel | 2023-05-23 10:03:45    阅读:12518   发布文章

  众所周知,Arduino开发板是一款便捷灵活、方便上手的开源电子原型平台,它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境,因此应用比较广泛。但在使用过程中容易出现一些错误,下面一起来看看:

Arduino开发板.jpg

图1: Arduino开发板

  1.无法识别Arduino开发板

  这是指计算机无法识别连接到计算机的Arduino开发板的情况。发生这种情况时,该板通常不会列在Arduino IDE的端口列表下,有时会在设备管理器下标记为USB2.0。

无法识别Arduino板.jpg

图2: 无法识别Arduino板

  解决方案

  当使用某些使用CH340g USB 到串行转换器芯片,而不是FTDI (FT232RL) 和标准Arduino开发板使用的其他芯片的廉价Arduino 克隆时,就会发生这种情况。标准Arduino开发板使用的USB转串行芯片驱动程序始终与Arduino IDE 安装文件一起打包,因此当安装IDE时,驱动程序会自动安装到PC上。为了能够使用这个基于CH340g USB 到串行转换器的Arduino开发板,必须下载并安装该芯片的驱动程序。可以从此链接下载驱动程序,安装它就像单击下面显示的安装界面上的安装按钮一样简单。

Arduino开发板上连接的端口.jpg

图3: Arduino开发板上连接的端口

  完成此操作后,现在应该能够在Arduino IDE上找到板所连接的端口。

  2. 板子不同步

  通常,发生这种情况时,将无法将代码(尽管IDE有时会显示“已上传”)上传到Arduino开发板,并且IDE将显示错误代码;“ avrdude:stk500_getsync():不同步:resp=0x00 ”。

  解决方案

  不同步:RESP = 0×00是翻译为“一个通用响应的Atmega芯片不工作的Arduino的”。当这种情况发生时,有很多事情可能是错误的。以下是可用于清除此错误的一些步骤。

  ①确保Arduino(包括屏蔽)上的数字引脚0和1没有任何连接。

  ②确保在工具菜单下选择了正确的通讯端口和板卡。

  ③按Arduino上的重置按钮几次并重新上传代码。

  ④断开Arduino与PC的连接并重新连接。

  ⑤重启Arduino IDE。

  如果其中任何一个不起作用,可能是时候尝试在PC上使用不同的Arduino开发板,或者在另一台PC上使用“有故障”的Arduino开发板。如果发现问题出在PC上,请重新安装Arduino IDE。但是,如果“有故障”的Arduino开发板是问题的根源,最终的解决方案是使用Arduino固件刷新板。如果上述方法均无效,则可能是需要更换Arduino开发板了。

  3. 代码在电源复位时不启动

  这指的是Arduino在通电时不运行上传到它的草图的情况,并且在大多数情况下,只是恢复到与引导加载程序关联的闪烁草图。

  解决方案

  就像处理的其他问题一样,有很多因素可能会导致这种情况。

  如果开发板死机并且什么也不做,应该检查代码以确保没有在它出现时向开发板发送串行数据。当Arduino打开时,引导加载程序在最初的几秒钟内侦听计算机向它发送一个新的草图以上传到电路板。如果没有收到新的草图,不久后,引导加载程序将超时并运行上传到板上的最后一个草图。如果代码在前几分钟发送串行数据,则引导加载程序不会超时,并且上载到板上的最后一个草图也不会启动。

  如果在开发板一启动就发送串行数据是项目的重要组成部分,可能需要找到一种方法来给它一些延迟,以阻止串行数据在Arduino启动时立即到达。如果进行调整会影响项目要执行的任务,那么可能必须使用外部编程器将草图上传到电路板,因为引导加载程序可以被它们绕过。

  如果电路板没有死机但返回到Arduino闪烁草图(引脚13上的LED 时不时闪烁),一个简单的解决方法是使用Arduino引导加载程序刷新开发板,因为开发板上的引导加载程序可能已损坏.

  4. 无效的设备签名错误

  当尝试将代码上传到与在Arduino IDE 上的工具>开发板列表下选择的开发板不同的开发板时,会显示此错误。发生此错误的原因通常是目标板上的设备签名与IDE上选择的板的签名不同。

无效的设备签名错误.jpg

图4: 无效的设备签名错误

  解决方案

  解决此错误的方法很简单,只需确保在Arduino IDE 上选择正确的开发板即可。如果这不起作用,则可能需要使用最新版本的Arduino引导加载程序刷新微控制器。

  5. Launch4j 错误

  Arduino IDE 在加载之前和加载时有时需要一段时间,如果单击任何内容,它将显示Launch4J 错误,如上所示。Launch4j是一种用于将Java应用程序(jar)包装在Windows本机可执行文件中的工具,允许它们用作常规的Windows程序。

  Arduino IDE本身是用JAVA编写的,此错误是由于Arduino IDE 提供的Java运行时环境(JRE) 库的不兼容而发生的。

Launch4j错误.jpg

图5: Launch4j错误

  解决方案

  根据经验,可以通过关闭PC的蓝牙或WiFi连接这样简单的方法来清除此错误。但是,更完整和永久的解决方案是用最新版本替换Arduino包中的JRE。

  6. 串口已使用

  这可能是最容易解决的错误之一。当您在串行监视器打开时尝试将代码上传到Arduino 时(如果使用最新的IDE 版本,这不再是问题),或者当尝试在Arduino与其他软件或设备通信时启动串行监视器时,通常会发生这种情况通过串口。本质上,当尝试将Arduino串行端口同时用于两个不同的事情时,就会发生这种情况。

串口已使用.jpg

图6: 串口已使用

  解决方案

  就像IDE建议的那样,关闭可能使用com端口的所有其他软件/工具(包括串行监视器/绘图仪)。如果不确定特定软件,请拔下Arduino。当将其插回时,它应该已准备就绪。

  7.Sketch上传成功但没有任何反应

  此错误类似于上面已经处理的一些其他错误。对于此错误,Arduino IDE 会提示代码已成功上传,但开发板什么也不做。

  解决方案

  确保在IDE中选择的板与目标板相同。这可能是草图尺寸大于电路板容量的结果。检查草图尺寸并使用上面提到的一些方法来减小尺寸。最后,当使用嘈杂的电源时,可能会发生此错误。确保电源足够稳定。

  8. 不满意链接错误

  这可能是进入此列表的唯一罕见错误。当PC上有旧版本的通信库时会发生这种情况,很可能来自以前的安装。

  解决方案

  要解决此错误,请在/System/Library/Frameworks/JavaVM.framework/或PC的CLASSPATH或PATH环境变量的目录中搜索 comm.jar 或 jcl.jar 。

  9. 草图太大

  当代码大于该特定Arduino开发板的闪存时,会发生此错误。例如,Arduino Uno的闪存大小为32Kb,其中2KB已被Arduino引导加载程序使用。如果您应该上传大小大于32Kb的代码,Arduino将显示此警告。

草图太大.jpg

图7: 草图太大

  解决方案

  如上所述,当您的草图大于您正在使用的特定开发板的闪存时,就会发生这种情况,因此,要解决此问题,必须找到减少代码占用空间量的方法。实现这一目标的一些技巧包括:

  ①在可能的情况下,使用整数数据类型代替浮点数。

  ②在声明变量时,尽可能使用“const”限定符。

  ③仅包含必要的库。在可能的情况下,使用最重要的库的轻量级版本。

  ④一般改进代码。开发有助于使您的代码更短且通常更轻量级的算法。

  ⑤一个更激进的解决方案是将项目转移到另一个板子上,比如 Arduino Mega,与 Uno 相比,它具有更大的闪存。

  10.java.lang.StackOverflowError

  在处理草图时,Arduino使用一些正则表达式进行处理,有时会在遇到某些与字符串相关的错误(例如缺少引号)时感到困惑。

  解决方案

  通过再次查看代码,尤其是使用字符串序列的部分,可以解决此错误。确保引号完整,正确使用反斜杠等。

  结语

  以上就是使用Arduino开发板时的最常见错误介绍了。由于Arduino开发板的种种优势,越来越多的专业硬件开发者已经或开始使用Arduino来开发他们的项目、产品;并且越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域;连大学课题,自动化、软件,甚至艺术专业,也纷纷开展了Arduino相关课程。

关注公众号“优特美尔商城”,获取更多电子元器件知识、电路讲解、型号资料、电子资讯,欢迎留言讨论。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客