Advertisement
MatthewRock

asldjh

Mar 21st, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.31 KB | None | 0 0
  1. void DoNothingForNow(){}
  2.  
  3. const int DARK_FORCE_LIGHT_PIN = 4;
  4. const int LIGHT_FORCE_LIGHT_PIN = 5;
  5. const int MUSIC_PIN = 10;
  6.  
  7. const int DARK_FORCE_PIN = 7;
  8. const int LIGHT_FORCE_PIN = 8;
  9.  
  10. const int LIGHTS_TIMEOUT = 1000 * 30;
  11.  
  12. volatile int DarkForceMoney = 0;
  13. volatile int LightForceMoney = 0;
  14. volatile int CurrentSidePin = 0;
  15. volatile unsigned long LastActivityTime = 0;
  16.  
  17. boolean VaderJustPressed()
  18. {
  19.   return (digitalRead(DARK_FORCE_PIN) == HIGH);
  20. }
  21.  
  22. boolean YodaJustPressed()
  23. {
  24.   return (digitalRead(LIGHT_FORCE_PIN) == HIGH);
  25. }
  26.  
  27. void PlayVaderSound()
  28. {
  29.   //TODO: Implement
  30. }
  31.  
  32. void PlayYodaSound()
  33. {
  34.   //TODO: Implement
  35. }
  36.  
  37. void MakeDarkCurrentSide()
  38. {
  39.   CurrentSidePin = DARK_FORCE_LIGHT_PIN;
  40.   LightTheLight();
  41.   PlayVaderSound();
  42. }
  43.  
  44. void MakeLightCurrentSide()
  45. {
  46.   CurrentSidePin = LIGHT_FORCE_LIGHT_PIN;
  47.   LightTheLight();
  48.   PlayYodaSound();
  49. }
  50.  
  51. void ShutDownLights()
  52. {
  53.   CurrentSidePin = 0;
  54.   LightTheLight();
  55. }
  56.  
  57. void ResetTimer()
  58. {
  59.   LastActivityTime = millis();
  60. }
  61.  
  62. boolean TimeExceeded()
  63. {
  64.   if ( (unsigned long)(millis() - LastActivityTime) >= LIGHTS_TIMEOUT)
  65.     return true;
  66.  
  67.   return false;
  68. }
  69.  
  70. void LightTheLight()
  71. {
  72.   digitalWrite(LIGHT_FORCE_LIGHT_PIN, LOW);
  73.   digitalWrite(DARK_FORCE_LIGHT_PIN, LOW);
  74.  
  75.   digitalWrite(CurrentSidePin, HIGH);
  76. }
  77.  
  78. void InsertCoin()
  79. {
  80.   if(CurrentSidePin == LIGHT_FORCE_LIGHT_PIN)
  81.   {
  82.     LightForceMoney = LightForceMoney + 1;
  83.   }
  84.   else if(CurrentSidePin == DARK_FORCE_LIGHT_PIN)
  85.   {
  86.     DarkForceMoney = DarkForceMoney + 1;
  87.   }
  88.   else
  89.   {
  90.     DoNothingForNow();
  91.     //Play "NOOO"
  92.   }
  93.   Serial.print("Dark side money: ");
  94.   Serial.println(DarkForceMoney);
  95.   Serial.print("Light side money: ");
  96.   Serial.println(LightForceMoney);  
  97. }
  98.  
  99. void setup()
  100. {
  101.   Serial.begin(9600);
  102.   pinMode(DARK_FORCE_LIGHT_PIN, OUTPUT);
  103.   pinMode(LIGHT_FORCE_LIGHT_PIN, OUTPUT);
  104.   pinMode(MUSIC_PIN, OUTPUT);
  105.  
  106.   pinMode(DARK_FORCE_PIN, INPUT);
  107.   pinMode(LIGHT_FORCE_PIN, INPUT);
  108.  
  109.   attachInterrupt(0, InsertCoin, RISING);
  110. }
  111.  
  112. void loop()
  113. {
  114.   //Experimental Area
  115.  
  116.   if(VaderJustPressed())
  117.   {
  118.     MakeDarkCurrentSide();
  119.     ResetTimer();
  120.   }
  121.   else if(YodaJustPressed())
  122.   {
  123.     MakeLightCurrentSide();
  124.     ResetTimer();
  125.   }
  126.   if(TimeExceeded())
  127.   {
  128.     ShutDownLights();
  129.   }
  130.   //End of Experimental Area
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement