Arduino以其简单易用性而闻名,这很大程度上归功于其提供的简易I/O (输入/输出) 函数。本文将深入探讨Arduino中最常用的四个I/O 函数:
digitalRead()
、digitalWrite()
、analogRead()
和analogWrite()
,并通过具体的示例代码来演示它们的使用方法及注意事项。
一、数字读写:掌控高低电平的艺术 ( digitalRead()
& digitalWrite()
)
Arduino板载了许多数字引脚,这些引脚只能处于两种状态:高电平(HIGH,通常为5V)或低电平(LOW,通常为0V)。digitalWrite()
用于将数字引脚设置为高电平或低电平,而digitalRead()
用于读取数字引脚的当前状态。
digitalWrite()
函数详解:
语法:digitalWrite(pin, value);
参数:
•
pin
: 需要控制的数字引脚号 (例如:2, 7, 13)。•
value
: 要设置的值,可以是HIGH
或LOW
。
示例:将数字引脚13设置为高电平:
digitalWrite(13, HIGH);
这将使连接到数字引脚13的LED灯亮起(前提是LED灯正确连接到引脚13和GND)。 要将它熄灭,则使用:
digitalWrite(13, LOW);
digitalRead()
函数详解:
语法:digitalRead(pin);
参数:
•
pin
: 需要读取的数字引脚号。
返回值:
•
HIGH
: 如果引脚处于高电平。•
LOW
: 如果引脚处于低电平。
示例:读取数字引脚2的状态,并将结果打印到串口监视器:
int sensorPin =2;
int sensorValue =0;
void setup() {
Serial.begin(9600);// 初始化串口通信
pinMode(sensorPin,INPUT);// 设置引脚2为输入模式
}
void loop() {
sensorValue =digitalRead(sensorPin);
Serial.println(sensorValue);
delay(100);// 延时100毫秒
}
这段代码将数字引脚2设置为输入模式,然后不断读取引脚2的状态,并将读取的结果(HIGH或LOW)打印到串口监视器。 注意pinMode()
函数,它用于设置引脚的模式,对于数字引脚,可以使用INPUT
(输入) 或 OUTPUT
(输出)。
二、模拟读取:感知模拟世界的细微变化 ( analogRead()
)
Arduino也拥有模拟引脚,它们可以读取0到5V之间的电压值,并将其转换为0到1023之间的数字值。analogRead()
函数用于读取模拟引脚的电压值。
analogRead()
函数详解:
语法:analogRead(pin);
参数:
•
pin
: 需要读取的模拟引脚号 (通常是A0-A5)。
返回值:
• 0-1023 之间的整数,代表模拟电压值。 0对应0V,1023对应5V。
示例:读取模拟引脚A0的值,并将结果打印到串口监视器:
int sensorPin = A0;
int sensorValue =0;
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue =analogRead(sensorPin);
Serial.println(sensorValue);
delay(100);
}
这段代码读取模拟引脚A0的电压值,并将结果打印到串口监视器。 你可以将一个电位器连接到A0引脚和GND,然后通过旋转电位器来改变电压值,观察串口监视器中的数值变化。
三、模拟写入:精准控制PWM输出 ( analogWrite()
)
analogWrite()
函数用于向数字引脚输出脉冲宽度调制(PWM)信号。PWM信号并非真正的模拟信号,而是通过快速切换高低电平来模拟模拟输出,从而实现对电压的精细控制。
analogWrite()
函数详解:
语法:analogWrite(pin, value);
参数:
•
pin
: 支持PWM输出的数字引脚 (并非所有数字引脚都支持PWM,具体支持的引脚请参考Arduino型号的规格说明)。•
value
: 0-255之间的整数,代表PWM占空比。0对应0%占空比(低电平),255对应100%占空比(高电平)。
示例:使用PWM控制LED的亮度:
int ledPin =9;// 假设引脚9支持PWM
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
for(int i =0; i <256; i++){
analogWrite(ledPin, i);
delay(10);
}
for(int i =255; i >=0; i--){
analogWrite(ledPin, i);
delay(10);
}
}
这段代码会逐渐增加LED的亮度,然后再逐渐减小,从而实现LED的亮度渐变效果。
通过熟练掌握这四个I/O函数,你就能轻松控制Arduino与外部电路的交互,为你的各种创意项目奠定坚实的基础。记住,在使用之前,务必仔细阅读Arduino的文档,并根据你的具体电路连接选择合适的引脚和参数。