Arduino中最常用的四个I/O 函数:digitalRead()/Write()、analogRead()/Write()

文摘   2024-11-18 00:02   湖南  

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的文档,并根据你的具体电路连接选择合适的引脚和参数。


DIY太阳系
分享嵌入式系统知识,写精华文章!
 最新文章