利用c语言编一个程序使一个按键控制8个流水灯
时间: 2024-05-08 07:21:27 浏览: 97
以下是一个简单的C语言程序,可以通过按下一个按键来控制8个流水灯:
```c
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#define BUTTON_PIN 0 // 按钮引脚
#define LED_PIN_START 1 // 第一个LED引脚
#define NUM_LEDS 8 // LED数量
int main(void) {
// 初始化WiringPi库
if (wiringPiSetup() == -1) {
printf("Failed to initialize WiringPi library\n");
exit(1);
}
// 设置按钮引脚为输入模式,上拉电阻使其默认为高电平
pinMode(BUTTON_PIN, INPUT);
pullUpDnControl(BUTTON_PIN, PUD_UP);
// 设置LED引脚为输出模式
for (int i = LED_PIN_START; i < LED_PIN_START + NUM_LEDS; i++) {
pinMode(i, OUTPUT);
}
int led_index = 0; // 当前点亮的LED的索引
while (1) {
// 检测按钮是否按下
if (digitalRead(BUTTON_PIN) == LOW) {
// 等待按钮松开
while (digitalRead(BUTTON_PIN) == LOW) {
delay(10);
}
// 关闭当前点亮的LED
digitalWrite(LED_PIN_START + led_index, LOW);
// 计算下一个需要点亮的LED的索引
led_index = (led_index + 1) % NUM_LEDS;
// 点亮下一个LED
digitalWrite(LED_PIN_START + led_index, HIGH);
}
// 稍微延迟一下,防止程序占用过多CPU资源
delay(10);
}
return 0;
}
```
这个程序使用了WiringPi库来控制GPIO引脚,需要在编译时链接该库:
```
gcc -o led_control led_control.c -lwiringPi
```
注意要将`led_control.c`替换为你的源代码文件名。编译后运行程序即可控制8个流水灯。
阅读全文