基本信息
文件名称:Arduino 系列:Arduino MKR1000 (基于 SAMD21)_(8).模拟输入输出操作.docx
文件大小:26.38 KB
总页数:25 页
更新时间:2025-06-27
总字数:约1.33万字
文档摘要

PAGE1

PAGE1

模拟输入输出操作

模拟输入

模拟输入引脚

ArduinoMKR1000配备了多个模拟输入引脚,这些引脚可以读取范围在0到3.3V之间的模拟电压值。模拟输入引脚通常用于连接传感器,如温度传感器、光敏电阻等,这些传感器会输出连续的电压值。

读取模拟输入

使用analogRead()函数可以读取模拟输入引脚上的电压值。analogRead()函数返回一个0到1023之间的整数值,对应于0到3.3V的电压范围。这个函数的语法如下:

intanalogRead(intpin);

pin:指定要读取的模拟输入引脚编号。

示例:读取光敏电阻的电压值

假设我们使用一个光敏电阻连接到模拟输入引脚A0,并通过一个10kΩ的电阻将其与GND连接。光敏电阻的另一端连接到3.3V电源。当光线变强时,光敏电阻的阻值会变小,从而使得分压后的电压值变大。

以下是一个读取光敏电阻电压值的示例代码:

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

constintlightSensorPin=A0;

voidsetup(){

//初始化串口通信

Serial.begin(9600);

}

voidloop(){

//读取光敏电阻的电压值

intsensorValue=analogRead(lightSensorPin);

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

floatvoltage=sensorValue*(3.3/1023.0);

//通过串口打印电压值

Serial.print(LightSensorVoltage:);

Serial.print(voltage);

Serial.println(V);

//延迟1秒

delay(1000);

}

代码解释

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

constintlightSensorPin=A0;

这里我们定义了一个常量lightSensorPin,表示光敏电阻连接到A0引脚。

初始化串口通信:

Serial.begin(9600);

在setup()函数中,我们初始化了串口通信,波特率设置为9600。

读取光敏电阻的电压值:

intsensorValue=analogRead(lightSensorPin);

在loop()函数中,我们使用analogRead()函数读取A0引脚上的电压值,并将其存储在sensorValue变量中。

将读取的电压值转换为实际电压:

floatvoltage=sensorValue*(3.3/1023.0);

读取的sensorValue是一个0到1023之间的整数,我们需要将其转换为实际的电压值。这里使用了公式voltage=sensorValue*(3.3/1023.0),其中3.3是电源电压,1023是analogRead()函数的最大返回值。

通过串口打印电压值:

Serial.print(LightSensorVoltage:);

Serial.print(voltage);

Serial.println(V);

使用Serial.print()和Serial.println()函数将读取到的电压值通过串口打印出来。

延迟1秒:

delay(1000);

为了让读取和打印操作更有节奏,我们在每次循环之间延迟1秒。

模拟输出

模拟输出引脚

ArduinoMKR1000的数字引脚可以通过PWM(脉冲宽度调制)产生模拟输出。PWM是一种通过改变脉冲的宽度来模拟连续的电压值的技术。虽然这些引脚不能直接输出连续的电压值,但可以通过高频率的脉冲波形来实现类似的效果。

生成模拟输出

使用analogWrite()函数可以生成PWM信号。analogWrite()函数的语法如下:

voidanalogWrite(intpin,intvalue);

pin:指定要输出PWM信号的数字引脚编号。

value:指定PWM信号的占空比,范围是0到255。0表示0%占空比(即输出0V),255表示100%占空比(即输出3.3V)。

示例:控制LED的亮度

假设我们使用一个LED连接到数字引脚9,并通过一个220Ω的电阻将其与GND连接。我们可以通过改变PWM信号的占空比来控制LED的亮度。

以下是一个控制LED亮度的示例代码: