大部分玩 Arduino 的,都还是从 UNO、Duemilanove、Diecimila 这样的板子上开始玩,而这些板子的共性,就是都是用了 DIP(直插)28 脚封转的主芯片。而转为 Nano 的话,其实芯片核心并没有变化,但是封装从 DIP28 改为 TQFP32,软件方面都不需要变动,程序都是通用的。
硬件方面又有什么不同呢?32 – 28 = 4,多了4个引脚。
多了 VCC 和 GND,没什么好说,而多的 ADC6 和 ADC7,就是是之前 DIP 封转的芯片所没有的东西了。而在 nano 中,也同样把这2个ADC引脚引出来了。
很明显,就是A6和A7。
注意看datasheet中的管脚定义,就会发现这 ADC6 和 ADC7 实际上和 ADC0-ADC5 是不太一样的。ADC0-ADC5 其实是作为 PC0-PC5 的第二功能存在的,分别对应 Arduino 定义 A0-A5。也正因为此,在 Arduino 的官方指南中提到,“The analog input pins can be used as digital pins, referred to as A0, A1, etc. ”。说的是,模拟输入口可以当数字口一样用。对于A0-A5来说,确实不错。但对于第一功能就是ADC(模数转换)而不兼有普通 IO 口功能的 ADC6 和 ADC7 来说。这句话就要打折扣了。A6 和 A7 只能作为模拟输入使用,不要把它当成 类似于 PC PB 这样的 IO口去使用。
而且,这本并不是 Arduino 内核的问题,而是硬件本身的设计就是这个样子。A6 和 A7 确少作为 标准IO口 所需的必要硬件配置。
在 A6、A7 引脚上,想运行 Blink 例程,使用 pinMode(A6, OUTPUT),digitalWrite(A6, HIGH) 都不会得到所需要的效果。