Guest User

sunside

a guest
Feb 19th, 2010
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. // simple LED traffic light Arduino sketch
  2. // http://www.youtube.com/watch?v=Y67EzJB7QYU
  3.  
  4. const int pinR = 13;
  5. const int pinY = 12;
  6. const int pinG = 11;
  7.  
  8. const int durationMs = 4000;
  9.  
  10. typedef enum EState {
  11.   RED = 0,
  12.   YELLOW = 1,
  13.   GREEN = 2,
  14.   REDYELLOW = 3
  15. } State;
  16.  
  17. State light = RED;
  18.  
  19. void setup()
  20. {
  21.     pinMode(pinR, OUTPUT);
  22.     pinMode(pinY, OUTPUT);
  23.     pinMode(pinG, OUTPUT);
  24.    
  25.     // blink yellow
  26.     for(int i=0; i<5; ++i)
  27.     {
  28.         digitalWrite(pinY, HIGH);
  29.         delay(1000);
  30.         digitalWrite(pinY, LOW);
  31.         delay(1000);
  32.     }
  33.    
  34.     // switch to red and wait
  35.     digitalWrite(pinR, HIGH);
  36.     delay(2000);
  37. }
  38.  
  39. void loop()
  40. {
  41.     switch(light)
  42.     {
  43.         case RED:
  44.             digitalWrite(pinR, HIGH);
  45.             digitalWrite(pinY, LOW);
  46.             light = REDYELLOW;
  47.             break;
  48.            
  49.         case REDYELLOW:
  50.             digitalWrite(pinR, HIGH);
  51.             digitalWrite(pinY, HIGH);
  52.             digitalWrite(pinG, LOW);
  53.             light = GREEN;
  54.             break;            
  55.            
  56.         case GREEN:
  57.             digitalWrite(pinR, LOW);
  58.             digitalWrite(pinY, LOW);
  59.             digitalWrite(pinG, HIGH);
  60.             light = YELLOW;
  61.             break;
  62.  
  63.         case YELLOW:
  64.             digitalWrite(pinY, HIGH);
  65.             digitalWrite(pinG, LOW);
  66.             light = RED;
  67.             break;
  68.     }
  69.    
  70.     delay(durationMs);
  71. }
Advertisement
Add Comment
Please, Sign In to add comment