步骤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;
}
}
}
中断;
}
}
-
红绿灯
+关注
关注
2文章
34浏览量
11955
发布评论请先 登录
相关推荐
评论