
arduino 是什么我就不做介绍了。这里的小白并不是说我没有嵌入式开发经验而是说从来没有实际开发过arduino。虽然它在世界范围内都很流行,可是不知为何国内专业做嵌入式开发的人对它大多都嗤之以鼻。
我对arduino的想法是:”不管黑猫白猫,抓到老鼠就是好猫!“。只要能够完成功能就可以。
言归正传:
在网上买了一块ttgo生产的 ESP32墨水屏开发板 。从github下载资料,发现它们提供的源码是arduino的,没有c语言版本的。而我又比较着急的看效果所以就硬着头皮开始编写arduino的代码了。
https://github.com/zhengzixin/T5-Ink-Screen-Series
下面是我的调试过程,希望对那些刚刚接触arduino的人有所帮助。
- 语法
在网查看了基本语法,最主要的就是两点:配置在setup(),主循环在loop()函数中,支持回调函数。类似单片机的main函数。
2. arduino IDE
语法看完之后就是下载IDE,在arduino官网下载了IDE,按照教程的提示将代码中库复制到arduinoIDE的库目录中,可是总提示我库不能用

虽然没用过,但是分析应该是名字的问题,于是修改了文件名,成功解决了这个问题。
教程又让我下载esp32fs软件,之前不明其意,觉得是和webserver相关的,也又没有管,这也为之后留下了隐患。

用arduino编译器打开工程,发现不能编译,不知道到为什么,后来发现教程上说还支持platformIO开发,于是果断放弃使用arduino编译器。
platformIO 是VScode中的一个插件,支持很多种开发板。
3.编译&调试
使用platformIO编辑就简单多了,打开源码,在ini文件中修改串口,直接编译就可以了。可是又出现问题了。
(1) 错误1
在程序执行的时候发现报错:
”Please use Arduino ESP32 Sketch data Upload files“,
这突然让我想到了没有按照教程执行安装“esp32fs”软件这一步,果断回头安装,虽然到目前为止也不知道这个软件是干什么的。

点击ESP32 SKetch ,发现报错,avr 不支持spiffs,猜测应该是因为编译器不认识esp32开发板,就在某度上搜索安装方法。

安装成功后发现,发现在arduino编译器上可以选择esp32开发板了

点击esp sketch data upload ,也能成功执行了,之前代码编译不过去的问题也解决了。
(2)错误2
回到platformIO中,继续调试程序,发现虽然代码是成功执行了但是并没有如期的显示教程中的效果没有显示出图片来,还是有问题。
只能回头分析代码,

从代码中分析可以知道,应该是调用了某一个文件系统中的open函数打开filename文件。此时filename = "/avatar.bmp"。
文件系统肯定是需要存储介质的,而此时开发板上并没有SD卡,所以分析这个文件系统应该使用esp32 内部的spiflash,看到这里突然意识到“esp sketch”是干什么的了。这个工具的作用应该就是将数据烧录到spiflash中。
想到这里回头查看espfs的说明
https://github.com/me-no-dev/arduino-esp32fs-plugingithub.com在第一句就写了它的作用了,而我还绕了一大圈子才想到,真是为我的智商捉急啊。

按照usage,将所要显示的图片复制到esp32工程中的data文件夹下,执行esp sketch data upload ,成功烧录。
回到platformIO中,重新烧录程序,查看现象。
成功!!!

总结:
arduino确实非常简单,你所能想到的大部分功能在网上都能查到,而它的语法又特别简单,特别容易上手,对于那些不需要特别优化性能和实现特别复杂的功能的产品来说已经足够了。