ESP8266-Arduino编程实例-GPIO输入和输出

GPIO输入和输出

本实例将演示如何通过GPIO的输入和输出功能控制LED。

1、GPIO输入与输出控制

1)GPIO模式设置

通过函数pinMode可以将GPIO设置为输入或输出模式:

1
2
3
pinMode(pin,INPUT); // 设置为输入模式
pinMode(pin,OUTPUT); // 设置为输出模式

2)GPIO状态设置

通过函数digitalWrite函数可以控制GPIO的状态:

1
2
3
digitalWrite(pin,HIGH);// 输出高电平
digitalWrite(pin,LOW);// 输出低电平

3)GPIO状态读取

通过函数digitalRead函数可以读取GPIO的状态。当GPIO为高电平时,返回HIGH;当GPIO为低电平是,返回LOW。

1
2
int state = digitalRead(pin);

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • 微动开关一个
  • LED一个
  • 470欧姆电阻两个
  • 杜邦线若干
  • 数据线一条

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、硬件电路接线图

在这里插入图片描述

引脚D1(GPIO5)连接LED引脚,引脚D2(GPIO4)连接按钮引脚。

5、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <Arduino.h>
// 设置GPIO引脚
const int buttonPin = 4; // 按钮引脚
const int ledPin = 5; // LED引脚

// 按钮状态
int buttonState = 0;

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

void loop() {
// 读取按钮引脚状态
buttonState = digitalRead(buttonPin);
// 检查按钮引脚状态是否为高电平
if (buttonState == HIGH) {
// 设置LED引脚输出高电平,点亮
digitalWrite(ledPin, HIGH);
} else {
// 设置LED引脚输出低电平,关闭
digitalWrite(ledPin, LOW);
}
}

6、代码解析

1)分配引脚

1
2
3
const int buttonPin = 4;    // 按钮引脚
const int ledPin = 5; // LED引脚

2)按钮状态储存

1
2
int buttonState = 0;

3)初始化引脚

setup函数中,初始化LED和按钮引脚工作模式。INPUT为输入模式;OUTPUT为输出模式。

1
2
3
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);

4)按钮状态读取及LED控制

loop函数中,通过digitalRead函数读取按钮状态:

1
2
buttonState = digitalRead(buttonPin);

当按钮状态为HIGH时,点亮LED:

1
2
3
4
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}

否则,关闭LED:

1
2
3
4
else {
digitalWrite(ledPin, LOW);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/125990188