Advertisement
Guest User

Untitled

a guest
Apr 6th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.52 KB | None | 0 0
  1. #define KUSTIBAS_SENSORS        3
  2. #define GAISMAS_SENSORS         4
  3. #define GAISMA_1                7
  4.  
  5. #define STATE_IDLE              0
  6. #define STATE_GAISMA_TURN_ON    1
  7. #define STATE_GAISMA_ON         2
  8. #define STATE_GAISMA_TURN_OFF   3
  9.  
  10. #define WAIT_TIME               (10 * 1000)
  11.  
  12. int state = STATE_IDLE;
  13. int start_time = 0;
  14.  
  15. void setup()
  16. {
  17.     pinMode(KUSTIBAS_SENSORS, INPUT);
  18.     pinMode(GAISMAS_SENSORS, INPUT);
  19.     pinMode(GAISMA_1 + 0, OUTPUT);
  20.     pinMode(GAISMA_1 + 1, OUTPUT);
  21.     pinMode(GAISMA_1 + 2, OUTPUT);
  22.     pinMode(GAISMA_1 + 3, OUTPUT);
  23. }
  24.  
  25. void loop()
  26. {
  27.     int i = 0;
  28.     int now = 0;
  29.     switch(state)
  30.     {
  31.         case STATE_IDLE:
  32.             if(digitalRead(KUSTIBAS_SENSORS) && !digitalRead(GAISMAS_SENSORS))
  33.             {
  34.                 state = STATE_GAISMA_TURN_ON;
  35.             }
  36.             break;
  37.         case STATE_GAISMA_TURN_ON:
  38.             for(i = 0; i < 4; i++)
  39.             {  
  40.                 digitalWrite(GAISMA_1 + i, HIGH);
  41.                 delay(2 * 1000);
  42.             }
  43.             state = STATE_GAISMA_ON;
  44.             start_time = millis();
  45.             break;
  46.         case STATE_GAISMA_ON:
  47.             now = millis();
  48.             if((now - start_time) > WAIT_TIME)
  49.             {
  50.                 // Parbaudi 10 reizes vai nav kustiba
  51.                 bool kustiba = false;
  52.                 for(i = 0; i < 10; i++)
  53.                 {
  54.                     if(digitalRead(KUSTIBAS_SENSORS))
  55.                     {
  56.                         kustiba = true;
  57.                         break;
  58.                     }
  59.                     delay(100);
  60.                 }
  61.  
  62.                 if(kustiba)
  63.                 {
  64.                     start_time = millis();
  65.                 }
  66.                 else
  67.                 {
  68.                     state = STATE_GAISMA_TURN_OFF;
  69.                 }
  70.             }
  71.             break;
  72.         case STATE_GAISMA_TURN_OFF:
  73.             for(i = 0; i < 4; i++)
  74.             {  
  75.                 digitalWrite(GAISMA_1 + i, LOW);
  76.                 delay(2 * 1000);
  77.             }
  78.             state = STATE_IDLE;
  79.             break;
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement