如何将Sublime配置为Arduino硬件开发环境编写单片机控制代码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1043个文字,预计阅读时间需要5分钟。
不能。Sublime Text 本身不自带 Arduino 编译器(avr-gcc)和上传工具(avrdude),它只是一个文本编辑器。若想使用 Sublime Text 编写 Arduino 代码,需要通过外部工具链配置,核心是将 Arduino IDE 的编译/上传流程借用过来。
常见错误现象:error: 'Serial' was not declared in this scope、command not found: arduino-cli、点击 Build 后没反应或报 No build system —— 都是因为没正确桥接 Arduino 工具链。
- 推荐路径:用官方
arduino-cli(比依赖完整 Arduino IDE 更轻量、更可控) - 不建议用老旧的
Stino插件:已停止维护,兼容性差,对 ESP32/ESP8266 支持弱 - Mac/Linux 用户注意:确保
arduino-cli在$PATH中,Windows 用户建议加到系统环境变量,别只放用户变量
怎么配置 arduino-cli + Sublime Build System?
关键不是装插件,而是写一个能调通 arduino-cli 的 .sublime-build 文件。Build System 是 Sublime 调用外部命令的唯一入口。
示例配置(保存为 Arduino.sublime-build,放在 Sublime Text/Packages/User/ 目录下):
{ "cmd": ["arduino-cli", "compile", "--fqbn", "$env:ARDUINO_FQBN", "$file_path"], "working_dir": "$file_path", "variants": [ { "name": "Upload", "cmd": ["arduino-cli", "upload", "-p", "$env:ARDUINO_PORT", "--fqbn", "$env:ARDUINO_FQBN", "$file_path"] } ], "selector": "source.cpp" }
必须设置的环境变量(在 Sublime 的 Preferences → Settings – User 或系统 shell 中):
-
ARDUINO_FQBN:如arduino:avr:uno或esp32:esp32:esp32,必须和你板子完全匹配 -
ARDUINO_PORT:如/dev/cu.usbmodem14301(macOS)、/dev/ttyUSB0(Linux)、COM3(Windows)—— 必须真实存在且有权限 - Windows 用户若用 PowerShell 启动 Sublime,需确认
arduino-cli.exe可执行;CMD 下可能需写全路径"C:\path\to\arduino-cli.exe"
为什么写好的 .ino 文件在 Sublime 里编译总报错?
Arduino IDE 会自动处理 .ino 文件的预处理(比如补 #include <arduino.h></arduino.h>、合并多个 .ino 片段、生成函数声明),而 arduino-cli 默认只认标准 C++ 结构。Sublime 不做任何预处理,直接把 .ino 丢给编译器,必然失败。
- 最简解法:把文件后缀改成
.cpp,手动加#include <arduino.h></arduino.h>,并确保setup()和loop()函数存在 - 如果项目含多个
.ino文件(如main.ino+utils.ino),必须合并或改名成.cpp+.h,否则arduino-cli不识别 - 不要指望 Sublime 自动识别
Serial.begin(9600)等 Arduino 特有语法 —— 它没语义理解能力,仅靠语法高亮(可用Arduino-IDE语法包增强)
串口监视器在哪?Sublime 没有内置终端怎么办
Sublime 本身不提供串口监视功能。所谓“集成”只是调外部工具,得自己搭。
- 推荐方案:终端里单独开一个窗口运行
arduino-cli monitor -p $ARDUINO_PORT -b 9600,比插件稳定得多 - Windows 用户可用
Putty或Termite,填对端口和波特率即可;Mac/Linux 推荐screen /dev/cu.xxx 9600或picocom -b 9600 /dev/cu.xxx - 别尝试用 Sublime 的
Terminus插件接串口 —— 它不支持原始串口设备,只能跑 shell 命令,无法替代真正串口工具
真正卡点往往不在配置,而在 FQBN 写错、端口权限没开、或以为 .ino 能直接编译。这些地方一错,整个流程就断在第一环。
本文共计1043个文字,预计阅读时间需要5分钟。
不能。Sublime Text 本身不自带 Arduino 编译器(avr-gcc)和上传工具(avrdude),它只是一个文本编辑器。若想使用 Sublime Text 编写 Arduino 代码,需要通过外部工具链配置,核心是将 Arduino IDE 的编译/上传流程借用过来。
常见错误现象:error: 'Serial' was not declared in this scope、command not found: arduino-cli、点击 Build 后没反应或报 No build system —— 都是因为没正确桥接 Arduino 工具链。
- 推荐路径:用官方
arduino-cli(比依赖完整 Arduino IDE 更轻量、更可控) - 不建议用老旧的
Stino插件:已停止维护,兼容性差,对 ESP32/ESP8266 支持弱 - Mac/Linux 用户注意:确保
arduino-cli在$PATH中,Windows 用户建议加到系统环境变量,别只放用户变量
怎么配置 arduino-cli + Sublime Build System?
关键不是装插件,而是写一个能调通 arduino-cli 的 .sublime-build 文件。Build System 是 Sublime 调用外部命令的唯一入口。
示例配置(保存为 Arduino.sublime-build,放在 Sublime Text/Packages/User/ 目录下):
{ "cmd": ["arduino-cli", "compile", "--fqbn", "$env:ARDUINO_FQBN", "$file_path"], "working_dir": "$file_path", "variants": [ { "name": "Upload", "cmd": ["arduino-cli", "upload", "-p", "$env:ARDUINO_PORT", "--fqbn", "$env:ARDUINO_FQBN", "$file_path"] } ], "selector": "source.cpp" }
必须设置的环境变量(在 Sublime 的 Preferences → Settings – User 或系统 shell 中):
-
ARDUINO_FQBN:如arduino:avr:uno或esp32:esp32:esp32,必须和你板子完全匹配 -
ARDUINO_PORT:如/dev/cu.usbmodem14301(macOS)、/dev/ttyUSB0(Linux)、COM3(Windows)—— 必须真实存在且有权限 - Windows 用户若用 PowerShell 启动 Sublime,需确认
arduino-cli.exe可执行;CMD 下可能需写全路径"C:\path\to\arduino-cli.exe"
为什么写好的 .ino 文件在 Sublime 里编译总报错?
Arduino IDE 会自动处理 .ino 文件的预处理(比如补 #include <arduino.h></arduino.h>、合并多个 .ino 片段、生成函数声明),而 arduino-cli 默认只认标准 C++ 结构。Sublime 不做任何预处理,直接把 .ino 丢给编译器,必然失败。
- 最简解法:把文件后缀改成
.cpp,手动加#include <arduino.h></arduino.h>,并确保setup()和loop()函数存在 - 如果项目含多个
.ino文件(如main.ino+utils.ino),必须合并或改名成.cpp+.h,否则arduino-cli不识别 - 不要指望 Sublime 自动识别
Serial.begin(9600)等 Arduino 特有语法 —— 它没语义理解能力,仅靠语法高亮(可用Arduino-IDE语法包增强)
串口监视器在哪?Sublime 没有内置终端怎么办
Sublime 本身不提供串口监视功能。所谓“集成”只是调外部工具,得自己搭。
- 推荐方案:终端里单独开一个窗口运行
arduino-cli monitor -p $ARDUINO_PORT -b 9600,比插件稳定得多 - Windows 用户可用
Putty或Termite,填对端口和波特率即可;Mac/Linux 推荐screen /dev/cu.xxx 9600或picocom -b 9600 /dev/cu.xxx - 别尝试用 Sublime 的
Terminus插件接串口 —— 它不支持原始串口设备,只能跑 shell 命令,无法替代真正串口工具
真正卡点往往不在配置,而在 FQBN 写错、端口权限没开、或以为 .ino 能直接编译。这些地方一错,整个流程就断在第一环。

