我正在使用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);
}发布于 2014-03-02 05:45:07
变化
int potPin = 2;至
int potPin = A2;您最初在这两个地方使用" 2“的用法是将数字引脚2分配给上拉并从模拟通道2读取。因为"2”对应于is 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)转换为相应的通道,以便读取。
注意:
ADC6和7在UNO上使用的芯片上不可用。
A0-A7是数字14到21的别名。其中通常使用标签A0-A7。
https://stackoverflow.com/questions/22115617
复制相似问题