多语言展示
当前在线:1317今日阅读:91今日分享:37

Arduino 互动交通灯

这次要对之前的项目Arduino交通灯:http://jingyan.baidu.com/article/7f766dafa8e2ee4100e1d06a.html做一些扩展,增加一套行人灯和一个行人请求通过马路的按钮。
工具/原料
1

Arduino 实验套件(Arduino UNO控制器,面包板,跳线,USB数据线)

2

发光二极管 LED 红 * 2 个

3

发光二极管 LED 黄 * 1 个

4

发光二极管 LED 绿 * 2 个

5

470欧直插电阻 * 5 个

方法/步骤
1

准备实验需要用到的硬件,如图所示:

2

如下图所示进行硬件的连接,此步我们先不连接发光二极管,只需将Arduino UNO控制器连接到电脑

3

将下列程序复制到Arduino IDE中,如下图所示:int carRed = 12; int carYellow = 11;int carGreen = 10;int pedRed = 9; int pedGreen = 8;int button = 2; int crossTime = 5000; unsigned long changeTime; void setup() {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() {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(carYellow, HIGH);digitalWrite(carRed, LOW); delay(1000);digitalWrite(carGreen, HIGH);digitalWrite(carYellow, LOW); changeTime = millis();}

4

如图所示,选择正确的板卡型号和端口,将程序上传到控制器中。

5

如图所示,程序上传无误的情况下 Arduino IDE 软件会显示如下结果,在上传过程中,Arduino 控制器板载的 TX RX 灯会频闪

6

按照下图中的电路,进行实验硬件的连接

7

实验效果如图所示,当按钮被按下时,Arduino将会做出反应,它改变交通灯的状态,让车停止,允许行人通过

8

代码回顾:unsigned long changetime;这是一个新的变量数据类型为 long 的数,可以存储一个从 -2 147 483 648 到2 147 483 647之间的数。指定unsigned long 数据类型,它不存在负数,所以它的存储范围是从 0 到 4 294 967 295。使用这个变量存储信号灯状态变化的间隔,最大能存储的时间间隔为32秒,是整型变量能存储数据的上限。if (state == HIGH && (millis() - changeTime) > 5000) 本句含义是当按键被按下,并且距离最后一次按下的时间间隔大于5秒,则再次调用 changeLights()。代码位置如下图所示:

9

为了方便大家实验,防止在复制代码的时候出现错误,特将代码和电路图Fritzing源文件上传至网盘供大家下载学习。下载地址:http://pan.baidu.com/s/1mhBmIgw,打开链接后,如图所示,点击下载即可

注意事项

注意 if 语句中的条件,使用与命令,即必须两个条件均满足情况下,才会执行 if 中的语句

推荐信息