由于红绿灯自动切换系统需要与外部硬件进行交互,因此需要使用与硬件相关的库函数。以下是一个简单的红绿灯自动切换程序示例,使用Arduino开发板和Arduino编程环境。

首先,需要引入Arduino的头文件,并定义红绿灯的引脚号:

#include <Arduino.h>

const int redPin = 3;
const int yellowPin = 5;
const int greenPin = 6;

然后,在setup函数中初始化引脚:

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
}

接下来,定义一个状态枚举类型,表示红绿灯的不同状态:

enum State {
  GREEN,
  YELLOW,
  RED
};

在loop函数中,定义一个状态变量,并根据不同状态控制红绿灯的亮灭:

void loop() {
  static State state = GREEN;

  switch (state) {
    case GREEN:
      digitalWrite(greenPin, HIGH);
      digitalWrite(yellowPin, LOW);
      digitalWrite(redPin, LOW);
      delay(5000);
      state = YELLOW;
      break;

    case YELLOW:
      digitalWrite(greenPin, LOW);
      digitalWrite(yellowPin, HIGH);
      digitalWrite(redPin, LOW);
      delay(2000);
      state = RED;
      break;

    case RED:
      digitalWrite(greenPin, LOW);
      digitalWrite(yellowPin, LOW);
      digitalWrite(redPin, HIGH);
      delay(5000);
      state = GREEN;
      break;
  }
}

程序运行时,会不断循环执行loop函数,从而实现红绿灯的自动切换。具体来说,程序首先将状态变量设为GREEN,即绿灯亮,其余两个灯灭。然后等待5秒钟,再将状态变量设为YELLOW,即黄灯亮,其余两个灯灭。等待2秒钟后,将状态变量设为RED,即红灯亮,其余两个灯灭。再等待5秒钟后,将状态变量设为GREEN,重新开始循环。

完整程序如下:

#include <Arduino.h>

const int redPin = 3;
const int yellowPin = 5;
const int greenPin = 6;

enum State {
  GREEN,
  YELLOW,
  RED
};

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
}

void loop() {
  static State state = GREEN;

  switch (state) {
    case GREEN:
      digitalWrite(greenPin, HIGH);
      digitalWrite(yellowPin, LOW);
      digitalWrite(redPin, LOW);
      delay(5000);
      state = YELLOW;
      break;

    case YELLOW:
      digitalWrite(greenPin, LOW);
      digitalWrite(yellowPin, HIGH);
      digitalWrite(redPin, LOW);
      delay(2000);
      state = RED;
      break;

    case RED:
      digitalWrite(greenPin, LOW);
      digitalWrite(yellowPin, LOW);
      digitalWrite(redPin, HIGH);
      delay(5000);
      state = GREEN;
      break;
  }
}
用C+语音编程红绿灯自动切换

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

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