1.接通电源后就是比较慢的流水灯
2.按一下按钮变成管脚为G16的第一个小灯闪烁
3.再按一下变成模式2,变成比较快的流水灯,三个灯依次闪烁
设备名称 | 设备管脚 | ESP32管脚 |
LED1_PIN | 阳极 | 16 |
LED2_PIN | 阳极 | 17 |
LED3_PIN | 阳极 | 18 |
BUTTON_PIN | 阳极 | 0 |
#define LED1_PIN 16
#define LED2_PIN 17
#define LED3_PIN 18
#define BUTTON_PIN 0
volatile int mode = 0;
void IRAM_ATTR handleButtonPress() {
mode = (mode + 1) % 3;
}
void setup() {
Serial.begin(115200);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), handleButtonPress, FALLING);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
}
void loop() {
switch (mode) {
case 0:
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(1000);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED3_PIN, LOW);
delay(1000);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, HIGH);
delay(1000);
break;
case 1:
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED3_PIN, LOW);
delay(100);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(100);
break;
case 2:
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(200);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED3_PIN, LOW);
delay(200);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, HIGH);
delay(200);
break;
default:
mode = 0;
break;
}
}