int ledYellow = 3;
int ledGreen = 4;
void setup() {
pinMode(ledRed,OUTPUT);
pinMode(ledYellow,OUTPUT);
pinMode(ledGreen,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(ledRed,HIGH);
delay(5000);
digitalWrite(ledYellow,HIGH);
delay(2000);
digitalWrite(ledRed,LOW);
digitalWrite(ledYellow,LOW);
digitalWrite(ledGreen,HIGH);
delay(5000);
digitalWrite(ledGreen,LOW);
digitalWrite(ledYellow,HIGH);
delay(2000);
digitalWrite(ledYellow,LOW);
} 红绿灯。。。//手写红绿灯
int yellow = 10;
int red = 3;
int green = 4;
void setup() {
// put your setup code here, to run once:
pinMode(yellow,OUTPUT);
pinMode(red,OUTPUT);
pinMode(green,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int i = 0;
for (i=0;i<5;i++){
digitalWrite(red,HIGH);
delay(1000);
}
digitalWrite(red,LOW);
for (i=0;i<2;i++){
digitalWrite(yellow,HIGH);
delay(1000);
}
digitalWrite(yellow,LOW);
for (i=0;i<5;i++){
digitalWrite(green,HIGH);
delay(1000);
}
digitalWrite(green,LOW);
for (i=0;i<2;i++){
digitalWrite(yellow,HIGH);
delay(1000);
}
digitalWrite(yellow,LOW);
}
本帖最后由 Cloud-Tifa 于 2023-4-30 18:33 编辑
int red = 7, yellow = 3, green = 4;
void setup() { pinMode(red,OUTPUT);
pinMode(yellow,OUTPUT);
pinMode(green,OUTPUT);
}
void loop() {
digitalWrite(red,HIGH);
digitalWrite(yellow,LOW);
digitalWrite(green,LOW);
delay(5000);
digitalWrite(red,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(green,LOW);
delay(2000);
digitalWrite(red,LOW);
digitalWrite(yellow,LOW);
digitalWrite(green,HIGH);
delay(5000);
digitalWrite(red,LOW);
digitalWrite(yellow,HIGH);
digitalWrite(green,LOW);
delay(2000);
}
就4个状态嘛简单粗暴实现
本帖最后由 业余潜水员 于 2024-8-19 17:02 编辑选了一个最简单粗暴的做法实现红绿灯.反正就4个状态嘛,那就直接全局变量状态,然后判断状态值是什么再显示,简单粗暴其实不错,代码不贴了太简单
新手买了个板子正在学,刚写的,有问题的话请指教。
本帖最后由 B5oi0T0lyJ7m 于 2025-11-9 18:36 编辑int hongdeng =13; //变量hongdeng =13号端口//
int huangdeng =12;//变量huangdeng =12号端口//
int lvdeng =8; //变量lvdeng =8号端口//
void setup(){ //首先调用steuo 查看输出类型 配置串口 只运行一次不会重复运行//
pinMode(hongdeng,OUTPUT);//pinMode就是函数调用 调用红灯 设置为O输出模式//
pinMode(huangdeng,OUTPUT); //pinMode就是函数调用 调用黄灯 设置为O输出模式//
pinMode(lvdeng,OUTPUT); //pinMode就是函数调用 调用绿灯 设置为O输出模式//
}
void loop(){
//下面给绿灯添加长时亮起和循环闪烁//
digitalWrite(lvdeng,HIGH);//引用绿灯 给予5V电压//
delay(5000); //延时4秒//
digitalWrite(lvdeng,LOW); //引用绿灯 给予0V电压//
int o = 0; //设置变量o为0//
for(o=0;o<4;o++){ //设置for循环 每循环一次加一 大于三次结束//
digitalWrite(lvdeng,HIGH);// 引用绿灯 给予5V电压//
delay(400); // 延时0.4秒//
digitalWrite(lvdeng,LOW); //给予绿灯0V电压//
delay(400); //延时0.4秒//
}
//下面给黄灯添加长时亮起和循环闪烁//
digitalWrite(huangdeng,HIGH);//引用黄灯 给予5V电压//
delay(1000); //延时4秒//
digitalWrite(huangdeng,LOW); //引用黄灯 给予0V电压//
int i = 0; //设置变量i为0//
for(i=0;i<4;i++){ //设置for循环 每循环一次加一 大于三次结束//
digitalWrite(huangdeng,HIGH);// 引用黄灯 给予5V电压//
delay(400); // 延时0.4秒//
digitalWrite(huangdeng,LOW); //给予黄0V电压//
delay(400); //延时0.4秒//
}
//下面给红灯添加长时亮起和循环闪烁
digitalWrite(hongdeng,HIGH);//引用红灯 给予5V电压//
delay(5000); //延时4秒//
digitalWrite(hongdeng,LOW); //引用红灯 给予0V电压//
int x = 0; //设置变量X为0//
for(x=0;x<4;x++){ //设置for循环 每循环一次加一 大于三次结束//
digitalWrite(hongdeng,HIGH);// 引用红灯 给予5V电压//
delay(400); // 延时0.4秒//
digitalWrite(hongdeng,LOW); //给予红灯0V电压//
delay(400); //延时0.4秒//
}
//最后给一个小小的延时 告诉我 它在等在重新出发 哈哈哈哈哈//
delay(2000);
}附件里是完整版的详解内容,不让发太多文字,就剪辑了一部分。只针对本章学习的内容作品。
根据本章内容做的,每行都写了注解,有问题请指教.
// 项目 - 交通信号灯int carRed = 13; // 汽车红灯引脚
int carYellow = 12; // 汽车黄灯引脚
int carGreen = 8;// 汽车绿灯引脚
int button = 2; // 按钮引脚
int pedRed = 7; // 行人红灯引脚
int pedGreen = 4; // 行人绿灯引脚
int crossTime = 5000; // 允许行人通过的时间(毫秒)
unsigned long changeTime; // 按钮按下后的时间
void setup() {
pinMode(carRed, OUTPUT);//灯光设置为输出
pinMode(carYellow, OUTPUT);//灯光设置为输出
pinMode(carGreen, OUTPUT);//灯光设置为输出
pinMode(pedRed, OUTPUT);//灯光设置为输出
pinMode(pedGreen, OUTPUT);//灯光设置为输出
pinMode(button, INPUT); // 按钮设置为输入模式
// 初始状态设置
digitalWrite(carRed, HIGH); // 车行红灯亮
digitalWrite(pedGreen, HIGH); // 人行绿灯亮
}
void loop() {
int state = digitalRead(button);//state状态=digitaLRead函数 读取状态(botton按钮)
// 检测按钮状态及时间间隔
if (state == HIGH && (millis() - changeTime) > 5000) { //if判断(state状态==高电平HIGH 与&& (系统运行时间millis() 减- 按钮按下去的时间chuangeTime) 小于> 5秒 5000
// 调用变灯函数
changeLights();
}
}
void changeLights() { //这里其实我目前还不是很理解.前面那个调用变灯函数和这里的关系.
//给初始化的行人绿灯闪烁
for (int x = 0; x < 3; x++) { //循环指令
digitalWrite(pedGreen, HIGH);//打开行人绿灯
delay(400); //等待0.4秒
digitalWrite(pedGreen, LOW); //关闭行人绿灯
delay(400); //等待0.4秒
} //循环3次结束
digitalWrite(pedGreen,LOW); //关闭行人绿灯
delay(500); //等待0.5秒
digitalWrite(pedRed,HIGH); //开启行人红灯
delay(1000); //等待1秒,显得自然
for (int i = 0; i < 3; i++){ //循环指令
digitalWrite(carRed,LOW); //关闭车辆红灯
delay(400); //等待0.4秒
digitalWrite(carRed,HIGH); //打开车辆红灯
delay(400); //等待0.4秒
} //循环3次结束
digitalWrite(carRed,LOW); //关闭车辆红灯
delay(500); //等待0.5秒
digitalWrite(carYellow,HIGH); //打开车辆黄灯
delay(1000); //等待1秒
for (int o = 0; o < 3; o++){ //循环指令
digitalWrite(carYellow,LOW); //车辆黄灯关闭
delay(400); //等待0.4秒
digitalWrite(carYellow,HIGH);//车辆黄灯打开
delay(400); //等待0.4秒
} //循环3次结束
digitalWrite(carYellow,LOW); //车辆黄灯关闭
delay(500); //等待0.5秒
digitalWrite(carGreen,HIGH); //打开车辆绿灯
delay(10000); //等待10秒
for (int y = 0; y < 3; y++){ //循环指令
digitalWrite(carGreen,LOW); //关闭车辆绿灯
delay(400); //等待0.4秒
digitalWrite(carGreen,HIGH); //打开车辆绿灯
delay(400); //等待0.4秒
} //循环3次结束
digitalWrite(carGreen,LOW); //关闭车辆绿灯
digitalWrite(pedRed,LOW); //关闭行人红灯
delay(500); //等待0.5秒
digitalWrite(carRed,HIGH); //打开车辆红灯,回到初始状态
digitalWrite(pedGreen,HIGH); //打开行人绿灯.回到初始状态
// 更新changeTime
changeTime = millis();
}根据本章知识做的,有问题欢迎指正.
页:
1
[2]