目录

  • 概述
  • 安装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主页

vscode arduino esp32频率_sed


vscode arduino esp32频率_ci_02

测试创建工程

  • 选择New Project创建工程(如上图),选择相应的Board,这里使用Arduino UNO
  • 选择Framework是Arduino,选择保存路径,等待工程完成需要一点时间(10分钟吧)
  • 完成,打开工程文件夹,修改main.cpp

vscode arduino esp32频率_上传_03

vscode arduino esp32频率_sed_04


参考文档

创建新工程时中的一些建议

请稍等

  • 第一次初始化需要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分钟)

新工程需要网络下载环境,下载好后会自动跳到下面的界面

vscode arduino esp32频率_ci_05

新工程里面写程序

vscode arduino esp32频率_ci_06


编写代码时有提示!很 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);
}

vscode arduino esp32频率_sed_07

编译:编译超快

> 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 =====================================================================================================
终端将被任务重用,按任意键关闭。

vscode arduino esp32频率_ci_08

上传代码到板子:

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 =========================================================
终端将被任务重用,按任意键关闭。

上传成功

vscode arduino esp32频率_sed_09

串口监视功能

vscode arduino esp32频率_ci_10


通过交互输入2连接COM3

vscode arduino esp32频率_sed_11

打印的是乱码 波特率不对!

> 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 arduino esp32频率_上传_12

总结

至此可以看到,使用VSCode集成的PlatformIO IDE插件开发与查看arduino的代码都非常方便,编译和上传速度远比Arduino IDE块很多,工程目录和库文件结构又清晰。