用C+语音编程红绿灯自动切换
由于红绿灯自动切换系统需要与外部硬件进行交互,因此需要使用与硬件相关的库函数。以下是一个简单的红绿灯自动切换程序示例,使用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;
}
}
原文地址: http://www.cveoy.top/t/topic/mHb 著作权归作者所有。请勿转载和采集!