Arduino调试过程中,会出现一些匪夷所思的问题,表面上看来是闹鬼,其实都各有原因,只不过原因隐藏得比较隐秘。比如:

  • 用UNO调试一个电路,当单独挂载一个SSD1306的IIC屏时,使用例程和自己的程序都正常,但一旦放到一个有三个IIC器件的系统中就始终无法编译通过,想过可能是地址的问题,但查下来地址都不重复,最后发现是通常用的SSD1306库文件消耗内存太大,UNO这样的内存有限的MCU当只运行这个库时没有问题,一旦加载的库多了,内存就不够分,体现在在编译显示分配失败。解决办法是找一个内存消耗小的库,或者换成MEGA2560,显然前者更有可行性。
  • 一个串口屏的应用,接收到信息后报警,用一个按钮中止报警修改报警背景颜色,结果程序编译完成后其他功能都正常,唯独串口屏无法显示设定的初始界面,总是一晃就变成空数据界面,怎么调整程序都不行,最后发现是按钮对应的IO口异常,虽然软件做了上拉,但高电平时只有2V,造成进入LOOP循环后程序认为按钮已经被按下,串口屏自动显示报警中止后设定的画面,此时又没有数据,只能显示一个空数据画面,换一个IO口就一切正常了。
  • Arduino里将时间戳转换为正常的日期和时间格式,网上的Arduino time库现在的IDE用不了,试验了安装time库可以进行转换,然而转换出来的日期和时间始终不对,最后发现这个库的转换功能只能用于转换10位的时间戳,如果你用的是13位的时间戳,那必然不对,需要先将13位的时间戳截取为10位,才能正确转换。

标签: none

添加新评论