Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 15th, 2012  |  syntax: None  |  size: 2.34 KB  |  hits: 5  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. int carRed = 12;
  2. int carYellow = 11;
  3. int carGreen = 10;
  4. int pedRed = 9;
  5. int pedGreen = 8;
  6. int button = 2;
  7. int crossTime = 5000;
  8. int delayTime = 2999;
  9. unsigned long previousMillis = 0;
  10. int request = 0;
  11. int allLights[] = {
  12.   12 , 11, 10, 9 ,8};
  13. // carGreen pedGreen
  14. int carsGo[] = {  
  15.   10, 9};
  16. // carYellow pedGreen
  17. int carsWait[] = {  
  18.   11, 9};
  19. // carRed pedRed
  20. int carsStop[] = {  
  21.   12, 9};
  22. // carRed pedGreen
  23. int pedsGo[] = {  
  24.   12, 8};
  25.  
  26. void setup() {
  27.   pinMode(carRed, OUTPUT);
  28.   pinMode(carYellow, OUTPUT);
  29.   pinMode(carGreen, OUTPUT);
  30.   pinMode(pedRed, OUTPUT);
  31.   pinMode(pedGreen, OUTPUT);
  32.   pinMode(button, INPUT);
  33.   digitalWrite(carGreen, HIGH);
  34.   digitalWrite(pedRed, HIGH);
  35.   Serial.begin(9600);
  36.  
  37. }
  38.  
  39. void loop(){
  40.   normalLights();
  41.   checkCrossingRequest();
  42.   lightsCheck();
  43. }
  44.  
  45. void allLightsOff(){
  46.   for(int i = 0 ; i < 5; i++){
  47.     digitalWrite(allLights[i], LOW);
  48.   }
  49. }
  50.  
  51. void buttonPushed(){
  52.   delay(500);
  53.   allLightsOff();
  54.   digitalWrite(pedRed, HIGH);
  55.   digitalWrite(carYellow , HIGH);
  56.   delay(1000);
  57.   allLightsOff();
  58.   digitalWrite(pedRed, HIGH);
  59.   digitalWrite(carRed, HIGH);
  60.   delay(1000);
  61.   digitalWrite(pedRed, LOW);
  62.   digitalWrite(pedGreen, HIGH);
  63.   delay(crossTime);
  64.   for (int x=0; x<10; x++) {
  65.     digitalWrite(pedGreen, HIGH);
  66.     delay(250);
  67.     digitalWrite(pedGreen, LOW);
  68.     delay(250);
  69.   }
  70.   allLightsOff();
  71.   digitalWrite(pedRed, HIGH);
  72.  
  73.   digitalWrite(carGreen, HIGH);
  74.   previousMillis = millis()+delayTime;
  75. }
  76.  
  77. void normalLights(){
  78.  
  79.   unsigned long currentMillis = millis();
  80.   if(currentMillis - previousMillis == delayTime) {
  81.     digitalWrite(carRed, LOW);
  82.     digitalWrite(carGreen, HIGH);
  83.   }
  84.   else if(currentMillis - previousMillis == (delayTime*2)+1){
  85.     digitalWrite(carGreen, LOW);
  86.     digitalWrite(carYellow, HIGH);
  87.   }
  88.   else if(currentMillis - previousMillis == (delayTime*3)+2){
  89.     digitalWrite(carYellow, LOW);
  90.     digitalWrite(carRed, HIGH);
  91.   }
  92.   else if(currentMillis - previousMillis == (delayTime*4)-delayTime/2){
  93.     previousMillis = currentMillis;    
  94.   }
  95.  
  96. }
  97.  
  98.  
  99. int checkCrossingRequest(){
  100.   int val = digitalRead(button);
  101.   if (val == HIGH) {
  102.     return 1;
  103.   }
  104.   else{
  105.     return 0;
  106.   }
  107. }
  108.  
  109. void lightsCheck(){
  110.   request = checkCrossingRequest();
  111.   if (request > 0) {
  112.     buttonPushed();
  113.   }
  114. }