【单片机】基于Arduino cli和VS Code配置开发环境,彻底抛弃Arduino IDE

文章目录

  • 0 前言
  • 1 VS Code的优势和Arduino IDE的劣势
  • 2 前期准备
  • 3 Arduino cli
    • 3.1 Arduino cli是什么
    • 3.2 下载与安装
    • 3.3 基本使用
    • 3.4 开发环境配置
  • 4 VS Code配置
  • 5 参考链接

0 前言

  之前有在电脑上基于VS Code配置Arduino环境,大致方法就是在安装Arduino IDE的前提下在VS Code上下载一个插件并配置好Arduino IDE的路径即可,总的来说还是非常简单的。但是今天按照记忆中的方法配置的时候出现了一个弹窗:

在这里插入图片描述

经过反复试验,发现如果要像以前一样基于Arduino IDE来配置的话,只能忽略掉这个设置,不能点击“Use bundled arduino-cli”,否则会出问题。

  本来这个问题差不多就解决了,但是可恶的是这个弹出每次刷新窗口都会弹出来,特别讨厌。于是花了一点时间,把和arduino-cli的相关资料都仔细看了一遍,惊讶地发现这个arduino-cli特别牛逼!配置开发环境只需要它就足够了,可以完全不依赖Arduino IDE的!,这篇教程简单介绍如何在VS Code中基于arduino-cli来配置Arduino框架开发环境

网上也有一些类似的教程,但不够细致和明确,这里从原理出发,总结一篇比较细致的教程,内容较多,请耐心观看。

1 VS Code的优势和Arduino IDE的劣势

  如果是使用Arduino IDE,只需要去官网下载,然后无脑安装即可,非常简单。但使用VS Code,却需要相对麻烦的配置。但付出总是有回报的,这里简单聊聊VS Code的优势和Arduino IDE的劣势。

先看看收益再决定要不要花时间。

  • VS Code界面比Arduino IDE好看,这个毋庸置疑
  • VS Code可以溯源代码,这个对于理解第三方库来说要方便不少
  • VS Code智能提示(IntelliSence)让码代码工作量大减

2 前期准备

  • 已有VSCode并懂其基本工作原理,会基本使用
  • 不用下载Arduino IDE,如果下载了,完全可以卸载。

3 Arduino cli

3.1 Arduino cli是什么

  首先我们先来了解这个cli是什么东西。所谓cli,即Command Line Interface,是与gui(Graphic User Interface)相对,即使用命令行来实现图形界面点击按钮可完成的功能。它是官方在2018年发布的一个集成的工具,把和Arduino相关的嵌入式开发过程,如编译和下载,管理库和板子SDK等都集成到这一个工具当中。(当然,它本身是不具有编译和下载的功能的,只是调用其他工具来进行操作)这样可以实现只用这一个工具就能构建整个项目,功能非常强大。
  而且这个工具是跨平台的,并且可以很方便地集成到各种流行的编辑器中,如VS Code和Eclipse等

有兴趣的可以看看官网给出的介绍

3.2 下载与安装

  Arduino cli这个工具更新非常快,基本几天一个版本,所以建议去官方GitHub下载:https://github.com/arduino/arduino-cli/releases

  Arduino cli是单个执行文件,可以下载压缩包然后放在电脑中的某个位置。但这里建议下载后缀为.msi的文件,这样在安装时会自动将安装路径添加到环境变量,比较省事。

在这里插入图片描述

安装好之后检验一下是否安装成功:

arduino-cli -h #or --help

在这里插入图片描述

如果没出现报错就证明安装成功了。

上图画红色下划线的是比较重要的指令,后面会用到

3.3 基本使用

  这里简单介绍两个使用技巧。

  • 快速查询帮助指令
    如果不知道某个命令后面有哪些“子命令”,就可以通过--help-h来查询命令的使用。或者直接不输入任何参数,默认也是打开帮助文档。如直接输入arduino-cli也会打开帮助文档

  • Tab补全设置
    这个是官方提供的一个Tab补全的操作,可以支持所有命令和参数的补全,这样在输入命令时更方便一点,前提貌似是安装Power Shell7,具体配置教程参考官网。如果不想折腾的可以跳过。

3.4 开发环境配置

  前面提到,arduino-cli是一个集成的工具,它基本囊括了Arduino IDE常用的功能,甚至可以视为就是Arduino IDE的核心,只是缺少编辑器而已。因此,最好是理解Arduino IDE的基本功能,这样差不多可以理解配置的每一步了。

  在配置之前,首先要知道Arduino IDE有哪些目录。

  • 首先是IDE的安装目录,即%ProgramFiles(X86)%\Arduino_1.8.19目录(默认路径)下
  • 然后是开发板SDK目录,每种开发板都有其对应的基础代码,内置库,编译下载工具等,这些文件放在%LocalAppdata%\Arduino15文件夹下
  • 如果在使用过程中,有安装第三方库,那么库文件会放在项目文件夹下,当然,这个在IDE当中也可以自定义:
    在这里插入图片描述

  理解了Arduino IDE的文件夹结构,应该对它的工作原理有了一定认识,接下来就开始使用安装好的arduino-cli来搭建Arduino开发环境。

VS Code部分在后面,这部分可能有点难理解,但不要慌,照着做,做完可能就明白了。

  • 初始化配置
arduino-cli config init  --dest-dir "$env:LOCALAPPDATA\Arduino15"

之所以选择这个文件夹是因为VS Code中的Arduino插件只认这个文件夹下的配置文件,这个后面就理解了

如果要查看配置,可以:

arduino-cli config dump

这本质上是查看上面那个初始化的配置文件。如果默认路径下没有配置文件,那显示的就是内置的默认配置。

  • 修改配置文件(Optional)

  通过查看默认配置可知,库文件和板子SDK文件是不在同一个路径下的,个人觉得很不方便,因此修改一下配置:

arduino-cli config set directories.user "$env:LOCALAPPDATA\Arduino15"

这样配置文件、板子SDK文件和安装的第三方库文件都在一个路径下,如果需要找目标更加明确

  • 下载开发板核心

  也就是前面反复提到的SDK,不同的板子不一样,如果是只开发Arduino,那么只需要安装Arduino的开发套件即可:

# 先更新一下板子列表(core list)
arduino-cli core update-index

# 再下载arduino核心(SDK)
arduino-cli core install arduino:avr

  那如果我还要开发ESP8266和ESP32怎么办呢?还记得在Arduino IDE中是怎么设置的吗?先要添加一个板子的链接,一个json文件,然后再下载并安装,然后板子列表就多出了很多可选的开发板型号。

相信配置过的人都知道,在Arduino IDE中配置时失败概率非常高,往往要点击好几次下载。

  所以这里的重点就是那个packages的json文件,从以往的教程来看,这个链接老是会失效,因此建议还是找相对固定的GitHub链接:

  • ESP8266
  • ESP32

安装指令:

# 先添加额外的链接,按需选择,多个开发板用空格分隔
arduino-cli config set board_manager.additional_urls https://hub.yzuu.cf/esp8266/Arduino/releases/download/3.1.2/package_esp8266com_index.json https://hub.yzuu.cf/espressif/arduino-esp32/releases/download/2.0.7/package_esp32_index.json

# 然后再更新一下链接(实际上就是把上面两个文件下载下来)
arduino-cli core update-index

# 这个时候就可以根据需要下载对应的开发板包了
arduino-cli core install esp32:esp32
arduino-cli core install esp8266:esp8266

第三步如果下载速度太慢,这是因为每个下载包都是从GitHub下载的,这里建议修改一下packages文件,使用镜像网站下载,速度会快不少:

建议使用查找替换,将github.com全部替换成hub.yzuu.cf,然后再执行上面的命令

安装完成之后,可以使用arduino-cli清除缓存文件

# 加上-v可以看到详细输出信息
arduino-cli cache clean -v

到此为止,arduino-cli部分就配置好了,接下来再看看VS Code部分如何配置

4 VS Code配置

  • 首先安装一下Arduino插件,这个毫无疑问

在这里插入图片描述

  我的建议是把“细节”模块仔细看一下,这样可能会对之后的操作更理解一些。这个插件有两个依赖项,即C/C++插件和一个串口的插件,安装的时候应该会自动安装。
  安装好插件之后,如果去看这个插件的安装目录,会发现目录下已默认下载了一个Arduino CLI(就是我们前面安装的Arduino CLI,可能只有版本不一样),而插件的编译下载等功能都是依赖于这个程序实现的。

  理论上来说,已经有了一个执行程序,可以不用自己再安装,但是个人觉得还是需要再安装一遍,主要有两个原因:

  • ①这个文件本身也不大,<30M,下载/复制一遍感觉代价较小;
  • ②为了实现在任意位置都能使用这个程序,最好是将它添加到环境变量,但是由于VS Code插件在更新时目录会更换,一般是时间上改变,这样添加到环境变量意义就不大了。
  • 插件设置
    这个插件的设置非常简单,只需要把那个Use Arduino Cli勾选上即可

在这里插入图片描述

  • 基本使用

  如果开发板的SDK已安装的话,在VS Code中新建.ino文件,然后在底下状态栏选择开发板之后,程序就会自动刷新,并且在当前项目文件夹下创建一个c_cpp_properties.json文件,它设置了对应开发板开发过程中需要使用的编译器,需要包含的库文件等,如果没有出现,可以试着Ctrl Shift P,选择重新加载窗口,多刷新几次。而且如果切换开发板,也是会自动刷新的,这就是VS Code的重要作用,即它帮助你省掉了很多工作,也不需要你自己去手打命令,非常方便。

  • 添加库文件

  如果在程序开发过程中,想要添加第三方库并使用到程序当中怎么办呢?首先要用命令行安装第三方库:

# 查看已安装的库
arduino-cli lib list

# 搜索某个库
arduino-cli lib search <name>

# 安装某个库
arduino-cli lib install <name>

# 升级
arduino-cli lib upgrade

  安装好第三方库之后,可以直接在程序中引用,但是一般会画波浪线,这是因为c_cpp_properties.json文件没刷新的缘故,试试重新加载窗口,差不多就好了,因为每次重新加载窗口,插件都会对打开的ino文件进行验证(Verify)

  • 使用注意事项

    • 要时刻注意右下角的状态栏,即此时的板子型号,串口号,目标文件(不一定是打开的文件)等
    • arduino-cli还是沿用了Arduino IDE的项目文件的概念,因此每次新建一个文件,记得要在外面套一层同名文件夹



  总结来说,其实Arduino插件就是依赖于安装目录下的cli程序,并将它的一些常用功能集成到VS Code界面上的一些按钮,这样大大方便了开发者使用,而前面我们下载安装arduino-cli,更多的是为了不时之需,比如安装第三方库的时候,但实际执行操作的还是VS Code自带的arduino-cli程序。相当于是两个相同的程序读写同一堆文件。

5 参考链接

  • Arduino cli
  • VScode+ArduinoCLI环境搭建
  • Arduino-CLI和VSCode——打造属于自己的Arduino IDE

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux网络

查看网络接口信息 ifconfig mtu 最大传输单元 mtu和mss区别 hostname命令 永久修改 hostnamectl set-hostname 切换shell环境生效 或者vi hostname 编辑完重启生效 查看路由表条目route route查看或设置主机中路由表信息 route -n将路由记录中的地址信息显示为数字形式 …

Linux查看串行端口

查看串口驱动 cat /proc/tty/driver/serial查看串口设备 dmesg | grep ttyS*[rootlocalhost driver]# cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 1: uart:16550A port:000002F8 irq:3 tx:0 rx:0 CTS|DSR|CD 2:…

Hadoop之HBase

文章目录 一、HBase简介二、HBase结构1.1HBase逻辑结构1.2HBase物理结构1.3HBase基础架构 三、HBase安装配置3.1单机模式3.2集群搭建 四、HBase JAVA API 一、HBase简介 《HBase官方文档》的原文地址是&#xff1a;http://hbase.apache.org/book.html W3Cschool.cn进行整理翻译…

上位机:创建WPF应用并使用控件完成控件交互

创建WPF应用并使用控件完成控件交互 1.XAML是WPF技术中专门用于设计UI的语言。 2.优点,XAML是一种声明型语言,只能用来声明一些UI元素、绘制UI和动画,不能在其中加入程序逻辑。实现UI与逻辑的剥离。 下面使用visual studio2019建立一个WPF项目: 进入项目,点击运行,然后…

今天面了个字节跳动拿35K出来的,真是砂纸擦屁股,给我露了一手啊

今年的金三银四已经快要结束了&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0c…

一次小破站JS代码审计出XSS漏洞思路学习

今天看了小破站一个大佬的分析&#xff0c;感觉思路很有意思&#xff0c;感兴趣的xdm可以到大佬视频下提供的链接进行测试&#xff08;传送门&#xff09;这类社交平台的XSS漏洞利用起来其实危害是特别大的&#xff0c;利用XSS能在社交平台上呈现蠕虫式的扩散&#xff0c;大部分…

电脑C盘被格式化 如何快速将被删的数据文件恢复找回?

如今的互联网时代&#xff0c;不管是办公还是休闲&#xff0c;一般都喜欢在电脑上进行操作&#xff0c;尤其是办公&#xff0c;感觉有了电脑能轻松不少&#xff0c;可以将一些工作中的重要数据保存在电脑里面&#xff0c;那么电脑里面的数据真就很安全了吗&#xff1f;这个就让…

c/c++:二维数组,数组的行数和列数求法sizeof,数组初始化不同形式,5个学生,3门功课,求学生总成绩和功课总成绩

c/c&#xff1a;二维数组&#xff0c;数组的行数和列数求法sizeof&#xff0c;数组初始化不同形式&#xff0c;5个学生&#xff0c;3门功课&#xff0c;求学生总成绩和功课总成绩 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#x…

Verilog | 二进制与格雷码

一、格雷码简介 格雷码是一个叫弗兰克格雷的人在 1953 年发明的&#xff0c;最初用于通信。格雷码是一种循环二进制码或者叫作反射二进制码。格雷码的特点是从一个数变为相邻的一个数时&#xff0c;只有一个数据位发生跳变&#xff0c;由于这种特点&#xff0c;就可以避免二进…

HttpServletRespon

1、HttpServletRespon对象 在Servlet API中&#xff0c;定义了一个HttpResponse接口&#xff0c;它继承于ServletResponse接口&#xff0c;专门用于封装HTTP响应消息 HTTP响应消息分为响应状态行、响应消息头、响应消息体三部分&#xff0c;所以HttpResponse接口中定义了向客…

Qt模型视图结构

一.模型视图介绍 1.Model/View(模型/视图结构) 视图(View)是显示和编辑数据的界面组件&#xff0c; 模型(Model)是视图和原始数据之间的接口 2.视图组件有:QListView QTreeView QTableView&#xff0c;QColumnView&#xff0c;QHeaderView 模型组件有:QStringListM…

设计模式-原型模式

原型模式 文章目录 原型模式什么是原型模式为什么要用原型模式原型模式的实现方式浅拷贝深拷贝 如何实现深拷贝递归拷贝对象序列化与反序列化优化浅拷贝与深拷贝 总结 什么是原型模式 如果对象的创建成本比较大&#xff0c;而同一个类的不同对象之间差别不大&#xff08;大部分…

java基于mvc的停车收费系统mysql

系统需要解决的主要问题有&#xff1a; (1)车位管理模块 添加车位、查看车位状态、车位信息查询等。 (2)客户信息管理模块 客户基本信息录入、客户信息查询等。 (3)卡业务办理 添加卡信息、查余额查询、卡充值。 (4)车辆信息管理模块 车牌信息录入等。 (5)收费管理 可以调整相应…

通过工具生成指定 类型 大小 文件

今天给大家介绍一个神器 首先 大家在开发过程中或许经常需要涉及到文件上传类的功能 需要测试文件过大 空文件等等清空 不同大小的文件 而这种文件大小是比较不好控制的 但大家可以下载我的资源 文件生成工具(可生成指定大小 类型文件) 下载下来里面就有一个 fileGeneration…

开发常用的 Linux 命令1(文件和目录)

开发常用的 Linux 命令汇总1&#xff08;文件和目录&#xff09; 作为开发者&#xff0c;Linux是我们必须掌握的操作系统之一。因此&#xff0c;在编写代码和部署应用程序时&#xff0c;熟练使用Linux命令非常重要。这些常用命令不得不会&#xff0c;掌握这些命令&#xff0c;…

干货分享 | 如何在业余时间学习数据分析?

从社会学背景的数分小白到独揽公司市场部的数据分析&#xff0c;和大家简单分享我的数据分析升级打怪之路。 简单说就是两点【培养数据分析思维】【提升数据分析技能】 思维的培养主要靠书籍和课程 以下是一些对我影响较大的书籍&#xff0c;按照【入门、进阶、高阶】简单做了…

Vue2-黑马(十)

目录&#xff1a; &#xff08;1&#xff09;vuex-actions &#xff08;2&#xff09;vuex-调用actions &#xff08;3&#xff09;vue2实战-项目搭建 &#xff08;1&#xff09;vuex-actions 有这么一个需求&#xff0c;绿色的组件从服务器获取数据放入store&#xff0c;主…

图片英文翻译成中文转换器-中文翻译英文软件

您正在准备一份重要的英文资料或文件&#xff0c;但是您还不是很熟练地掌握英文&#xff0c;需要翻译才能完成您的任务吗&#xff1f;哪个软件能够免费把英文文档翻译成中文&#xff1f;让我们带您了解如何使用我们的翻译软件来免费翻译英文文档为中文。 我们的翻译软件是一款功…

grep命令详解(如何匹配多个字符串)(grep指令)(grep -q)

文章目录 20221011 grep如何匹配多个标志&#xff1f;20230412 grep -q&#xff08;Use grep -q instead of comparing output with [ -n .. ].警告&#xff09;20230421 匹配前后空格\s 参考文章&#xff1a;grep命令详解 | grep -c [被搜索文本] # 统计被搜索文本出现的次数…

冯诺依曼体系结构

冯诺依曼体系结构 目录 冯诺依曼体系结构引入1、冯诺依曼体系结构1.1 内存1.2 操作系统预加载 2、操作系统2.1 理解管理2.2 系统调用接口2.3 操作系统四大基本功能 引入 冯诺依曼体系结构&#xff08;von Neumann architecture&#xff09;是现代计算机体系结构的基础&#xf…