Arduino - 读取模拟电压


此示例将向您展示如何读取模拟引脚 0 上的模拟输入。输入从 AnalogRead() 转换为电压,并打印到 Arduino 软件 (IDE) 的串行监视器。

所需组件

您将需要以下组件 -

  • 1 × 面包板
  • 1 × Arduino Uno R3
  • 1×5K可变电阻(电位器)
  • 2 × 跳线

程序

按照电路图并将组件连接到面包板上,如下图所示。

模拟面包板

电位器

电位计(或电位器)是一种简单的机电换能器。它将输入操作器的旋转或线性运动转换为阻力的变化。这种变化可以(或可以)用于控制从高保真系统的音量到大型集装箱船的方向的任何事物。

我们所知道的电位器最初被称为变阻器(本质上是可变线绕电阻器)。现在可用的盆的种类非常惊人,对于初学者(尤其是初学者)来说很难确定哪种类型适合特定的任务。几种不同的锅类型都可以用于同一任务,这使得工作变得更加困难。

电位器

左图显示了锅的标准示意图符号。右图是电位器。

草图

在计算机上打开 Arduino IDE 软件。使用 Arduino 语言进行编码将控制您的电路。单击“新建”打开一个新的草图文件。

草图

Arduino代码

/*
   ReadAnalogVoltage
   Reads an analog input on pin 0, converts it to voltage, 
   and prints the result to the serial monitor.
   Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
   Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
*/

// the setup routine runs once when you press reset:

void setup() {
   // initialize serial communication at 9600 bits per second:
   Serial.begin(9600);
}

// the loop routine runs over and over again forever:

void loop() {
   // read the input on analog pin 0:
   int sensorValue = analogRead(A0);
   // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
   float voltage = sensorValue * (5.0 / 1023.0);
   // print out the value you read:
   Serial.println(voltage);
}

注意事项代码

在下面给出的程序或草图中,您在设置功能中要做的第一件事是开始串行通信,在您的主板和计算机之间以每秒 9600 位的速度进行通信 -

Serial.begin(9600);

在代码的主循环中,您需要建立一个变量来存储来自电位计的电阻值(介于 0 和 1023 之间,非常适合 int 数据类型) -

int sensorValue = analogRead(A0);

要将值从 0-1023 更改为与电压(引脚正在读取)相对应的范围,您需要创建另一个变量(浮点数)并进行一些计算。要缩放 0.0 到 5.0 之间的数字,请将 5.0 除以 1023.0,然后乘以sensorValue -

float voltage= sensorValue * (5.0 / 1023.0);

最后,您需要将此信息打印到串行窗口。您可以使用最后一行代码中的命令 Serial.println() 来执行此操作 -

Serial.println(voltage)

现在,通过单击顶部绿色栏右侧的图标或按 Ctrl+Shift+M,在 Arduino IDE 中打开串行监视器。

串行监视器

结果

您将看到范围从 0.0 - 5.0 的稳定数字流。当您转动电位计时,数值会发生变化,与引脚 A0 上的电压相对应。