写一篇代码arduino三个按键控制一个led灯不同呼吸频率,要求呼吸灯一开始是熄灭的,
时间: 2024-09-29 17:01:31 浏览: 88
WS2812B(PWM+DMA)_rgb灯_RGB呼吸灯_PWM控制LED_ws2812b_rgb灯全彩
5星 · 资源好评率100%
当然可以。在Arduino Uno或者类似板子上,你可以使用数字输入端口(pin0到pin13)作为按键,并连接一个LED灯来实现这个功能。这里是一个基本的示例代码,使用了`delay()`函数来模拟不同频率的呼吸效果:
```cpp
// 定义按键A、B和C
int buttonA = 2; // 例如连接到数字2的按键A
int buttonB = 3; // 例如连接到数字3的按键B
int buttonC = 4; // 例如连接到数字4的按键C
// LED灯的连接
int ledPin = 13; // 连接到数字13的LED灯,正极接5V,负极接地
void setup() {
pinMode(buttonA, INPUT_PULLUP); // 按键A配置为拉高模式
pinMode(buttonB, INPUT_PULLUP);
pinMode(buttonC, INPUT_PULLUP);
pinMode(ledPin, OUTPUT); // LED设置为输出
}
void loop() {
if (digitalRead(buttonA) == LOW) { // 如果按下按钮A
breatheLight(true); // 开始LED灯呼吸
} else if (digitalRead(buttonB) == LOW) { // 同理,如果按下B或C
breatheLight(false); // 停止LED灯呼吸
}
delay(50); // 稍微延迟一下,让按键释放后有反应时间
}
// 手动控制LED灯呼吸
void breatheLight(bool on) {
int freq[] = {1000, 2000, 3000}; // 设置三种呼吸频率数组
int index = on ? 0 : 2; // 如果开启则从第一个频率开始,关闭则是最后一个
for (int i = 0; ; i++) { // 循环呼吸
digitalWrite(ledPin, HIGH); // 点亮LED
delay(freq[index]);
digitalWrite(ledPin, LOW); // 熄灭LED
delay(freq[index] / 2);
if (i >= 2) { // 如果达到两个周期就切换频率
index = (index + 1) % 3;
}
}
}
```
在这个代码中,当你按下按键A时,LED灯开始以第一种频率呼吸;按下B或C则停止呼吸。注意你需要根据实际硬件连接调整按键和LED的引脚编号。
阅读全文