16个 LED 从中间到两端,接着从两端到中间依次亮两个灯,再到从上到下依次点亮。循环反复显示这三种状态。单片机代码
时间: 2024-03-09 07:48:33 浏览: 134
以下是基于Arduino平台的代码实现:
```C++
const int LED_NUM = 16; // LED数量
const int LED_PINS[LED_NUM] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1, A2, A3}; // LED引脚
void setup() {
for (int i = 0; i < LED_NUM; i++) {
pinMode(LED_PINS[i], OUTPUT); // 设置LED引脚为输出模式
}
}
void loop() {
// 从中间到两端依次亮两个灯
for (int i = 0; i < LED_NUM / 2; i++) {
digitalWrite(LED_PINS[LED_NUM / 2 - 1 - i], HIGH); // 中间往左灯
digitalWrite(LED_PINS[LED_NUM / 2 + i], HIGH); // 中间往右灯
delay(100); // 延时100ms
}
// 从两端到中间依次亮两个灯
for (int i = 0; i < LED_NUM / 2; i++) {
digitalWrite(LED_PINS[i], HIGH); // 从左往中间灯
digitalWrite(LED_PINS[LED_NUM - 1 - i], HIGH); // 从右往中间灯
delay(100); // 延时100ms
}
// 从上到下依次点亮
for (int i = 0; i < LED_NUM; i++) {
digitalWrite(LED_PINS[i], HIGH); // 从上往下灯
delay(100); // 延时100ms
}
// 关闭所有LED
for (int i = 0; i < LED_NUM; i++) {
digitalWrite(LED_PINS[i], LOW); // 关闭LED
}
}
```
这段代码将16个LED的引脚分别定义为数组,并在`setup()`函数中设置为输出模式。在`loop()`函数中,分别实现从中间到两端依次亮两个灯、从两端到中间依次亮两个灯和从上到下依次点亮三种状态,并通过`digitalWrite()`函数控制LED的亮灭和延时函数`delay()`控制LED的亮灭时间。循环执行三种状态,实现LED灯的动态效果。