好几年没写东西了,发现以前写的东西不堪入目,算了,重新开启新的记录吧~从1开始
网上很多教程都写了怎么配置vscode去编写arduino代码,但是真正到了编译的地步,会有一大堆的error,特此记录:
1.编译时,输出窗口乱码问题
别人的情况,我不知道,我通过修改windows时区下面有个UTF8 beta的勾勾上了,就好了,网上也有教程,蛮详细的
2.vscode中要编写arduino,必须要安装c++的扩展模块(原生arduino ide也需要安装好)
但是这个扩展模块是从github上下载的release,国内的gitee起不了作用,网上给的其他的临时性的下载工具也没用,最后我是用的github镜像站下载下来的,引用博客地址 github加速 - 旧时繁华,截个图,防止源以后失效了~
3.includePath等配置
在vscode中编写arduino的代码,会因为没有配置includePath而无法找到相关头文件(.h),需要在配置中配置。
网上的配置都是说要么修改CPP的全局配置,要么手动添加各种地址引用,但毕竟每个人的情况不一样,而且初次编写arduino的人也根本不明白这些本地地址去哪里找,再就是如果你不熟悉arduino的环境,那么你自己通过文件查找出来的那些地址,你配上去了,你会发现F12的找引用将会变得非常困难,因为相同名称的库文件太多了,你根本不知道你应该看哪个,用猜?
就我的情况,我说下:
在跟着网上把arduino的配置都搞定后,首先创建一个文件夹,然后用arduino ide在这个文件夹下面建一个ino的工程文件,然后在vscode中打开这个文件夹。
然后你会发现vscode在左边的工作区下面有一个子项,就是各种arduino ide自带的例子
重点来了,随便找个例子,双击一下,vscode会重新打开一个窗口,随即会对你打开的例子自动进行编译,编译结束后,例子的工程下面会有 c_cpp_properties.json被自动创建出来,里面包含了你的电脑上arduino相关环境的一些默认配置,而这些配置应该是arduino扩展插件自动配置的,拿来用吧,不用再自己辛苦的去找路径了~
另外,c_cpp_properties.json中的路径是可以有**来标识递归查找子目录,比如我改了下目录(下图),这样,我就不用再把esp8266下面的其他子目录也事无巨细的都写上去了~
4.其他
网上都在说arduino使用的是标准C,害的我一度以为只能过程化编程~~后来翻看了下arduino的库文件才发现原来是用的C++(直到刚刚才从c_cpp_properties.json中确认了确实是C++),那方便了~
arduino官网上的有些API,并不一定适合你的板子,比如我用的nodemcu,就不响应串口回调,最后我自己写了个回调~
vscode中似乎没有串口调试功能,只能看输出(没验证),不能输入(咋试都不行),所以用vscode编译和烧录,用arduino ide来串口调试吧,并不冲突。
接触arduino才两天,后面有啥了,再补充吧~
--------2021-12-25--------------------
固件是啥?对于初次接触单片机编程的我来说,到处都查不到固件的解释,能查到的也都是固件怎么烧录。反正就我个人看到的文档来猜,固件应该算是一种可以烧录到mcu中的库,用于完成一些编码上的扩展,类似于API之类的。至于我用的nodemcu的话,好像烧了固件之后,可以用lua了,但网上C++的教程更多,而且可以直接翻找.h,很方便,所以还是算了,不要这个固件了~
网上不少教程教pin序号的时候,不一定跟你的板子对的上,咋办?就nodemcu而言,板子上有pin脚名称,比如D2,那么写个#define test D2,然后在D2上F12,找到.h,能看到关于8266板子的一些规范的pin脚的序号,不用愁了~其实直接用D2之类的也行~
直流电机实验的坑,如果照着网上的案例来做实验,除非你的板子是5V输出的,要不然大概率怎么试都无效,或者直流电机干脆只响不转,为啥?因为网上的案例并没有解释L298N还细分了三种型号的!!红色、绿色、蓝色!(而我买的套件,拿到的是个黑色的,估计是定制版)而且百度都搜不到区别,咋办?淘宝或者京东去看商品介绍,你会发现原来红色板子的逻辑控制输入电压在4.5~5.5V之间,不幸的是,我用的nocdemcu,理论输出电压只有3.3V(万用表没到货,只能猜),所以只能用绿色型号的,因为绿色型号的支持更低的电压(当然也更贵),至于蓝色的,我没看出来与绿色多大区别,但是贵了10块钱,所以还是用绿色好了~另外,有几个作者,不知你是故意误导,还是你命好,你用nodemcu加红色L298N做3V直流电机的实验,你能成功?而且还有接线照片?别误导人好吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)