使用 KEI1 单片机实现六路流水灯控制,正反向切换

以下是使用 KEI1 单片机编写的程序,实现您描述的效果:

#include <Kei1.h>

// 定义流水灯的引脚
const int ledPins[] = {2, 3, 4, 5, 6, 7};
const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]);

// 记录流水灯当前状态
int currentLed = 0;
bool direction = true; // 流水灯方向,默认为正向

// 记录上次按键状态
int previousButtonState = HIGH;
bool ledRunning = false;

void setup() {
  // 初始化流水灯引脚
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  // 初始化按键引脚
  pinMode(8, INPUT_PULLUP);
}

void loop() {
  // 读取按键状态
  int buttonState = digitalRead(8);

  // 当检测到按键按下时,流水灯开始运行
  if (buttonState == LOW && previousButtonState == HIGH) {
    ledRunning = !ledRunning; // 切换流水灯状态
    if (ledRunning) {
      currentLed = 0; // 重置流水灯位置
      direction = true; // 设置流水灯方向为正向
    }
  }

  // 当再次检测到按键按下时,流水灯反向闪烁
  if (buttonState == LOW && previousButtonState == LOW && ledRunning) {
    direction = !direction; // 反转流水灯方向
  }

  // 更新流水灯状态
  if (ledRunning) {
    // 点亮当前流水灯
    digitalWrite(ledPins[currentLed], HIGH);
    // 等待一段时间
    delay(100);
    // 关闭当前流水灯
    digitalWrite(ledPins[currentLed], LOW);

    // 更新流水灯位置
    if (direction) {
      currentLed = (currentLed + 1) % numLeds; // 正向
    } else {
      currentLed = (currentLed - 1 + numLeds) % numLeds; // 反向
    }
  }

  // 更新上次按键状态
  previousButtonState = buttonState;
}

这段程序使用 KEI1 单片机来控制六个流水灯的运行。当检测到按键按下时,流水灯开始运行,每个流水灯依次点亮并熄灭。当再次检测到按键按下时,流水灯反向闪烁,即流水灯的亮灭顺序反转。程序通过读取按键状态来确定何时启动和反转流水灯,并使用延迟函数来控制流水灯的运行速度。

请注意,这只是一个简单的示例,需要根据具体的硬件和开发环境进行适当的调整和测试。

KEI1 单片机实现六路流水灯控制,正反向切换

原文地址: http://www.cveoy.top/t/topic/bP4W 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录