Arduino项目:如何读取模拟输入

323 阅读2分钟

在这个项目中,我们将使用一个电位器,并将其连接到Arduino的模拟输入引脚上,我们将编写一个程序来读取电流值。

在Arduino项目#2中,我们看到了如何读取一个数字输入。读取的值可以是01LOWHIGH

这可以通过数字I/O引脚来完成,编号从013

模拟I/O引脚以A 开始。在Arduino Uno上你可以找到6个模拟I/O引脚A0 /A5

在Arduino MKR 1010 WiFi上,你有7个模拟I/O引脚,从A0 到 。A6

不同的板子会有不同数量和位置的这些引脚。这些引脚可以被配置为模拟输入或模拟输出。

一个数字信号只能是高或低。一个模拟信号可以保持一定的数值范围,在Arduino的例子中,它从01023 ,这映射到输入点上的张力水平,从0V到5V。

各种各样的传感器将为我们提供模拟值。想想温度传感器、距离传感器、声音传感器、运动传感器......我们可以用Arduino读取它们的数值,并决定如何处理这些数据。

我们使用一个叫做analogRead() 的函数来做这件事。

但让我们从建立一个小电路开始。

在 "用电位器建立一个LED调光器 "的项目中,我们建立了一个简单的电路,用一个电位器控制一个LED灯。让我们复制该电路的一部分,只是现在我们不放LED,而放Arduino。

如果电位器一直向左转,我们读到的值应该是0 。一直向右转,我们读到的值应该是1023 ,而在中间的位置应该是512

这是电路,用一个10kΩ的电位器制成。

我们从Arduino的电源输出引脚得到0V和5V,并将它们连接到面包板上。然后我们将这些电平的张力连接到电位器的输入引脚,我们得到的输出引脚连接到模拟引脚A1

我们写一个程序来读取该引脚,并将读取的数值打印到串行接口上,这样我们就可以从Arduino IDE的串行监视器中读取。

void setup() {
    Serial.begin(9600);
}

void loop() {
    int value = analogRead(A1);
    Serial.println(value);
}

注意,我没有明确地将A1 引脚设置为输入引脚,因为一个引脚默认是输入的。如果我想写到那里,我就必须在setup() 中配置pinMode()

下面是我们的程序运行情况。当电位器全部转到左边时,我们读取0

电位器全部转到左边时,我们读到1023 (有时读到1022 ,因为我们使用的是模拟值,它不是100%精确的)。

而在中间,你会读到表示电位器被转动多少的数值。