了解如何在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
暂无评论