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