Advertisement
justhrun

LED_Satu_Dua

Aug 28th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. #define LED_SATU    PORTD5    // pin5
  2. #define LED1_NYALA  PORTD |= (1<<LED_SATU)
  3. #define LED1_PADAM  PORTD &=~(1<<LED_SATU)
  4.  
  5. #define LED_DUA     PORTD7    // pin7
  6. #define LED2_NYALA  PORTD |= (1<<LED_DUA)
  7. #define LED2_PADAM  PORTD &=~(1<<LED_DUA)
  8.  
  9. const unsigned long limit1Padam = 2000;  // 2detik
  10. const unsigned long limit1Nyala = 1000;  // 1detik
  11.  
  12. const unsigned long limit2Padam = 5000;  // 5detik
  13. const unsigned long limit2Nyala = 1000;  // juga 1detik
  14.  
  15. // mulainya nyala
  16. unsigned long start1Nyala, start2Nyala;
  17.  
  18. // mulainya padam
  19. unsigned long start1Padam, start2Padam;
  20.  
  21. volatile boolean led1Status=false, led2Status=false;
  22. const unsigned long limitDetik = 1000; // per 1detik
  23. unsigned long timerDetik;
  24. unsigned long t_now;
  25.  
  26. void checkLampu() {
  27.   t_now = millis();
  28.   if(led1Status) {    // led1 lagi nyala
  29.     if(t_now-start1Nyala >= limit1Nyala) {
  30.       LED1_PADAM;
  31.       led1Status = false;
  32.       start1Padam = millis();
  33.     }
  34.   } else {            // led1 lagi padam
  35.     if(t_now-start1Padam >= limit1Padam) {
  36.       LED1_NYALA;
  37.       led1Status = true;
  38.       start1Nyala = millis();
  39.     }
  40.   }
  41.  
  42.   if(led2Status) {    // led2 lagi nyala
  43.     if(t_now-start2Nyala >= limit2Nyala) {
  44.       LED2_PADAM;
  45.       led2Status = false;
  46.       start2Padam = millis();
  47.     }
  48.   } else {            // led2 lagi padam
  49.     if(t_now-start2Padam >= limit2Padam) {
  50.       LED2_NYALA;
  51.       led2Status = true;
  52.       start2Nyala = millis();
  53.     }
  54.   }
  55. }
  56.  
  57. void setup() {
  58.   DDRB |= (1<<LED_SATU);
  59.   DDRB |= (1<<LED_DUA);
  60.   LED1_PADAM; LED2_PADAM;
  61.   start1Padam = start2Padam = timerDetik = millis();
  62. };
  63.  
  64. void loop() {
  65.   if( millis()-timerDetik >= limitDetik ) {
  66.     checkLampu();
  67.     timerDetik = millis();
  68.   }
  69.   _delay(10);
  70. };
  71.  
  72. void _delay(const unsigned long delayTime) {
  73.   unsigned long delayStart = millis();
  74.   while(millis()-delayStart<delayTime) {}
  75. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement