红绿灯的制作教程

电子说

1.2w人已加入

描述

步骤1:修复LED。

修复红色LED如图所示,将其固定在面包板上,并用黄色LED固定在面包板上,然后将绿色LED固定在面包板上。

步骤2:固定电线和开关。

h2》

取两条线并将其切换并固定到面包板上。如图所示,将两根导线的一根导线固定到面包板的负极,另一根导线固定到面包板的正极。

第3步:将电线固定到ARDUINO。

首先用LED的顶部接一根跳线来固定红色。将LED固定到ARDUINO的4号插脚,并用另一根导线将黄色LED固定到ARDUINO的3号插针,将绿色LED固定到ARDUINO的2号插针,将红色LED固定在ARDUINO的7号插针,将绿色的LED固定到ARDUINO的6号插针。 》

将LED的下部红色LED接至ARDUINO接脚号10,将黄色LED接至ARDUINO接脚号9,将绿色LED接至ARDUINO接脚号8,将小的红色LED接至ARDUINO接脚号13,将绿色LED接至ARDUINO接脚号12。

步骤4:固定ARDUINO

用一根导线将面包板正极固定到ARDUINO引脚接地。并用另一根线将ARDUINO 3.3V固定在面包板上,如图所示。

ARDUINO程序。

//交通信号灯

//Ben Hovinga http://ben.hovinga.me

/灯光{GREEN,黄色,红色,PEDGREEN,PEDRED}

诠释灯[2] [5] = {{2,3,4,6,7},{8,9,10,12,13}};

//按钮{light [0],light [1]}

int btn [] = {5,11};

//计时器

int tgreen = 30000;//30s

int tyellow = 3000;//3s

int tred = 3000;//3s

int tpedwarn = 5000;//5s(必须小于tgreen)

int tpedwarnint = 500;//0.5s(必须小于tpedwarn)

//其他Val。不要更改

int btnval = 0;

布尔pedwait [] = {false,false};

布尔pedactive [] = {false,false };

int direct = 0;

int stp = 1;

boolean stpset = false;

unsigned long now = 0 ;

unsigned long changeat = -1;

unsigned long changeatped = -1;

boolean pedredon = true;

//SETUP

void setup(){

//为(int x = 0; x 《2; x ++){

for(int y = 0; y 《5; y ++){

pinMode(light [x] [y],OUTPUT);

}

//开始所有停止的操作(红色)

digitalWrite(light [x] [2],HIGH);

digitalWrite(light [x] [4],HIGH);

}

//为(int x = 0; x 《2; x ++){

pinMode(btn)分配按钮

[x],INPUT);

}

}

//RUN

void loop(){

//更新时间

现在= millis();

//检查是否按下按钮

表示(int x = 0; x 《2; x ++){

btnval = digitalRead(btn [x]);

如果(btnval == HIGH){

pedwait [x] = true ;////我们有人在等待穿越

}

}

////进入

开关(stp){

//绿色

情况1:

//设置

if(stpset == false){

changeat =现在+ tgreen-tpedwarn;//设置计时器

//如果(pedwait [direct] == true){

//打开ped的灯光

digitalWrite(light [direct] [3],HIGH);

digitalWrite(light [direct] [4],LOW);

//设置一些变量/p》

pedwait [direct] =假;

pedactive [direct] =真;

pedredon =假;

}

//打开绿色

digitalWrite(light [direct] [0],HIGH);

//关闭红色

digitalWrite(light [direct] [2],LOW);

stpset = true;//我们已经设置

}

//运行

else {

if(现在》 changeat){//

if(pedactive [direct] == true){

//关闭Ped

digitalWrite(light [direct] [3],LOW);

digitalWrite(light [direct] [4],HIGH);

pedredon = true;

}

//下一步

stp ++;

stpset = false;

}

}

中断;

//警告ped(如果可能)

情况2:

//设置

if(stpset == false){

changeat = now + tpedwarn;

changeatped = now + tpedwarnint;

stpset = true;

}

//运行

else {

//如果(pedactive [direct] == true){

if(pedredon = = true && changeatped 《现在){

digitalWrite(light [direct] [4],LOW);

pedredon = false;

changeatped =现在+ tpedwarnint;

}

if(pedredon == false && changeat 《现在){

digitalWrite(light [direct] [4],HIGH);

pedredon = true;

changeatped = now + tpedwarnint;

}

}

if(now》 changeat){//计时

//关闭

digitalWrite(light [direct] [0],LOW);

digitalWrite(light [direct] [4],HIGH);

pedredon = true;

pedactive [direct] = false;

//下一步

stp ++;

stpset = false;

}

}

中断;

//黄色

情况3:

//设置

if(stpset == false){

changeat = now + tyellow;

digitalWrite(light [direct] [1],HIGH);

stpset = true;

}

//运行

else {

if(现在》 changeat){//计时

//关闭

digitalWrite(light [direct] [1],LOW);

//下一步

stp ++;

stpset = false;

}

}

中断;

//红色

情况4:

//设置

if(stpset == false){

changeat = now + tred;

digitalWrite(light [direct] [2],HIGH);

stpset = true;

}

//运行

else {

如果(现在》 changeat) {//时间增加

//重新开始

stp = 1;

stpset = false;

//如果(direct == 1){

direct = 0;

}

else {

direct = 1;

}

}

}

中断;

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分