Arduino开发_数字IO操作

数字IO操作

在Arduino中,我们只需要选择相应的开发板以及MCU就可以非常方便的去使用以及控制开发板的片上以及片内外设,因为Arduino在各开发板对应的库中,将所需要用到的外设,做好了封装,开发者只需要调用API接口就OK。
对于IO口 会用到的函数,一般主要是负责以下几个功能:模式配置,引脚控制。

1、引脚模式配置

pinMode()函数是Arduino提供的用来配置引脚模式的接口函数,对于Arduino Nano 来说,引脚模式有三类,INPUT(输入模式)、OUTPUT(输出模式)、INPUT_PULLUO(上拉输入)。

//pinMode()函数的使用格式
pinMode(pin,mode);
//pinMode()使用示例
pinMode(13,OUTPUT);  //配置数字引脚 13脚为输出模式
pinMode(A0,INPUT); //配置模拟引脚A0为输入模式

2、Nano 引脚介绍

可能有些人没有接触过Arduino,我们来看一下Arduino的引脚划分。
在这里插入图片描述

  • 1、紫色表示数字引脚
  • 2、绿色表示模拟引脚
  • 3、关于几个模拟引脚的注意点
    • A6、A7 仅可以作为模拟引脚使用
    • A4、A5 除模拟功能外,可以作为IIC总线使用
  • 4、关于其他的复用功能引脚,在上面也都有显示,比如TXD、RXD等

3、引脚操作

看完引脚的划分,我们回到引脚的使用上,在对模式配置完成之后,我们可以来对引脚进行读或者写操作。读是获取外界传回的电平信息,写是通过IO输出高、低电平。主要使用 digitalWrite()函数

digitalWrite(pin,value);  //函数使用示
digitalWrite(13,HIGH);  //配置 13脚输出 高电平
digitalWrite(13,LOW);   //配置 13脚输出 低电平

4、控制引脚点亮 LED

#include <Arduino.h>

#define LED 13

//setup 函数,当板子通电或执行复位时运行一次
void setup() {
    
    
  // put your setup code here, to run once:

  //初始化数字引脚LED为输出
  pinMode(LED,OUTPUT);

}

//loop 函数,继setup函数之后循环运行的函数
void loop() {
    
    
  // put your main code here, to run repeatedly:
  digitalWrite(LED,HIGH);
  delay(1000);       //延时函数,Arduino库中已经提供,直接调用即可
  digitalWrite(LED,LOW);
  delay(1000);
}

5、多引脚的使用

这里我们来举例一个流水灯,来看一下多个引脚的使用

#include<Arduino.h>

void setup()
{
    
    
  //通过for循环初始化 LED 引脚2 到 引脚7 为输出模式
  for(int i = 2;i < 8; ++i) 
  {
    
    
    pinMode(i,OUTPUT);
  }
}

void loop()
{
    
    
  //从引脚2 到 引脚6 ,点亮LED,等待500ms再熄灭LED
  for(int i = 2;i < 7;++i)
  {
    
    
    digitalWrite(i,HIGH);
    delay(500);
    digitalWrite(i,LOW);
  }
}

本质上就是通过一个for循环对引脚进行一个轮询,进而实现对引脚的逐个操作,当然这种操作弊端也有,比如引脚不连续时,就存在一定不合理性,具体的等聊到类似案例再细说。

6、IO输入

关于IO的输入,最入门的莫过于按键了,我们就从一个按键点灯的示例来看一下检测IO输入的一个具体操作。

#include<Arduino.h>

//设置常量
const int buttonPin = 2;  //需要检测的按键引脚
const int ledPin = 13;    //LED 引脚

//设置变量
int buttonState = 0;  //存储按键状态的变量

void setup()
{
    
    
  //初始化 LED 引脚 为输出模式
  pinMode(ledPin,OUTPUT);
  //初始化按键为输入模式
  pinMode(buttonPin,INPUT);
}

void loop()
{
    
    
  //读取按键引脚状态赋值给 buttonState
  buttonState = digitalRead(buttonPin);
  //检测按键是否按下,当按键按下时将返回高电平
  if(buttonState == HIGH)
  {
    
    
    digitalWrite(ledPin,HIGH);
  }
  else
  {
    
    
    digitalWrite(ledPin,LOW);
  }
}

这里我们主要有两个操作,一个是定义了一个变量,用来存储从IO读到的电平信息,一个是调用了 digitalRead()函数来读取IO的电平信息。
然后通过digitalRead()函数获取IO电平信息后,存储进变量,然后对变量进行判断,选择是否点亮LED。

Guess you like

Origin blog.csdn.net/qq_54357381/article/details/122507246