ESP32 数字输入和数字输出(Arduino IDE)
在本文中,您将学习如何使用 ESP32 和 Arduino IDE 读取数字输入(例如按钮开关)以及控制数字输出(例如 LED)。
ESP32 控制数字输出
首先,您需要将要控制的GPIO设置为output。使用pinMode()函数如下:
pinMode(GPIO, OUTPUT);
要控制数字输出,您只需使用digitalWrite()函数,它接受您所引用的 GPIO(整数)以及状态作为参数HIGH或者LOW的。
digitalWrite(GPIO, STATE);
除 GPIO 6 至 11(连接到集成 SPI flash)和 GPIO 34、35、36 和 39(仅输入 GPIO)外,所有 GPIO 均可用作输出;
ESP32 读取数字输入
首先,设置你想要读取的GPIO为INPUT, 使用pinMode()函数如下:
pinMode(GPIO, INPUT);
要读取digital input(例如按钮),您可以使用digitalRead()函数,它接受您所引用的 GPIO(整数)作为参数。
digitalRead(GPIO);
除 GPIO 6 至 11(连接到集成 SPI 闪存)外,所有 ESP32 GPIO 均可用作输入。
项目实例
为了向您展示如何使用数字输入和数字输出,我们将构建一个带有按钮和 LED 的简单项目示例。我们将读取按钮的状态并相应地点亮 LED,如下图所示。
原理图,示意图w
在继续之前,您需要组装一个带有 LED 和按钮的电路。我们将 LED 连接到GPIO5和按钮GPIO4。
所需零件
以下是构建电路所需的部件列表:
代码
将以下代码复制到您的 Arduino IDE。
// Complete Instructions: https://RandomNerdTutorials.com/esp32-digital-inputs-outputs-arduino/
// set pin numbers
const int buttonPin = 4; // the number of the pushbutton pin
const int ledPin = 5; // the number of the LED pin
// variable for storing the pushbutton status
int buttonState = 0;
void setup() {
Serial.begin(115200);
// initialize the pushbutton pin as an input
pinMode(buttonPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the pushbutton value
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH
if (buttonState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}
代码如何运作
在以下两行中,您创建变量来分配引脚:
const int buttonPin = 4;
const int ledPin = 5;
该按钮连接到GPIO4LED 连接到GPIO5。当将 Arduino IDE 与 ESP32 一起使用时,4 对应GPIO4,,5对应于GPIO5。
接下来,您创建一个变量来保存按钮状态。默认情况下,它是 0(未按下)。
int buttonState = 0;
在里面setup(),您将按钮初始化为input,并且 LED 作为输出。
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
在里面loop()在这里您可以读取按钮状态并相应地设置 LED。
在下一行中,您读取按钮状态并将其保存在按钮状态多变的。正如我们之前所看到的,您使用digitalRead()功能。
buttonState = digitalRead(buttonPin);
下面的 if 语句,检查按钮状态是否为HIGH。如果是,则使用以下命令打开 LEDdigitalRead()接受作为参数的函数LED 引脚,以及HIGH。
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
如果按钮状态不是HIGH,您将 LED 关闭。刚刚设置LOW的作为digitaWritel()第二个参数。
else {
digitalWrite(ledPin, LOW);
}
上传代码
在单击上传按钮之前,请转到 “工具” > “开发板”,然后选择您正在使用的开发板。就我而言,它是DOIT ESP32 DEVKIT V1 板。
进入工具>端口并选择 ESP32 连接的 COM 端口。然后,按上传按钮并等待“上传完成”消息。