arduino行人可控交通灯

1实现目标:
通常情况下,机动车道绿灯常亮,行人通道红灯常亮;当行人按下按钮后,机动车道的灯由绿变黄再变红,行人通道的灯由红变绿;一段时间后,行人通道绿灯频闪提醒;频闪结束,行人通道绿灯变红灯,机动车道红灯变绿灯,再变黄灯。行人两次有效按下按钮的时间控制为大于10秒,每一个时期LCD屏将作为补充提醒,显示行人和机动车的通行状态。同时蜂鸣器会在行人按下按钮和机动车再次行驶时发出提醒。
在这里插入图片描述
2代码部分:

#include <LiquidCrystal.h>
const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
int NorthSouthR=A5;
int NorthSouthG=8;
int NorthSouthY=6;
int PeoEastWestR=A3;
int PeoEastWestG=A4;
int button = 1;
int peocrosstime = 10000;//两次按下按钮至少间隔的时间
int soundPin = 9;
unsigned long switchtime;
void setup()
{
  pinMode(NorthSouthY, OUTPUT);
  pinMode(NorthSouthG, OUTPUT);
  pinMode(NorthSouthY, OUTPUT);
  pinMode(PeoEastWestR, OUTPUT);
  pinMode(PeoEastWestG, OUTPUT);
  pinMode(soundPin,OUTPUT);
  pinMode(button,INPUT);
  digitalWrite(NorthSouthG,HIGH);//初始状态
  digitalWrite(PeoEastWestR,HIGH);
  lcd.begin(16,2);
  lcd.print("car go!");
 }
void loop() //按钮检测
{
  
 int flag = digitalRead(button);
 if(flag == HIGH && (millis()-switchtime)>10000)
 {
  peoplego();
  }
}
void peoplego()//改变交通灯的函数
{
 digitalWrite(soundPin,HIGH);
 delay(500);
 digitalWrite(soundPin,LOW);
  lcd.clear();
  lcd.begin(16,2);
  lcd.print("people coming!");
  lcd.display();
    digitalWrite( NorthSouthG,LOW);
  for(int i=0;i<3;i++)
  {
    digitalWrite( NorthSouthY,HIGH);
    delay(500);
    digitalWrite( NorthSouthY,LOW);
    delay(500);
    }
 digitalWrite(NorthSouthR,HIGH);
 delay(1000);
 digitalWrite(PeoEastWestR,LOW);
 digitalWrite(PeoEastWestG,HIGH);
 delay(peocrosstime);
 lcd.clear();
 lcd.begin(16,2);
 lcd.print("please quickly!");
 for(int j=0;j<5;j++)
  {
    digitalWrite( PeoEastWestG,HIGH);
    delay(500);
    digitalWrite( PeoEastWestG,LOW);
    delay(500);
    }
 lcd.clear();
 digitalWrite(PeoEastWestR,HIGH);
 delay(2000);
 digitalWrite(NorthSouthY,HIGH);
 digitalWrite(NorthSouthR,LOW);
 lcd.clear();
 lcd.begin(16,2);
 lcd.print("car time again!"); 
 delay(3000);
 digitalWrite(NorthSouthG,HIGH);
 digitalWrite(NorthSouthY,LOW);
 switchtime = millis();
 digitalWrite(soundPin,HIGH);
 delay(500);
 digitalWrite(soundPin,LOW);
 lcd.clear();
 lcd.begin(16,2);
 lcd.print("car go!");
  }

3实物连接图:
在这里插入图片描述仅供参考

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值