基本信息
文件名称:Arduino 系列:Arduino Uno (基于 ATmega328P)_(7).模拟输入输出.docx
文件大小:25.47 KB
总页数:23 页
更新时间:2025-06-27
总字数:约1.27万字
文档摘要

PAGE1

PAGE1

模拟输入输出

模拟输入

ArduinoUno提供了6个模拟输入引脚(A0到A5),这些引脚可以读取0到5V之间的电压值。模拟输入引脚通常用于读取传感器的数据,如温度传感器、光敏电阻等。读取的电压值会被转换为一个10位的数字值(0到1023之间),这可以通过analogRead()函数实现。

analogRead()函数

analogRead()函数用于读取指定模拟输入引脚的电压值,并将其转换为一个10位的数字值。该函数的语法如下:

intanalogRead(intpin);

参数:

pin:模拟输入引脚编号(A0到A5)。

返回值:

0到1023之间的整数值,表示读取的电压值。

读取模拟输入的示例

假设我们有一个光敏电阻连接到A0引脚,我们可以通过以下代码读取其电压值并打印到串行监视器:

//定义光敏电阻连接的模拟输入引脚

constintlightSensorPin=A0;

voidsetup(){

//初始化串行通信

Serial.begin(9600);

}

voidloop(){

//读取光敏电阻的模拟值

intsensorValue=analogRead(lightSensorPin);

//将读取的值转换为电压

floatvoltage=sensorValue*(5.0/1023.0);

//打印读取的值和电压

Serial.print(SensorValue:);

Serial.println(sensorValue);

Serial.print(Voltage:);

Serial.println(voltage);

//延时一段时间

delay(1000);

}

代码解析

lightSensorPin:定义光敏电阻连接的模拟输入引脚为A0。

Serial.begin(9600):初始化串行通信,波特率为9600。

analogRead(lightSensorPin):读取A0引脚的模拟值。

sensorValue*(5.0/1023.0):将10位的数字值转换为0到5V之间的电压值。

Serial.print和Serial.println:将读取的值和转换后的电压值打印到串行监视器。

delay(1000):延时1000毫秒,即1秒,以便每秒读取一次传感器值。

模拟输出

ArduinoUno提供了6个PWM(脉冲宽度调制)引脚(3,5,6,9,10,11),这些引脚可以模拟输出电压。虽然这些引脚不能真正输出模拟电压,但通过改变PWM信号的占空比,可以实现类似的效果。PWM信号的占空比可以用analogWrite()函数进行控制。

analogWrite()函数

analogWrite()函数用于设置指定PWM引脚的占空比。该函数的语法如下:

voidanalogWrite(intpin,intvalue);

参数:

pin:PWM引脚编号(3,5,6,9,10,11)。

value:占空比值,范围为0到255。

返回值:

无。

产生模拟输出的示例

假设我们有一个LED连接到PWM引脚9,我们可以通过以下代码控制LED的亮度:

//定义LED连接的PWM引脚

constintledPin=9;

voidsetup(){

//设置LED引脚为输出模式

pinMode(ledPin,OUTPUT);

}

voidloop(){

//从0到255逐渐增加LED的亮度

for(intbrightness=0;brightness=255;brightness++){

analogWrite(ledPin,brightness);

delay(30);//延时30毫秒

}

//从255到0逐渐减少LED的亮度

for(intbrightness=255;brightness=0;brightness--){

analogWrite(ledPin,brightness);

delay(30);//延时30毫秒

}

}

代码解析

ledPin:定义LED连接的PWM引脚为9。

pinMode(l