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

2019-04-161万
AI 快速预览详细 收起
本文讨论了一个常见的Arduino红绿灯控制问题,即黄灯不亮。通过分析代码中的for语句错误,发现for( i = 0; i >= 3; i++) 应改为 for( i = 0; i < 3; i++)。修改后,黄灯能够正确点亮。文章还提供了详细的调试步骤和解决方案,帮助初学者快速定位并修复问题。


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

代码如下:
  1. int Red = 13;
  2. int Yellow = 12;
  3. int Green = 11;
  4. int i = 0;
  5. void setup() {
  6.   // put your setup code here, to run once:
  7.   pinMode(Red,OUTPUT);
  8.   pinMode(Yellow,OUTPUT);
  9.   pinMode(Green,OUTPUT);
  10. }
  11. void loop() {
  12.   // put your main code here, to run repeatedly:
  13.   digitalWrite(Green,LOW);
  14.   digitalWrite(Yellow,LOW);
  15.   digitalWrite(Red,HIGH);
  16.   delay(5000);
  17.   for( i = 0;i>=3;i++){
  18.     digitalWrite(Green,LOW);
  19.     digitalWrite(Yellow,HIGH);
  20.     digitalWrite(Red,LOW);
  21.     delay(1000);
  22.     digitalWrite(Yellow,LOW);
  23.     delay(1000);
  24.     }
  25.     i = 0;
  26.   digitalWrite(Red,LOW);
  27.   digitalWrite(Yellow,LOW);
  28.   digitalWrite(Green,HIGH);
  29.   delay(5000);
  30. }
复制代码


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
Ash1
Ash1
见证了一个问题的诞生和解决 哈哈
南酥北穆
南酥北穆
作者
增加注释版本 大家可以借鉴学习一下 也欢迎提出更多的思路和想法 大家一起努力
[code]
/*
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秒
}
[/code]
南酥北穆
南酥北穆
作者
解决了 是
[code]
for(int i = 0;i<=3;i++){}
[/code]
的问题
更新代码如下:
[code]
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);
}
[/code]
南酥北穆
南酥北穆
作者
后来修改成这个样子但是依然不行 我最开始以为是这种语言的 int i 用法问题
[code]
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);
}
[/code]
- 没有更多了 -