macca-nz

V3 Fade and Flip/Flop Strobe

Feb 12th, 2021 (edited)
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define Z 0
  2. #define I 1
  3. #define II 2
  4. #define III 3
  5. #define IV 4
  6. #define X 10
  7. #define XI 11
  8. #define XXIV 24
  9. #define XXVI 26
  10. #define XL 40
  11. #define CCXX 120
  12. #define PWM_MAX 255
  13.  
  14. const byte strobe1 = II;
  15. const byte strobe2 = X;
  16. const byte fadeLed = XI;
  17.  
  18. const byte delayTime = XL;
  19.  
  20. long ctFadeDelay = Z;
  21.  
  22. bool switchLED = true,
  23.      updateLED = false,
  24.      fade = true,
  25.      updateFade = false;
  26.      
  27. uint8_t fadeState = Z,
  28.         strobeState = Z,
  29.         strobeCount = Z,
  30.         fadeCount = Z;
  31.  
  32. void setup() {
  33.             pinMode(fadeLed, OUTPUT);
  34.             pinMode(strobe1, OUTPUT);
  35.             pinMode(strobe2, OUTPUT);
  36. }
  37.  
  38. void loop() {
  39.  
  40.           //Single timer which creates process counters
  41.           if(millis() - ctFadeDelay > delayTime){                                                
  42.                 fadeCount = fadeCount + I;
  43.                 strobeCount = strobeCount + I;      
  44.                 ctFadeDelay = millis();
  45.               }
  46.  
  47.           //Fading beacon
  48.           if(fade){
  49.               fadeState = (fadeCount * III);
  50.               updateFade = true;
  51.                   if(fadeState > CCXX){
  52.                       fadeState = PWM_MAX;
  53.                       fadeCount = Z;
  54.                       updateFade = true;
  55.                       fade = false;
  56.                   }
  57.           }else{
  58.               if(fadeCount > XXVI){
  59.                     fadeCount = Z;
  60.                     fade = true;
  61.               }else if(fadeCount > IV){
  62.                     fadeState = Z;
  63.                     updateFade = true;
  64.               }else if(fadeCount > II){
  65.                     fadeState = PWM_MAX;
  66.                     updateFade = true;
  67.               }else if(fadeCount > Z){
  68.                     fadeState = Z;
  69.                     updateFade = true;
  70.               }
  71.           }
  72.        
  73.           //Flip Flop Strobe
  74.           if(strobeCount > XXIV){
  75.                 strobeState = HIGH;
  76.                 updateLED = true;
  77.                 strobeCount = Z;
  78.                       if(switchLED == true){
  79.                             switchLED = false;
  80.                       }else{
  81.                             switchLED = true;
  82.                       }
  83.           }else if(strobeCount > IV){
  84.                 strobeState = LOW;
  85.                 updateLED = true;
  86.           }else if(strobeCount > III){
  87.                 strobeState = HIGH;
  88.                 updateLED = true;
  89.           }else if(strobeCount > II){
  90.                 strobeState = LOW;
  91.                 updateLED = true;
  92.           }else if(strobeCount > I){
  93.                 strobeState = HIGH;
  94.                 updateLED = true;
  95.           }else if(strobeCount > Z){
  96.                 strobeState = LOW;
  97.                 updateLED = true;    
  98.          
  99.           }
  100.  
  101.           //Write update tests to to reduce processing load
  102.           if(updateLED){
  103.                 if(switchLED){
  104.                       digitalWrite(strobe1, strobeState);
  105.                 }else{
  106.                       digitalWrite(strobe2, strobeState);
  107.                 }
  108.                 updateLED = false;
  109.           }
  110.           if(updateFade){
  111.                 analogWrite(fadeLed, fadeState);
  112.                 updateFade = false;
  113.           }  
  114. }
Add Comment
Please, Sign In to add comment