Arduino上拉电阻不工作

时间:2014-03-01 14:32:27

标签: arduino

我正在使用Arduino板来读出软质电位计的值。 (检测触摸的条带)。只要触摸条带(电阻添加到电流),这就完美地工作。 当未触摸条带时,模拟引脚读取完全随机的浮动数字。论坛提到你必须添加一个上拉/下拉电阻来取消这种效果,但这似乎并没有奏效。这段代码有什么问题?

int potPin = 2;
int curval = 0;

// detect potmeter value

void setup() {
  //enable pullup resistor, but still results in erratic output
  //when potmeter is not touched
  digitalWrite(potPin, HIGH); 
  //write to serial
  Serial.begin(9600);
}

void loop() {
  curval = analogRead(potPin);
  // this works when the potmeter is being pressed (displays 0 to 1024)
  Serial.println(curval);
  delay(150);
}

1 个答案:

答案 0 :(得分:1)

更改

int potPin = 2;

int potPin = A2;

在两个地方最初使用“2”是指将数字引脚2分配到模拟通道2的上拉和读取。“2”相应地映射到PortD位2和模拟通道2(也称为ADC2)是PortC第2位。如下所示

digitalWrite(2, HIGH);  // Pin D2
curval = analogRead(2); // AMUX Channel 2

下面显示的A2解释如下

digitalWrite(A2, HIGH);  // Pin (A2 aka D16)
curval = analogRead(A2); // AMUX Channel 2 on Pin A2

在UNO(ATmega328)上,analogRead()函数将0-7解释为通道,并将引脚A0至A7(D14-D21)转换为相应的通道,以进行读取。

注意:

UNO上使用的芯片上没有ADC6和7。

A0-A7是Digital 14到21的别名。通常使用标签A0-A7。