基本信息
文件名称:Arduino 系列:Arduino Leonardo (基于 ATmega32U4)_(8).Arduino Leonardo模拟输入输出.docx
文件大小:23.07 KB
总页数:18 页
更新时间:2025-06-27
总字数:约7.91千字
文档摘要

PAGE1

PAGE1

ArduinoLeonardo模拟输入输出

模拟输入

ArduinoLeonardo提供了12个模拟输入端口,这些端口可以读取0到5V之间的电压值,并将其转换为10位的数字值(0到1023之间)。模拟输入通常用于读取传感器的输出,例如温度传感器、光照传感器等。

原理

ArduinoLeonardo的模拟输入端口使用的是模数转换器(ADC),它将连续的模拟信号转换为离散的数字信号。ATmega32U4芯片内置了一个10位的ADC,这意味着它可以将0到5V的电压范围转换为1024个不同的数字值。每个模拟输入端口都可以独立配置和使用。

读取模拟输入

读取模拟输入的函数是analogRead(),该函数接受一个模拟输入端口号作为参数,并返回0到1023之间的数字值。以下是一个简单的例子,读取A0端口的电压值并打印到串口监视器。

//读取模拟输入并打印到串口监视器

voidsetup(){

//初始化串口通信

Serial.begin(9600);

}

voidloop(){

//读取A0端口的模拟值

intsensorValue=analogRead(A0);

//打印模拟值到串口监视器

Serial.print(模拟值:);

Serial.println(sensorValue);

//延时1秒

delay(1000);

}

电压参考

ArduinoLeonardo支持多种电压参考选项,可以通过analogReference()函数进行配置。常见的电压参考选项有:

DEFAULT:默认的5V电压参考。

INTERNAL:内部的1.1V电压参考。

EXTERNAL:外部提供的电压参考(通过AREF引脚)。

以下是一个使用内部1.1V电压参考的例子:

voidsetup(){

//设置电压参考为内部1.1V

analogReference(INTERNAL);

//初始化串口通信

Serial.begin(9600);

}

voidloop(){

//读取A0端口的模拟值

intsensorValue=analogRead(A0);

//打印模拟值到串口监视器

Serial.print(模拟值:);

Serial.println(sensorValue);

//延时1秒

delay(1000);

}

模拟输出

ArduinoLeonardo没有真正的模拟输出端口,但它可以通过脉冲宽度调制(PWM)来模拟模拟输出。PWM是一种通过改变脉冲的占空比来模拟不同电压的技术。ArduinoLeonardo提供了7个支持PWM的数字端口,分别是3,5,6,9,10,11和13。

原理

PWM通过在固定的时间周期内改变高电平和低电平的持续时间来生成模拟信号。占空比是指高电平时间占整个周期时间的比例。例如,50%的占空比意味着高电平和低电平的时间各占一半。

生成PWM信号

生成PWM信号的函数是analogWrite(),该函数接受一个数字端口号和一个0到255之间的值作为参数。0表示0%占空比(始终低电平),255表示100%占空比(始终高电平)。

以下是一个简单的例子,通过PWM控制一个LED的亮度:

//定义LED连接的PWM端口

constintledPin=9;

voidsetup(){

//设置LED端口为输出模式

pinMode(ledPin,OUTPUT);

}

voidloop(){

//逐渐增加LED的亮度

for(inti=0;i=255;i++){

analogWrite(ledPin,i);

delay(10);

}

//逐渐减少LED的亮度

for(inti=255;i=0;i--){

analogWrite(ledPin,i);

delay(10);

}

}

模拟输入输出的应用实例

读取光照传感器并控制LED

在这个例子中,我们将使用一个光照传感器(LDR)来读取环境光照强度,并根据光照强度控制一个LED的亮度。LDR的输出电压与光照强度成反比,光照越强,电压越低。

//定义LD