如何在Visual Studio代码中使用PlatformIO对Arduino进行编程

原文地址:https://maker.pro/arduino/tutorial/how-to-use-platformio-in-visual-studio-code-to-program-arduino#:~:text=VS%20Code%20also%20has%20a%20variety%20of%20extensions,software%20platforms%20for%20Arduino%2C%20ESP32%2C%20PIC32%2C%20and%20AVR.

了解如何在Visual Studio Code中将PlatformIO添加为扩展,以进一步进行Arduino编程。

趋向

Visual Studio Code(VS Code)是Microsoft流行的集成开发环境(IDE)。这个免费提供的代码编辑器提供了许多高级功能,例如自动完成和Intellisense,这些功能使编程变得更加有趣。VS Code还具有各种可用的扩展,这些扩展增强了其功能,PlatformIO是一种这样的扩展。

PlatformIO是一个跨平台的构建系统,可用于开发Arduino,ESP32,PIC32和AVR的软件平台。PlatformIO可以与VS Code一起使用,以提供一组功能强大的工具来协助您进行开发。本教程向您展示如何为Arduino开发安装VS Code的PlatformIO扩展。

要求

· Windows 10电脑

· Arduino Uno

· Visual Studio Code的安装-《如何设置Visual Studio Code》中对此进行了介绍。

请注意,如果同时安装PlatformIO和Microsoft的Arduino扩展,可能会导致冲突。我建议在开始此过程之前删除Microsoft的Arduino扩展。

设置语言扩展

打开vscode默认的语言是英文,按Ctrl+Shift+P 出现命令行,输入lan,选择configure display language ,继续选择install additional languages,会打开一个语言配置文件,选择中文简体, 点击install进行安装,安装完成后再按 Ctrl+Shift+P 出现命令行,

输入config

选择zh-cn

然后提示重启软件,重启后就是中文了

在VS Code中安装PlatformIO Extension

首先,我们需要安装VS Code并准备好进行Arduino开发。

要安装扩展程序,我们需要打开扩展程序查看器,方法是按“ Ctrl + Shift + X”,然后在搜索栏中键入“ PlatformIO”。这应该返回一个结果,我们只需按红色的安装按钮即可安装,如图2所示。

在这里插入图片描述

图2.安装PlatformIO IDE扩展。

安装PlatformIO可能会花费一些时间,因此请耐心等待!安装后,VS Code需要重新加载才能完成该过程。

重新加载后,我们应该在VS Code的左侧边缘看到PlatformIO图标。

Arduino框架的安装

下一步是将Arduino框架下载到VS Code。单击左侧空白中的PlatformIO图标以显示“快速访问”菜单。选择“ Platforms”,然后选择“ Embedded”,如图3所示。

在这里插入图片描述

图3.嵌入式平台安装页面

单击Atmel AVR将打开其安装页面(图4),单击蓝色的“安装”按钮继续。

在这里插入图片描述

图4. Atmel AVR页面

安装库

PlatformIO具有用于安装第三方库的简单系统,可通过其“快速访问”面板获得该系统。从PlatformIO的菜单中选择“ Libraries”(图5),然后搜索要安装的库。然后单击安装按钮。

在这里插入图片描述

图5.库安装页面

生成并上传眨眼草图

PlatformIO可以自动检测您的Arduino Uno安装在哪个端口。要正常工作,您需要在运行VS Code之前将开发板连接到USB端口。

通过从Platform的快速访问菜单(图6)中选择“ PIO Home”和“ Open”,然后选择“ Project Examples”,我们可以访问Arduino示例的标准集合。

在这里插入图片描述

图6.快速访问项目示例

选择“项目示例”将打开一个列出所有示例的下拉框。选择Arduino-blink和“导入”。VS Code现在应该打开闪烁项目(图7)。

在这里插入图片描述

图7. arduino-blink示例导入

VS Code和PlatformIO的文件夹结构与标准Arduino.ino项目的文件夹结构不同,如图8所示。我们的主要源代码文件称为Blink.cpp,它存储在src文件夹中。

在这里插入图片描述

图8. PlatformIO文件夹结构

最后一步是编辑platformio.ini文件。从文件资源管理器中选择此文件,并将其内容替换为以下内容:

​    [env:uno]

platform = atmelavr
framework = arduino
board = uno

当您打开Arduino项目时,在VS Code的下部蓝色栏中提供了用于构建和上传眨眼草图的便捷快捷方式。只需将鼠标悬停在图标上即可查看其功能(图9)。

在这里插入图片描述

图9. PlatformIO任务栏

要构建我们的项目,请单击“勾号”图标,然后单击箭头图标将其上传到您的开发板上。结果显示在终端中。任务栏上还有一个串行监视器的快捷方式。

编译Marlin

按 Ctrl+Shift+ E打开资源管理器,点打开文件夹,选择解压好的固件 Marlin的文件夹,配置修改完成后,点 PlatformIO IDE 蚂蚁 图标,点project→ tasks→default→mega2560→build all 就自动开始编译了,这个过程看电脑速度,大概5-20分钟左右
显示”终端将被任务重用,按任意键关闭。”就是完成状态了,自己看下有没有报错

在这里插入图片描述

Marlin2.x版本一些基本配置
http://yicai.wicp.vip:83/?p=2280

TMC 2208-9 uart模式Marlin固件修改
http://yicai.wicp.vip:83/?p=2119

在这里插入图片描述

上传

编译完成后,连接主板usb,点upload all即开始上传,显示”终端将被任务重用,按任意键关闭。”就是完成状态了,自己看下有没有报错

在这里插入图片描述

在这里插入图片描述

上传主板一共2种方式

  • SD卡和usb

本案只说USB方式
SD卡方式自己看 参考资料2

参考资料1 用vscode安装marlin2.0
https://www.bilibili.com/video/av57570082
参考资料2mks出的视屏
https://www.bilibili.com/video/av882634511

问题与高级功能

arduino IDE有库管理功能可以,下载到需要的库。这里还要方便,例如我们想使用TimerOne输出PWM,

#include <Arduino.h>
#include <TimerOne.h>

void setup() {
    Timer1.initialize(40);
}

void loop() {
    Timer1.pwm(11, 512);
}

Arduino IDE我们会这样写,然库管理搜索下载TimerOne库,在这里我们只需要在配置文件platformio.ini加上下面一句即可

lib_deps = TimerOne

选择编译按钮编译,我们可以看到输出信息

找到了TimerOne库并下载至.piolibdeps文件夹下

注意点
接上面我们也可以把下载好的TimerOne库直接放置在lib目录下,也就无需添加lib_deps。
我们不想在main里面直接使用TimerOne的pwm,我们想自己写一个motor库,motor库会使用到TimerOne
motor.h

#ifndef TEST_MOTOR_H_
#define TEST_MOTOR_H_

class Motor{
    public:
        void init(unsigned char fre);
        void pwm(unsigned short);
};
#endif

motor.cpp

#include "motor.h"
#include "TimerOne.h"

void Motor::init(unsigned char fre) {
    Timer1.initialize(1000.0/fre);
}
void Motor::pwm(unsigned short val) {
    Timer1.pwm(11,val);
}

main.cpp

#include <Arduino.h>
#include <motor.h>
Motor motor1;
void setup() {
    motor1.init(15);
}

void loop() {
    motor1.pwm(512);
}

编译完成,提示找不到TimerOne.h头文件,可以看到Library Dependency Graph没有TimerOne
两种解决方法
main.cpp include头文件TimerOne.h,这个比较low,英文main中根本就没有使用到TimerOne
2.之前的办法添加lib_deps = TimerOne
总结
至此可以看到,使用VSCode集成的PlatformIO IDE插件开发与查看arduino的代码都非常方便

版权声明:本文为CSDN博主「acktomas」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/acktomas/article/details/115322566

生成海报
点赞 0

acktomas

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

3D打印机之Marlin固件配置

参考资料 RepRap_Prusa i3_3D打印机步进电机参数计算:http://www.log4cpp.com/diy/3dprinter/46.htmli3型3D打印机制作详解——Marlin固件中文介绍 一、Marli

3D打印机问题集锦

参考资料 RepRap_Prusa i3_3D打印机步进电机参数计算:http://www.log4cpp.com/diy/3dprinter/46.html Marlin固件支持两个步进电机控制X轴或者双Z轴 并联方式 在

当3D打印模型出现层错位时该怎么做?

在通过3D打印机制作模型时,总是会遇到一些问题导致模型不那么美观,有些问题无伤大雅,经过后期处理可以弥补,比如轻微的断层、拉丝;有些问题哪怕出现了一点点,却依然