const int ledPins[] = {2, 3, 4, 5}; // LED灯连接的引脚
const int buttonPins[] = {6, 7, 8, 9}; // 按键连接的引脚
const int numLeds = 4; // LED灯的数量
const int numButtons = 4; // 按键的数量
int currentMode = 0; // 当前模式
void setup() {
for(int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
for(int i = 0; i < numButtons; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
// put your setup code here, to run once:
}
void loop() {
for(int i = 0; i < numButtons; i++) {
int buttonState = digitalRead(buttonPins[i]);
if(buttonState == LOW) {
delay(20); // 去抖动
buttonState = digitalRead(buttonPins[i]);
if(buttonState == LOW) {
currentMode = i + 1; // 设置当前模式
while(digitalRead(buttonPins[i]) == LOW); // 等待按键释放
}
}
}
switch(currentMode) {
case 1: // 模式1:按键A按下所有LED灯熄灭
for(int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
break;
case 2: // 模式2:按键B按下所有LED灯点亮
for(int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
}
break;
case 3: // 模式3:按键C按下 L1、L2、L3和L4每间隔1秒依次点亮后全部熄灭再次每间隔1秒依次点亮,依次重复
static bool cycleStarted = false;
static int ledIndex = 0;
if(!cycleStarted) {
cycleStarted = true;
ledIndex = 0;
for(int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
}
digitalWrite(ledPins[ledIndex], HIGH);
ledIndex = (ledIndex + 1) % numLeds;
if(ledIndex == 0) {
cycleStarted = false;
}
delay(1000);
break;
case 4: // 模式4:LED灯的亮度从不亮到最亮,再到不亮,依次重复
static byte brightness = 0; // 亮度级别,范围从0到255
static bool increasing = true; // 控制亮度增加或减少
for(int i = 0; i < numLeds; i++) {
analogWrite(ledPins[i], brightness); // 使用PWM控制亮度
}
if(increasing) {
brightness++; // 增加亮度
if(brightness >= 255) {
increasing = false; // 达到最大亮度后改变方向
}
} else {
brightness--; // 减少亮度
if(brightness <= 0) {
increasing = true; // 达到最小亮度后改变方向
}
}
delay(10); // 控制亮度变化的速率
break;
}
}