Arduino插件需配合arduino-cli才能工作,必须手动安装CLI并配置PATH;核心库、串口权限、构建缓存及FQBN配置等均需手动处理,否则出现选板失败、Arduino.h缺失、端口未找到或烧录旧代码等问题。

Arduino插件装了但arduino-cli找不到
VS Code 本身不带 Arduino 编译能力,必须靠 arduino-cli 命令行工具驱动。插件只是个“遥控器”,没装好 CLI 就会卡在“Select a Board”或报错 Command 'arduino.selectBoard' not found。
实操建议:
- 别用插件自带的“自动下载”(经常失败或版本过旧),去GitHub 官方 releases 页面下最新
arduino-cli二进制文件 - Windows 用户解压后把
arduino-cli.exe所在目录加进系统PATH;macOS/Linux 记得chmod +x arduino-cli并软链到/usr/local/bin/arduino-cli - 终端里直接运行
arduino-cli version能返回版本号,VS Code 才算真正“看见”它 - 插件设置里确认
arduino.path指向的是arduino-cli可执行文件,不是文件夹
选板后编译报错 No such file or directory: Arduino.h
这是典型的开发环境未初始化或核心未安装问题。VS Code 插件不会自动帮你装 Arduino AVR 核心、ESP32 支持包这些依赖,它只调用 CLI,而 CLI 默认不装任何核心。
实操建议:
- 先在终端运行
arduino-cli core update-index同步包索引 - 根据你用的板子装对应核心:AVR 板(Uno/Nano)跑
arduino-cli core install arduino:avr;ESP32 板用arduino-cli core install esp32:esp32 - 如果用了第三方板(比如 Seeed Studio 的 XIAO ESP32C3),还得额外
arduino-cli core install xiaoice:xiaoice(具体 ID 查对应 GitHub 仓库的package_index.json) - 插件里点 “Arduino: Initialize” 会自动生成
arduino.json,但不会替代核心安装——它只记录你选的board和port
串口监视器打不开,显示 Port not found
不是驱动没装,就是 VS Code 没权限读取串口设备。特别是 macOS Ventura+ 或 Windows WSL 环境下,这个错误特别常见。
实操建议:
- macOS:检查是否被“完全磁盘访问”权限拦截——进「系统设置 → 隐私与安全性 → 完全磁盘访问」,把 VS Code 加进去
- Windows:确认 USB 转串口芯片型号(CH340 / CP2102 / FT232),去官网下对应驱动,别信“万能驱动”
- Linux:把当前用户加进
dialout组:sudo usermod -a -G dialout $USER,然后重启 VS Code(不是仅 reload window) - VS Code 里按
Ctrl+Shift+P→ 输入Arduino: Select Serial Port,手动选一次端口,别依赖自动发现
改了代码却一直烧录旧版本
VS Code 的 Arduino 插件默认不清理中间文件,尤其当你改了 board 或 fqbn 后,缓存的 .ino.cpp 和 build/ 目录可能还在用老配置编译。
实操建议:
- 每次换板或改关键配置后,先手动删掉项目根目录下的
build/文件夹(VS Code 不会自动清) - 在
arduino.json里显式写全fqbn,比如"fqbn": "arduino:avr:uno",别只写"board": "arduino:avr:uno"—— 后者在某些插件版本里会被忽略 - 如果用了
platformio.ini共存,关掉 PlatformIO 插件,二者冲突时优先级混乱,容易静默走错工具链
最麻烦的其实是多平台混用:同一块 ESP32 开发板,Arduino IDE 装的是 2.0.x 核心,VS Code 用 CLI 装的是 3.0.x,头文件路径和宏定义就对不上——这种兼容性断层不会报错,只会让你花半天查为啥 WiFi.mode() 突然不存在。


















