【Arduino】入门篇——交通信号灯

一、实验目的

我想大家都看见过交通灯,就是马路上十字路口的红绿灯。如果您开过车,我想您一定仔细观察过交通灯,如果您还没有驾驶过车,您是否仔细观察过交通灯呢?交通灯包括三种个不同颜色的灯:红灯、黄灯和绿灯。
在这里插入图片描述
每个路口的红绿灯切换的时间并不是相同,这个是根据不同路口的车流情况来设定的,下面就是模仿交通灯的一个实验

二、实验材料

Arduino UNO面包板一个USB数据线一根五个规格相同的LED小灯泡六个阻值相同的电阻按键一个杜邦线若干

三、电路图

在这里插入图片描述

四、实验过程

上传编译成功后,可以尝试按下按钮。看看是个什么的效果?我们可以看到整个变化过程是这样的:一开始时 ,汽车灯为绿灯,行人灯为红灯,代表车行人停。一旦行人,也就是你,按下按钮,请求过马路,那么行人灯就开始由红变绿,汽车灯由绿变黄,变红。在行人通行的过程中,设置了一个过马路的时间Cross Time,一旦到点,行人绿灯开始闪烁,提醒行人快速过马路。闪烁完毕,最终,又回到了开始的状态,汽车灯为绿灯,行人灯为红灯。整段代码看起来很复杂,其实理清一下思路并不难。如果你还是没有办法理不清里面变化关系的话,可以试着画一个示意图,这样一来可能会方便你理解程序。

五、代码块

int carred=12;
int caryellow=11;
int cargreen=10;
int button=9;
int pedred=8;
int pedgreen=7;
int crosstime=5000;
unsigned long changetime;
void setup() {
  // put your setup code here, to run once:
    pinMode(carred,OUTPUT);
    pinMode(caryellow,OUTPUT);
    pinMode(cargreen,OUTPUT);
    pinMode(pedred,OUTPUT);
    pinMode(pedgreen,OUTPUT);
    pinMode(button,INPUT);
    digitalWrite(cargreen,HIGH);
    digitalWrite(pedred,HIGH);    
}

void loop() {
  // put your main code here, to run repeatedly:
    int state=digitalRead(button);
    if(state==HIGH&&(millis() - changetime)>5000)
    {
      changelights();
    }
}

void changelights(){
    digitalWrite(cargreen,LOW);
    digitalWrite(caryellow,HIGH);
    delay(2000);

    digitalWrite(caryellow,LOW);
    digitalWrite(carred,HIGH);
    delay(1000);

    digitalWrite(pedred,LOW);
    digitalWrite(pedgreen,HIGH);
    delay(crosstime);
    for(int x=0;x<10;x++)
    {
        digitalWrite(pedgreen,HIGH);
        delay(250);
        digitalWrite(pedgreen,LOW);
        delay(250);
    }
    digitalWrite(pedred,HIGH);
        delay(500);

    digitalWrite(carred,LOW);
    digitalWrite(caryellow,HIGH);
    delay(1000);
    digitalWrite(caryellow,LOW);
    digitalWrite(cargreen,HIGH);

    changetime=millis();
}

六、实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

视频演示:

Arduino——交通信号灯

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值