analogRead()函数(最常用)
- 功能描述:用于从Arduino板上的模拟输入引脚读取模拟信号,并将其转换为数字值。
- 工作原理:Arduino的模拟 - 数字转换器(ADC)将模拟输入引脚(如Uno板上的A0 - A5引脚)上的电压值转换为一个0 - 1023范围内的整数。这个整数与输入的模拟电压成比例关系。例如,对于0 - 5V的输入电压范围,0V会被转换为0,5V会被转换为1023。
- 语法格式:
analogRead(pin)
,其中pin
是要读取的模拟输入引脚编号。 - 示例代码:
int analogPin = A0; // 定义模拟引脚A0 int sensorValue; // 用于存储读取的模拟值 void setup() { Serial.begin(9600); // 初始化串口通信,波特率为9600 } void loop() { sensorValue = analogRead(analogPin); Serial.println(sensorValue); delay(100); }
- 在这个示例中,在
setup()
函数中设置了串口通信。在loop()
函数中,通过analogRead(analogPin)
读取模拟引脚A0的模拟值,将其存储在sensorValue
变量中,然后使用Serial.println(sensorValue)
将这个值发送到串口监视器,并且通过delay(100)
函数暂停100毫秒,这样就可以持续地读取并发送模拟数据。
外部库扩展的模拟读取函数(以ADS1115库为例)
- 功能描述:当需要更高精度的模拟数据读取或者更多的模拟输入通道时,可以使用外部的模拟 - 数字转换芯片,如ADS1115。Arduino可以通过相应的库来控制这些芯片进行模拟数据读取。
- 工作原理:ADS1115是一个16 - bit的高精度模拟 - 数字转换器,它通过I2C接口与Arduino通信。通过安装和使用相应的库(例如Adafruit_ADS1x15库),可以在Arduino上方便地读取ADS1115芯片的模拟输入。
- 语法格式(以Adafruit_ADS1x15库为例):
- 首先需要包含库文件
#include <Adafruit_ADS1x15.h>
。 - 然后创建一个
Adafruit_ADS1115 ads;
对象(假设使用ADS1115芯片)。 - 可以使用
ads.readADC_SingleEnded(channel)
函数来读取指定通道的模拟数据,其中channel
是ADS1115芯片上的模拟输入通道编号(0 - 3)。 - 示例代码:
#include <Adafruit_ADS1x15.h> #define I2C_ADDRESS 0x48 // ADS1115的I2C地址 Adafruit_ADS1115 ads; void setup() { Serial.begin(9600); if (!ads.begin(I2C_ADDRESS)) { Serial.println("Failed to initialize ADS1115."); while (1); } } void loop() { int16_t adc0 = ads.readADC_SingleEnded(0); Serial.print("ADC Value on Channel 0: "); Serial.println(adc0); delay(100); }
- 在这个示例中,首先包含了
Adafruit_ADS1x15
库。在setup()
函数中,初始化串口通信,并且尝试初始化ADS1115芯片。如果初始化失败,会在串口监视器中显示错误信息并停止程序。在loop()
函数中,使用ads.readADC_SingleEnded(0)
读取ADS1115芯片的通道0的模拟数据,将其存储在adc0
变量中,然后将这个值发送到串口监视器,并且通过delay(100)
暂停100毫秒,从而实现持续读取。