arduino代码_纯纯小白开发arduino--我的调试经验

8735416576c5f96b9de086024d1a7c6b.png

arduino 是什么我就不做介绍了。这里的小白并不是说我没有嵌入式开发经验而是说从来没有实际开发过arduino。虽然它在世界范围内都很流行,可是不知为何国内专业做嵌入式开发的人对它大多都嗤之以鼻。

我对arduino的想法是:”不管黑猫白猫,抓到老鼠就是好猫!“。只要能够完成功能就可以。

言归正传:

在网上买了一块ttgo生产的 ESP32墨水屏开发板 。从github下载资料,发现它们提供的源码是arduino的,没有c语言版本的。而我又比较着急的看效果所以就硬着头皮开始编写arduino的代码了。

https://github.com/zhengzixin/T5-Ink-Screen-Series

下面是我的调试过程,希望对那些刚刚接触arduino的人有所帮助。

  1. 语法

在网查看了基本语法,最主要的就是两点:配置在setup(),主循环在loop()函数中,支持回调函数。类似单片机的main函数。

2. arduino IDE

语法看完之后就是下载IDE,在arduino官网下载了IDE,按照教程的提示将代码中库复制到arduinoIDE的库目录中,可是总提示我库不能用

662637516f992b83d5214aa9442246e0.png

虽然没用过,但是分析应该是名字的问题,于是修改了文件名,成功解决了这个问题。

教程又让我下载esp32fs软件,之前不明其意,觉得是和webserver相关的,也又没有管,这也为之后留下了隐患。

a4017127878327e9530fbfc9a430d11e.png

用arduino编译器打开工程,发现不能编译,不知道到为什么,后来发现教程上说还支持platformIO开发,于是果断放弃使用arduino编译器。

platformIO 是VScode中的一个插件,支持很多种开发板。

3.编译&调试

使用platformIO编辑就简单多了,打开源码,在ini文件中修改串口,直接编译就可以了。可是又出现问题了。

(1) 错误1

在程序执行的时候发现报错:

”Please use Arduino ESP32 Sketch data Upload files“,

这突然让我想到了没有按照教程执行安装“esp32fs”软件这一步,果断回头安装,虽然到目前为止也不知道这个软件是干什么的。

47e0743f0d0624749f4105bfa2522744.png

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

d1150c1f6cae94c774b997acc7eef8bd.png

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

1312fb245aa2e7f9a682a45d93e40b84.png

点击esp sketch data upload ,也能成功执行了,之前代码编译不过去的问题也解决了。

(2)错误2

回到platformIO中,继续调试程序,发现虽然代码是成功执行了但是并没有如期的显示教程中的效果没有显示出图片来,还是有问题。

只能回头分析代码,

72f8bb4e70d1f036d2b7f9c04e489ca6.png

从代码中分析可以知道,应该是调用了某一个文件系统中的open函数打开filename文件。此时filename = "/avatar.bmp"。

文件系统肯定是需要存储介质的,而此时开发板上并没有SD卡,所以分析这个文件系统应该使用esp32 内部的spiflash,看到这里突然意识到“esp sketch”是干什么的了。这个工具的作用应该就是将数据烧录到spiflash中。

想到这里回头查看espfs的说明

https://github.com/me-no-dev/arduino-esp32fs-plugin​github.com

在第一句就写了它的作用了,而我还绕了一大圈子才想到,真是为我的智商捉急啊。

44d9b03f465f60a4d340a46151768b95.png

按照usage,将所要显示的图片复制到esp32工程中的data文件夹下,执行esp sketch data upload ,成功烧录。

回到platformIO中,重新烧录程序,查看现象。

成功!!!

f2ca3b7a43a119f4fd269edf127527e1.png

总结:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重要的ui组件——Behavior

v7包下的组件类似CoordinatorLayout推出也有一段时间了,大家使用的时候应该会体会到其中很多的便利,今天这篇文章带大家来了解一个比较重要的ui组件——Behavior。从字面意思上就可以看出它的作用,就是用来规定某些组件的行为的,那…

Spark的基本架构

http://ihoge.cn/2018/IntroductionToSpark.html Spark的基本架构 当单机没有足够的能力和资源来执行大量信息的计算(或者低延迟计算),这时就需要一个集群或一组机器将许多机器的资源集中在一起,使我们可以使用全部累积的在一起…

简析TCP的三次握手与四次分手

TCP是什么? 具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础&am…

for循环延时_前端中的事件循环eventloop机制

我们知道 js 是单线程执行的,那么异步的代码 js 是怎么处理的呢?例如下面的代码是如何进行输出的:console.log(1);setTimeout(function() { console.log(2);}, 0);new Promise(function(resolve) { console.log(3); resolve(Date.no…

androidActivity生命周期

Activity生命周期Activity是一个用来提供用户交互界面的组件,它是四大组件之一,对于我们刚刚学习android的菜鸟来说是非常重要的,我们可以将一个屏幕理解为一个Activity,Activity通常是一个全屏的界面,每一个应用程序可…

Autofac实现有条件的DI

Autofac.Annotation框架是我用.netcore写的一个DI框架,基于Autofac参考 Spring注解方式所有容器的注册和装配,切面,拦截器等都是依赖标签来完成。开源地址:https://github.com/yuzd/Autofac.Annotation本期讲的是最新实现的功能有条件的DI有些时候我们想…

公众平台关注用户达到5万即可开通流量主功能 可以推广APP应用

今天微信公众平台发布发布了一些更新,公众帐号的关注用户达到5万,即可开通流量主功能,之前的是要求10万粉丝,这是一个微信开放的信号。广告主可推广苹果商店应用或腾讯开放平台应用。新增卡片和图文广告规格。以下是微信团队的公告…

二进制全排列 java_排列组合算法真厉害,傻瓜都能学会

作者:枕边书来源:https://zhenbianshu.github.io/2019/01/charming_alg_permutation_and_combination.html需求最近工作中碰到一个需求:我们的数据表有多个维度,任意多个维度组合后进行 group by 可能会产生一些”奇妙”的反应&am…

Spark ML - 聚类算法

http://ihoge.cn/2018/ML2.html Spark ML - 聚类算法 1.KMeans快速聚类 首先到UR需要的包: import org.apache.spark.ml.clustering.{KMeans,KMeansModel} import org.apache.spark.ml.linalg.Vectors 开启RDD的隐式转换: import spark.implicits.…

twitter storm源码走读(五)

TridentTopology创建过程详解 从用户层面来看TridentTopology,有两个重要的概念一是Stream,另一个是作用于Stream上的各种Operation。在实现层面来看,无论是stream,还是后续的operation都会转变成为各个Node,这些Node之间的关系通…

C语言宏使用常见问题

代码&#xff1a; #include<stdio.h> #define MAX(a,b) a>b?a:b #define MIN(a,b) a>b?b:a //#define M (xY) #define M1(m) m*m #define M2(m) (m)*(m) #define M3(m) ((m)*(m)) int main(){int x,y,max,min;printf("Input one numbers:");int sum, m…

ad域管理与维护_AD域管理员账号下发

大家好&#xff0c;最近比较忙&#xff0c;好久没发文章了&#xff0c;这次继续讲AD域的相关内容。AD域运行在Windows Server服务器&#xff0c;用于集中管理网内的所有Windows客户端主机&#xff0c;其中最重要的管理手段便是「域组策略」&#xff0c;可管理的条目非常多&…

java中main函数解析

作者&#xff1a;xwdreamer出处&#xff1a;http://www.cnblogs.com/xwdreamer欢迎任何形式的转载&#xff0c;但请务必注明出处。从写java至今&#xff0c;写的最多的可能就是主函数 public static void main(String[] args) {} 但是以前一直都没有问自己&#xff0c;为什么要…

逻辑回归算法原理

http://ihoge.cn/2018/LR.html 逻辑回归模型 逻辑回归也被称为对数几率回归&#xff0c;算法名虽然叫做逻辑回归&#xff0c;但是该算法是分类算法&#xff0c;个人认为这是因为逻辑回归用了和回归类似的方法来解决了分类问题。 逻辑回归模型是一种分类模型&#xff0c;用条…

.net core入门之web应用

2019独角兽企业重金招聘Python工程师标准>>> 其实铺垫了那么久&#xff0c;终于到重点了&#xff0c;迫不及待了吧&#xff0c;那么我们用重量级工具Visual Studio 2015&#xff0c;安装Update3&#xff0c; 安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2.exe&…