南酥北穆 发表于 2019-4-16 13:43:55

关于红绿灯有一个问题享有求助一下

本帖最后由 南酥北穆 于 2019-4-16 13:45 编辑

做了一个测试 就是标准的红绿灯测试 我想在黄灯时候使用for语句 但是却出现了问题 根本不亮

代码如下:

int Red = 13;
int Yellow = 12;
int Green = 11;
int i = 0;
void setup() {
// put your setup code here, to run once:
pinMode(Red,OUTPUT);
pinMode(Yellow,OUTPUT);
pinMode(Green,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(Green,LOW);
digitalWrite(Yellow,LOW);
digitalWrite(Red,HIGH);
delay(5000);
for( i = 0;i>=3;i++){
    digitalWrite(Green,LOW);
    digitalWrite(Yellow,HIGH);
    digitalWrite(Red,LOW);
    delay(1000);
    digitalWrite(Yellow,LOW);
    delay(1000);
    }
    i = 0;
digitalWrite(Red,LOW);
digitalWrite(Yellow,LOW);
digitalWrite(Green,HIGH);
delay(5000);
}


南酥北穆 发表于 2019-4-16 13:53:06

后来修改成这个样子但是依然不行 我最开始以为是这种语言的 int i 用法问题


int Red = 13;
int Yellow = 12;
int Green = 11;
int i = 0;
void setup() {
// put your setup code here, to run once:
pinMode(Red,OUTPUT);
pinMode(Yellow,OUTPUT);
pinMode(Green,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(Green,LOW);
digitalWrite(Yellow,LOW);
digitalWrite(Red,HIGH);
delay(5000);
for( i = 0;i>=3;i++){
    digitalWrite(Green,LOW);
    digitalWrite(Yellow,HIGH);
    digitalWrite(Red,LOW);
    delay(1000);
    digitalWrite(Yellow,LOW);
    delay(1000);
    }
    i = 0;
digitalWrite(Red,LOW);
digitalWrite(Yellow,LOW);
digitalWrite(Green,HIGH);
delay(5000);
}

南酥北穆 发表于 2019-4-16 13:57:34

解决了 是

for(int i = 0;i<=3;i++){}

的问题

更新代码如下:


int Red = 13;
int Yellow = 12;
int Green = 11;
void setup() {
// put your setup code here, to run once:
pinMode(Red,OUTPUT);
pinMode(Yellow,OUTPUT);
pinMode(Green,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(Green,LOW);
digitalWrite(Yellow,LOW);
digitalWrite(Red,HIGH);
delay(5000);
for(int i = 0;i<=3;i++){
    digitalWrite(Green,LOW);
    digitalWrite(Yellow,HIGH);
    digitalWrite(Red,LOW);
    delay(1000);
    digitalWrite(Yellow,LOW);
    delay(1000);
    }
digitalWrite(Red,LOW);
digitalWrite(Yellow,LOW);
digitalWrite(Green,HIGH);
delay(5000);
}

南酥北穆 发表于 2019-4-16 14:24:42

增加注释版本 大家可以借鉴学习一下 也欢迎提出更多的思路和想法 大家一起努力


/*
LED红绿灯程式
需要 LED灯珠三颗 电阻三个 杜邦线7根 
在红灯亮的时候 红灯脚位声明高电平 其他脚位声明低电平
--- 在黄灯亮的时候 黄灯使用 for 循环达成黄色LED闪烁 ---
在绿灯亮的时候 绿灯脚位声明高电平 其他脚位声明低电平
*/

int Red = 13;   //定义红灯脚位
int Yellow = 12;//定义黄灯脚位
int Green = 11;   //定义绿灯脚位
void setup() {
// put your setup code here, to run once:
pinMode(Red,OUTPUT);   //声明红色脚位输出
pinMode(Yellow,OUTPUT);//声明黄色脚位输出
pinMode(Green,OUTPUT);   //声明绿色较为输出
}

void loop() {
// put your main code here, to run repeatedly:
//红灯序列
digitalWrite(Green,LOW);//声明绿灯脚位低电平
digitalWrite(Yellow,LOW); //声明黄灯脚位低电平
digitalWrite(Red,HIGH);   //声明红色脚位高电平
delay(5000);            //延时5秒
//黄灯序列
for(int i = 0;i<=3;i++){   //开始循环定义 int 型数字 i 设定初始值为 0 i 小于等于3每执行一次 i 加 1
    digitalWrite(Green,LOW);   //声明绿灯脚位低电平
    digitalWrite(Yellow,HIGH); //声明黄色脚位高电平
    digitalWrite(Red,LOW);   //声明红色脚位低电平
    delay(1000);               //延时1秒
    digitalWrite(Yellow,LOW);//声明黄色脚位低电平
    delay(1000);               //延时1秒
    }
    //绿灯序列
digitalWrite(Red,LOW);    //声明红色脚位低电平
digitalWrite(Yellow,LOW); //声明黄色脚位低电平
digitalWrite(Green,HIGH); //声明绿色脚位高电平
delay(5000);            //延时5秒
}

ASH腻 发表于 2019-4-16 16:54:19

见证了一个问题的诞生和解决 哈哈
页: [1]
查看完整版本: 关于红绿灯有一个问题享有求助一下