Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int carRed = 12;
- int carYellow = 11;
- int carGreen = 10;
- int pedRed = 9;
- int pedGreen = 8;
- int buzzer = 13;
- int button = 2;
- int crossTime = 5000;
- unsigned long changeTime; // since button pressed
- void setup(){
- pinMode(carRed,OUTPUT);
- pinMode(carYellow,OUTPUT);
- pinMode(carGreen,OUTPUT);
- pinMode(pedRed,OUTPUT);
- pinMode(pedGreen,OUTPUT);
- pinMode(buzzer,OUTPUT);
- pinMode(button,INPUT);
- // turn on the default mode
- digitalWrite(carGreen,HIGH) ;
- digitalWrite(pedRed,HIGH);
- }
- void loop(){
- int state = digitalRead(button);
- // check if button has been pressed and its over 5 seconds since last press
- 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);
- beep(crossTime,250,250,false);
- beep(4000,100,100,true);
- // turn red back on for pedestrians
- digitalWrite(pedRed,HIGH);
- delay(1000);
- digitalWrite(carYellow,HIGH);
- digitalWrite(carRed,LOW);
- delay(1000);
- digitalWrite(carGreen,HIGH);
- digitalWrite(carYellow,LOW);
- changeTime= millis();
- }
- // beep for total of how long, time on, time off, and whether to flash
- // the light at the same time
- void beep(unsigned int time,int intervala,int intervalb,boolean flash){
- unsigned long beepTime = millis();
- unsigned long stillBeeping = millis();
- while((stillBeeping - beepTime)<time){
- digitalWrite(buzzer,HIGH);
- if(flash == true){
- digitalWrite(pedGreen,HIGH);
- }
- delay(intervala);
- digitalWrite(buzzer,LOW);
- if(flash == true){
- digitalWrite(pedGreen,LOW);
- }
- delay(intervalb);
- stillBeeping = millis();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement