目录
- 概述
- 安装Visual Studio Code PlatformIO
- 测试创建工程
- 创建新工程时中的一些建议
- 新工程终于构建好了(15分钟)
- 新工程里面写程序
- 编译:编译超快
- 上传代码到板子:
- 串口监视功能
- 总结
概述
本文介绍如何使用VScode 直接开发Arduino 程序,避免使用Arduino IDE时的没有代码提示功能,文件关系不清晰、头文件打开不方便等问题及使用Visual Stdio集成插件的庞大安装工程;同时Visual Studio Code插件PlatformIO IDE开发Arduino 跨平台无论你是用的windows,ubuntu或者mac都可以玩转。
安装Visual Studio Code PlatformIO
- 第一步:https://code.visualstudio.com/页面下载安装vscode.
- 第二步:安装完成vscode启动,扩展页面下搜索platformio即可找到,选择第一个Platformio IDE,安装即可(这里需要耐心等待一会)
- 第三步:安装完成,重启VS Code,左下角会多一个logo图标,点击后即可显示Platformio IDE主页
测试创建工程
- 选择New Project创建工程(如上图),选择相应的Board,这里使用Arduino UNO
- 选择Framework是Arduino,选择保存路径,等待工程完成需要一点时间(10分钟吧)
- 完成,打开工程文件夹,修改main.cpp
创建新工程时中的一些建议
请稍等
- 第一次初始化需要Internet连接,并且可能需要一些时间(需要安装依赖的工具链,框架,SDK)。
- 请耐心等待,并完成初始化。
项目结构
- PlatformIO项目包含3个主要项目:
- lib-将项目特定的(专用)库放在此处
- src-将您的源文件放在此文件夹中
- platformio.ini-项目配置文件
platformio.ini
- PlatformIO项目配置文件:
- 通用选项-开发平台,开发板,框架
- 构建选项-构建标志,源过滤器,额外的脚本
- 上传选项-自定义端口,速度和额外标志
- 库选项-依赖项,额外的库存储
- 其他说明和示例,请访问文档。
上传端口
- 默认情况下,PlatformIO自动检测上传端口。您可以使用platformio.ini中的upload_port选项配置自定义端口:
- upload_port = COM1-特定端口
- upload_port = / dev / ttyUSB *-以/ dev / ttyUSB开头的任何端口
- upload_port = COM [13]-COM1或COM3。
新工程终于构建好了(15分钟)
新工程需要网络下载环境,下载好后会自动跳到下面的界面
新工程里面写程序
编写代码时有提示!很 Nice!
#include <Arduino.h>
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello World\r\n");
delay(500);
}
编译:编译超快
> Executing task: C:\Users\MyPC\.platformio\penv\Scripts\platformio.exe run <
Processing uno (platform: atmelavr; board: uno; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.2.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
- framework-arduino-avr 5.1.0
- toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\uno\src\main.cpp.o
Archiving .pio\build\uno\libFrameworkArduinoVariant.a
Compiling .pio\build\uno\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial0.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial1.cpp.o
Indexing .pio\build\uno\libFrameworkArduinoVariant.a
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial2.cpp.o
Compiling .pio\build\uno\FrameworkArduino\HardwareSerial3.cpp.o
Compiling .pio\build\uno\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\uno\FrameworkArduino\PluggableUSB.cpp.o
Compiling .pio\build\uno\FrameworkArduino\Print.cpp.o
Compiling .pio\build\uno\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\uno\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\uno\FrameworkArduino\USBCore.cpp.o
Compiling .pio\build\uno\FrameworkArduino\WInterrupts.c.o
Compiling .pio\build\uno\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\uno\FrameworkArduino\WString.cpp.o
Compiling .pio\build\uno\FrameworkArduino\abi.cpp.o
Compiling .pio\build\uno\FrameworkArduino\hooks.c.o
Compiling .pio\build\uno\FrameworkArduino\main.cpp.o
Compiling .pio\build\uno\FrameworkArduino\new.cpp.o
Compiling .pio\build\uno\FrameworkArduino\wiring.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_analog.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_digital.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_pulse.S.o
Compiling .pio\build\uno\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\uno\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\uno\libFrameworkArduino.a
Indexing .pio\build\uno\libFrameworkArduino.a
Linking .pio\build\uno\firmware.elf
Building .pio\build\uno\firmware.hex
Checking size .pio\build\uno\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 9.7% (used 198 bytes from 2048 bytes)
Flash: [= ] 5.1% (used 1632 bytes from 32256 bytes)
===================================================================================================== [SUCCESS] Took 38.31 seconds =====================================================================================================
终端将被任务重用,按任意键关闭。
上传代码到板子:
PlatformIO IDE自动扫描串口设备,非常方便。
点击上传图标
> Executing task: C:\Users\MyPC\.platformio\penv\Scripts\platformio.exe run --target upload <
Processing uno (platform: atmelavr; board: uno; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------Tool Manager: Installing platformio/tool-avrdude @ ~1.60300.0
Downloading [####################################] 100%
Tool Manager: tool-avrdude @ 1.60300.200527 has been installed!
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.2.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
- framework-arduino-avr 5.1.0
- tool-avrdude 1.60300.200527 (6.3.0)
- toolchain-atmelavr 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Checking size .pio\build\uno\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 9.7% (used 198 bytes from 2048 bytes)
Flash: [= ] 5.1% (used 1632 bytes from 32256 bytes)
Configuring upload protocol...
AVAILABLE: arduino
CURRENT: upload_protocol = arduino
Looking for upload port...
Auto-detected: COM3
Uploading .pio\build\uno\firmware.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file ".pio\build\uno\firmware.hex"
avrdude: writing flash (1632 bytes):
Writing | ################################################## | 100% 0.62s
avrdude: 1632 bytes of flash written
avrdude: verifying flash memory against .pio\build\uno\firmware.hex:
avrdude: load data flash data from input file .pio\build\uno\firmware.hex:
avrdude: input file .pio\build\uno\firmware.hex contains 1632 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.56s
avrdude: verifying ...
avrdude: 1632 bytes of flash verified
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
========================================================= [SUCCESS] Took 16.17 seconds =========================================================
终端将被任务重用,按任意键关闭。
上传成功
串口监视功能
通过交互输入2连接COM3
打印的是乱码 波特率不对!
> Executing task: C:\Users\MyPC\.platformio\penv\Scripts\platformio.exe device monitor <
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at http://bit.ly/pio-monitor-filters
--- Available ports:
--- 1: COM1 '通信端口 (COM1)'
--- 2: COM3 'USB Serial Port (COM3)'
--- 3: COM5 'USB-SERIAL CH340 (COM5)'
--- Enter port index or full name: 2
--- Miniterm on COM3 9600,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
命令:
--- pySerial (3.5) - miniterm - help
---
--- Ctrl+C Exit program (alias Ctrl+T Q)
--- Ctrl+T Menu escape key, followed by:
--- Menu keys:
--- Ctrl+T Send the menu character itself to remote
--- Ctrl+C Send the exit character itself to remote
--- Ctrl+I Show info
--- Ctrl+U Upload file (prompt will be shown)
--- Ctrl+A encoding
--- Ctrl+F edit filters
--- Toggles:
--- Ctrl+R RTS Ctrl+D DTR Ctrl+B BREAK
--- Ctrl+E echo Ctrl+L EOL
---
--- Port settings (Ctrl+T followed by the following):
--- p change port
--- 7 8 set data bits
--- N E O S M change parity (None, Even, Odd, Space, Mark)
--- 1 2 3 set stop bits (1, 2, 1.5)
--- b change baud rate
--- x X disable/enable software flow control
--- r R disable/enable hardware flow control
正常打印:
总结
至此可以看到,使用VSCode集成的PlatformIO IDE插件开发与查看arduino的代码都非常方便,编译和上传速度远比Arduino IDE块很多,工程目录和库文件结构又清晰。