Advertisement
Guest User

Arduino Project 5

a guest
May 10th, 2015
402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. // Project 5 - Controlling Traffic
  2. // define the pins that the buttons and lights are connected to:
  3. #define westButton 7
  4. #define eastButton 13
  5. #define westRed 2
  6. #define westYellow 1
  7. #define westGreen 0
  8. #define eastRed 12
  9. #define eastYellow 11
  10. #define eastGreen 10
  11. #define yellowBlinkTime 500 // 0.5 seconds for yellow light blink
  12. boolean trafficWest = true; // west = true, east = false
  13. int flowTime = 10000; // amount of time to let traffic flow
  14. int changeDelay = 2000; // amount of time between color changes
  15.  
  16. void setup()
  17. {
  18. // setup digital I/O pins
  19. pinMode(westButton, INPUT);
  20. pinMode(eastButton, INPUT);
  21. pinMode(westRed, OUTPUT);
  22. pinMode(westYellow, OUTPUT);
  23. pinMode(westGreen, OUTPUT);
  24. pinMode(eastRed, OUTPUT);
  25. pinMode(eastYellow, OUTPUT);
  26. pinMode(eastGreen, OUTPUT);
  27. // set initial state for lights - west side is green first
  28. digitalWrite(westRed, LOW);
  29. digitalWrite(westYellow, LOW);
  30. digitalWrite(westGreen, HIGH);
  31. digitalWrite(eastRed, HIGH);
  32. digitalWrite(eastYellow, LOW);
  33. digitalWrite(eastGreen, LOW);
  34. }
  35. void loop()
  36. {
  37. if ( digitalRead(westButton) == HIGH ) // request west>east traffic flow
  38. {
  39. if ( trafficWest != true )
  40. // only continue if traffic flowing in the opposite (east) direction
  41. {
  42. trafficWest = true; // change traffic flow flag to west>east
  43. delay(flowTime); // give time for traffic to flow
  44. digitalWrite(eastGreen, LOW); // change east-facing lights from green
  45. // to yellow to red
  46. digitalWrite(eastYellow, HIGH);
  47. delay(changeDelay);
  48. digitalWrite(eastYellow, LOW);
  49. digitalWrite(eastRed, HIGH);
  50. delay(changeDelay);
  51. for ( int a = 0; a < 5; a++ ) // blink yellow light
  52. {
  53. digitalWrite(westYellow, LOW);
  54. delay(yellowBlinkTime);
  55. digitalWrite(westYellow, HIGH);
  56. delay(yellowBlinkTime);
  57. }
  58. digitalWrite(westYellow, LOW);
  59. digitalWrite(westRed, LOW); // change west-facing lights from red to green
  60. digitalWrite(westGreen, HIGH);
  61. }
  62. }
  63. if ( digitalRead(eastButton) == HIGH ) // request east>west traffic flow
  64. {
  65. if ( trafficWest == true )
  66. // only continue if traffic flow is in the opposite (west) direction
  67. {
  68. trafficWest = false; // change traffic flow flag to east>west
  69. delay(flowTime); // give time for traffic to flow
  70. digitalWrite(westGreen, LOW);
  71. // change west lights from green to yellow to red
  72. digitalWrite(westYellow, HIGH);
  73. delay(changeDelay);
  74. digitalWrite(westYellow, LOW);
  75. digitalWrite(westRed, HIGH);
  76. delay(changeDelay);
  77. for ( int a = 0 ; a < 5 ; a++ ) // blink yellow light
  78. {
  79. digitalWrite(eastYellow, LOW);
  80. delay(yellowBlinkTime);
  81. digitalWrite(eastYellow, HIGH);
  82. delay(yellowBlinkTime);
  83. }
  84. digitalWrite(eastYellow, LOW);
  85. digitalWrite(eastRed, LOW); // change east-facing lights from red to green
  86. digitalWrite(eastGreen, HIGH);
  87. }
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement