首页

Arduino红绿灯控制器

如今,私家车的使用是非常普遍的,其结果是,道路上的车辆数量呈指数级增长。没有任何监督和指导的道路会导致交通堵塞和事故。

红绿灯或交通信号是用来控制交通流量的信号装置。一般来说,它们被放置在交叉路口、十字路口、“X”路、人行横道等处,轮流决定谁该等,谁该走。

交通灯将显示标准颜色的灯向使用者(司机和行人)提供指示。红绿灯用的三种颜色是红、黄、绿。

该系统必须用于控制交通灯,以保证交通的平稳和安全。这些控制系统由带有发条机构的机电控制器或易于设置和维护的现代固态计算机化系统组成。

在Electronicshub中选择您想学习的下一组Arduino项目 Arduino项目»

本课题设计了一个基于Arduino的交通灯控制器系统。它是一个简单的交通信号灯系统的实现,但可以扩展为具有可编程计时、行人照明等的实时系统。

线路图

Arduino红绿灯控制器电路图
Arduino红绿灯控制器电路图

组件

  • Arduino UNO [在这里买
  • 1KΩ电阻X 12
  • 红色led X 4
  • 黄色led X 4
  • 绿色led X 4
  • 连接电线
  • 原型板
  • 电源适配器

组件描述

Arduino UNO交通灯控制器的主要部分是控制器本身。Arduino UNO将在这个项目中用于处理所有led的切换和控制它们的时间。

发光二极管:本项目使用的led为基本5mm led,有红、黄、绿三种颜色。通过这些led(尤其是红色、黄色和绿色)的最大电流是20mA。(敌蓝LED,最大电流可达30mA)。

电路设计

由于该项目是一个交通灯控制器,电路由许多led(事实上是12个)组成,因为我们正在一个四向交叉路口实现交通灯。该项目是一个简单的交通灯控制器的表示,因此没有使用其他额外的组件。

我们需要三个红色,黄色和绿色的led灯在每个十字路口。十字路口分为4个车道:1号巷、2号巷、3号巷和4号巷。

所有led都通过1KΩ各自的限流电阻连接到Arduino UNO的数字I/O引脚。

所有的连接都按照电路图进行。电路的完整接线图如下图所示。

Arduino红绿灯控制器接线

请注意:在项目的实际实施中,我们没有使用限流电阻,因为Arduino UNO的每个数字I/O引脚的电流只有20mA。这个小电流不会烧坏LED。但建议在每个LED上使用至少220 Ω的限流电阻串联。

另外请注意,本项目中的Arduino UNO作为所有LED的电流源,即它提供打开LED所需的电流。因此,必须使用可靠的电源(如直流适配器)来为Arduino UNO供电。

红绿灯控制器项目的工作

实时红绿灯控制器是由电源柜、主控制器或处理器、继电器、带开关或按键的控制面板、通信端口等组成的复杂设备。

在本项目中,使用Arduino UNO实现了一个简单的四向交叉口交通灯系统。虽然它不是现实生活场景的理想实现,但它给出了红绿灯控制系统背后的过程的一个想法

该项目的目的是使用Arduino UNO实现一个简单的红绿灯控制器,其中交通控制在预定义的定时系统中。该项目的工作非常简单,如下所述。

考虑下面这张显示红绿灯运行循环的gif图片。该项目也以同样的方式执行。

working-animation

在这种情况下,首先1号车道的绿灯亮了。因此,在所有其他车道,它们对应的红灯都是打开的。经过预定时间的延时(如5秒)后,3号巷的绿灯必须打开,1号巷的绿灯必须关闭。

作为警告指示灯,1号车道的黄灯调亮,表示红灯即将亮起。同样,3号车道上的黄灯也是绿灯即将亮起的标志。

1号巷和3号巷的黄灯在1号巷的红灯亮起,3号巷的绿灯也亮起后,亮一小段时间,比如说2秒。

第三道的绿灯也会在预定的时间内亮起,然后这个过程向前移动到第四道,最后是第二道。

然后系统循环回到第1道,在那里上述过程将再次重复。

注意:这里实施的项目没有考虑行人过街和行人信号。

限制

  • 该项目不适合实际实施,而只是演示了系统背后的过程。
  • 实时红绿灯控制器系统的运行时间通常是可编程的,即操作员(通常是警察)可以根据每个车道上的交通强度来改变每个车道的时间。
  • 还将提供手动操作或预先编制程序操作的经费。

应用程序

  • 在这个项目中实现了一个简单的交通灯控制器,有一个真正的扩展机会。
  • 外部存储器可以与主控制器接口,以便在编程过程中不固定时间,而是可以在操作过程中进行编程。
  • 高效的交通灯控制系统将包括行人信号系统。

项目图片

项目代码

21的反应

      1. 我的fyp项目是救护车的智能红绿灯。我计划在这个项目中增加RFID传感器。意味着如果救护车路径上的交通灯为红色,RFID传感器将交通灯变为绿色。我是否可以只使用相同的编码,并为RFID添加编码?

    1. You can do this yourself relatively quickly take a look at something like Fritzing for circuit and Arduino graphics.

  1. 这对我来说很有效——比我在网上找到的另外两个例子更好。

    对于如何重新布线以推动更多led有什么想法吗?我希望能够驾驶一共16组红绿灯(4个路口)。他们将仍然使用相同的程序,所以每个交叉路口将与其他同步(基本上,在任何地方,你显示一个led电源4),但我担心我可能会超载I/O引脚,因为他们将推80ma每个在任何特定的时间- 320ma整个板(我认为我低于板,但超过每个引脚)。除了中继还有其他想法吗?有这样低电压和电流的继电器吗?

    1. 继电器或类似装置是控制较高电流负载的理想方法,而不会有损坏Arduino微控制器的风险。用Arduino数字输出引脚触发继电器当然是可行的,但你也可以考虑使用晶体管或类似的半导体开关来代替。

  2. 我正在设计一个HO规模的布局有轨电车,有轨电车,快速运输汽车。它将有地铁、街道和高架轨道。我将需要一个交通控制员的街道交通,4个灯。10-12个路口大概四六个N - S带N - S, E - W带N - S顺序一个接一个的路口,时间循环,有轨电车可以中断循环。行人有按需循环。

    一、二车道有轨电车街道水平。两车道的高架,穿过地铁,一直到地面上的地面上的高架。

    你建议安装一个透过轨道向上看的光传感器吗?光敏电阻,LM393。可在地铁中增加光源,路灯为地面,照明在高架栈桥上,这样夜间操作时,就可以使用信号。

    1. 我个人倾向于在车辆底部安装钕磁铁,以触发轨道下的霍尔效应传感器,因为在光传感器上尝试类似的东西被证明太过敏感,无法错误触发。如今有了Arduino, RFID也可能成为一个可行的选择。这给了你额外的好处,知道哪列火车经过传感器,以及什么时候。

  3. 光的流动有些问题.....通常红绿灯是由绿变黄再变红,但从红变绿不需要先黄再绿。

    1. 如果信号灯从红色直接变成绿色,而不是先变成黄色,请再次检查代码;你可能漏掉了什么。可以通过调整循环中digitalwrite的顺序来修改光的顺序。

    2. 你好,我修改了从红到绿没有黄色的代码;

      int Lane1[] = {13,12,11};// 1号车道红黄绿
      int Lane2[] = {10,9,8};// Lane2红黄绿
      int Lane3[] = {7,6,5};// Lane3红黄绿
      int Lane4[] = {4,3,2};// Lane4红黄绿

      无效的设置()

      For (int I = 0;我< 3;我+ +)

      pinMode (Lane1[我],输出);
      pinMode (Lane2[我],输出);
      pinMode (Lane3[我],输出);
      pinMode (Lane4[我],输出);

      For (int I = 0;我< 3;我+ +)

      digitalWrite (Lane1[我],低);
      digitalWrite (Lane2[我],低);
      digitalWrite (Lane3[我],低);
      digitalWrite (Lane4[我],低);

      无效循环()

      digitalWrite (Lane1[2],高);
      digitalWrite (Lane3[0],高);
      digitalWrite (Lane4[0],高);
      digitalWrite (Lane2[0],高);
      延迟(7000);
      digitalWrite (Lane1[2],低);
      digitalWrite (Lane3[0],高);
      digitalWrite (Lane1[1],高);
      延迟(3000);
      digitalWrite (Lane1[1],低);
      digitalWrite (Lane3[0],低);
      digitalWrite (Lane1[0],高);
      digitalWrite (Lane3[2],高);
      延迟(7000);
      digitalWrite (Lane3[2],低);
      digitalWrite (Lane4[0],高);
      digitalWrite (Lane3[1],高);
      延迟(3000);
      digitalWrite (Lane3[1],低);
      digitalWrite (Lane4[0],低);
      digitalWrite (Lane3[0],高);
      digitalWrite (Lane4[2],高);
      延迟(7000);
      digitalWrite (Lane4[2],低);
      digitalWrite (Lane2[0],高);
      digitalWrite (Lane4[1],高);
      延迟(3000);
      digitalWrite (Lane4[1],低);
      digitalWrite (Lane2[0],低);
      digitalWrite (Lane4[0],高);
      digitalWrite (Lane2[2],高);
      延迟(7000);
      digitalWrite (Lane1[0],高);
      digitalWrite (Lane2[2],低);
      digitalWrite (Lane2[1],高);
      延迟(3000);
      digitalWrite (Lane2[1],低);
      digitalWrite (Lane1[0],低);

    1. 所以你只想要一个红黄绿三色的LED吗?通过移除三组led和电阻,并修改循环中的代码,只更改剩下的三个引脚,就可以轻松做到这一点。

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map