我正在使用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);
}
答案 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。