2017-10-10 166 views
-1

在Arduino One上有两个标记为0到5的引脚。其中一个引脚是模拟和其他数字。如果我想从传感器读取模拟信号,并且将信号连接到例如模拟引脚0,但我也可以让数字引脚0设置为打开LED的输出,我该如何区分这两个?如何在使用pinMode时区分模拟和数字引脚?

pinMode(A0, INPUT); 
pinMode(0, OUTPUT); 

由于我认为A0 = 0

回答

1

上有一个Arduino一种标记0至5的两个销。

错了,有销0-5和有销A0-A5: Arduino Uno

因为我认为A0 = 0

错,从https://github.com/arduino/Arduino/blob/1.8.5/hardware/arduino/avr/variants/standard/pins_arduino.h#L56-L72

#define PIN_A0 (14) 
#define PIN_A1 (15) 
#define PIN_A2 (16) 
#define PIN_A3 (17) 
#define PIN_A4 (18) 
#define PIN_A5 (19) 
#define PIN_A6 (20) 
#define PIN_A7 (21) 

static const uint8_t A0 = PIN_A0; 
static const uint8_t A1 = PIN_A1; 
static const uint8_t A2 = PIN_A2; 
static const uint8_t A3 = PIN_A3; 
static const uint8_t A4 = PIN_A4; 
static const uint8_t A5 = PIN_A5; 
static const uint8_t A6 = PIN_A6; 
static const uint8_t A7 = PIN_A7; 

所以,正如你所看到的,Uno上的A0-A5的值(它使用s arduino:avr:标准变体)是14-19。

你可能还没有容易的Arduino硬件定义系统如何​​工作的,所以任何知识来确定这一点:

void setup() { 
    Serial.begin(9600); 
    while (!Serial) {} 

    byte analogPins[] = {A0, A1, A2, A3, A4, A5}; 
    for (byte element = 0; element < sizeof(analogPins)/sizeof(analogPins[0]); element++) { 
    Serial.print("The value of A"); 
    Serial.print(element); 
    Serial.print(" is: "); 
    Serial.println(analogPins[element]); 
    } 
} 

void loop() {} 

但实际上这一切都无关紧要。只需调用A0 A0,A0的值不重要。

相关问题