0

我是微控制器的新手,我需要帮助读取电压并在串行监视器中打印它们。我已经使用电位器做到了这一点,但我想知道我是否可以只用电压来做同样的事情。下面是我在读取电位器值时使用的代码:

我试过读取电压,但是当我在引脚 A0 中输入小于 3-5V 的电压时,我在串行监视器中得到 0

int potPin = 0;    // select the input pin
int val = 0;       // variable to store the value coming from the function generator
void setup()
{
  Serial.begin(9600);   // opens serial port, sets data rate to 9600 bps
}
void loop() {
  val = analogRead(potPin); // read the value from the function generator
  Serial.println(val);
  delay(1000); //Sampling rate for the signal
}
4

3 回答 3

1

正如 Udo Klein 所说,这看起来像是硬件问题。尝试像这样设置你的电路:http: //imgur.com/PYbeqLq

请注意,函数发生器和 arduino 之间共享接地 - 这对于确保正确测量电压很重要。请记住,电压实际上是电势,因此您需要一个共同的参考点进行测量。

于 2013-10-28T01:39:04.020 回答
0

要回答您的问题,是的,您可以从另一块硬件读取电压。

正如 gearbot 告诉你的那样,在 arduino 和其他硬件之间保持共同点很重要。

还要小心,arduino 只能测量 0 到 5 伏特之间的电压。不要在不调整电路的情况下尝试测量更高的电压,因为您可能会损坏您的 arduino 板。

如果您不确定在用万用表连接到 arduino 之前测量电压。

Uno 有 6 个模拟输入,标记为 A0 到 A5,每个都提供 10 位分辨率(即 1024 个不同的值)。默认情况下,它们从地测量到 5 伏,但可以使用 AREF 引脚和模拟参考()函数来更改其范围的上限。

编辑:

我没有在您的帖子底部看到添加的评论。这表明确实存在硬件问题(可能在您的电路中)

为确保 arduino 做正确的事情,请在连接硬件并正常工作时用万用表测量引脚 A0 和 GND 之间的电压。您应该能够在那里读取正确的电压。

我怀疑它会给出与 Arduino 相同的值。然后用万用表追溯你的电路(保持接地)找出哪里出了问题。

于 2013-11-04T09:15:19.427 回答
0

尝试使用 map 功能将 0 到 5 或 1-5v 输入缩放。

int setValue = map(ana1Value, 0, 1023, 0, 100);

可能对你有帮助。

模拟输入电压的比例为 0-100,那么您可以使用它

于 2014-08-01T03:19:32.747 回答