跳至内容
本页目录

Nano ESP32 引脚编号——丝印 Dn 与芯片 GPIO

本页回答的问题:“为什么在 Nano ESP32 上 pinMode(2, OUTPUT) 驱动的不是 GPIO2——我的代码该用哪套编号?”

这块板沿用经典 Nano 丝印(D0–D13、A0–A7),让项目在 Nano 各代之间迁移时无需改接线。但这些引脚背后的 ESP32-S3 有自己的 GPIO 编号:丝印 D2 是 GPIO5、D8 是 GPIO17,以此类推。你在 sketch 里写的裸数字指什么,取决于一个 IDE 设置。

两套编号方案

Arduino 板包提供两种配置(工具 > Pin Numbering):

设置pinMode(2, OUTPUT) 驱动适用场景
By Arduino pin(默认)丝印 D2 那根针——物理上接 GPIO5迁移经典 Nano 程序;按丝印接线
By GPIO number(legacy)芯片的 GPIO2——并不是标着 D2 的那根针使用原生 GPIO 号的第三方 ESP32 库(OneWire、FastLED、ESP32Servo 等)

D2 式标签不受配置影响:无论哪种设置,pinMode(D2, OUTPUT) 都指向物理上的 D2 针(内部是 GPIO5)。这是在这块板上写可移植代码最稳的方式。

这块板为什么需要这个开关

Nano 兼容与 ESP32 原生编号不可能同时对裸数字成立,所以板包把它做成一个选择。官方示例:默认配置下 pinMode(2, ...) 配置板上标着 2 的针;GPIO 配置下,同一根物理针要写 pinMode(5, ...)。

第三方 ESP32 库是切换的实际理由:很多库直接接收 GPIO 号、不认识 Nano 丝印,在默认方案下会静默驱动错误的引脚。

完整映射表

丝印到 GPIO 的完整对照(D0–D13、A0–A7、BOOT0/BOOT1)在板卡页上,作为 JP1/JP2 排针映射的一部分。几组值得记住的:

  • D0/D1(串口 RX/TX)——GPIO44/GPIO43
  • A4/A5(I2C SDA/SCL)——GPIO11/GPIO12
  • D13(板载 LED)——GPIO48

如果某个库行为不对

症状:sketch 在其他 ESP32 板上正常,在这里却驱动了错误的引脚。这是编号陷阱,不是板坏了——对照映射表查该库假设哪套编号,然后统一设置或引脚参数。背后的通用分层(物理针 / 丝印 / GPIO / SDK 名称)见引脚编号概念指南。

本页不能告诉你的

  • 我们没有在这里的硬件上运行这些 sketch。 两套方案、开关与标签行为引自 Arduino 官方 pin-setup 教程(固定版本见下);诊断顺序是 MCUID 的编辑工作。
  • Arduino core 之外的编号行为。 这块板支持 MicroPython,但其引脚命名方式不在所引教程范围内,本页不作断言。
  • IDE 操作截图漫游。 菜单路径随 IDE 版本漂移;官方教程(由 Arduino 维护)是设置入口的现行参考。

来源