Advertisement
Guest User

Untitled

a guest
Nov 19th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. int redDuty = 0;
  2. int greenDuty = 0;
  3. int blueDuty = 0;
  4. int pwmPhase = 0;
  5. int state = 0;
  6. int cycles = 50;
  7. int curCycle = 0;
  8.  
  9. void setup() {
  10.   pinMode(PC13, OUTPUT);
  11.   pinMode(PC14, OUTPUT);
  12.   pinMode(PC15, OUTPUT);
  13.   digitalWrite(PC13, HIGH);
  14.   digitalWrite(PC14, HIGH);
  15.   digitalWrite(PC15, HIGH);
  16. }
  17.  
  18. void loop() {
  19.   if(blueDuty > 0) digitalWrite(PC13, LOW); else digitalWrite(PC13, HIGH);
  20.   if(greenDuty > 0) digitalWrite(PC14, LOW); else digitalWrite(PC14, HIGH);
  21.   if(redDuty > 0) digitalWrite(PC15, LOW); else digitalWrite(PC15, HIGH);
  22.  
  23.   for(pwmPhase=0;pwmPhase < 255; pwmPhase++) {
  24.     if(pwmPhase == blueDuty)
  25.       digitalWrite(PC13, HIGH);
  26.     if(pwmPhase == greenDuty)
  27.       digitalWrite(PC14, HIGH);
  28.     if(pwmPhase == redDuty)
  29.       digitalWrite(PC15, HIGH);
  30.     delayMicroseconds(20);
  31.   }
  32.  
  33.   if(curCycle++ >= cycles) {
  34.     switch(state) {
  35.       case 0:
  36.         if(++redDuty >= 255) {
  37.           curCycle = 0;
  38.           state = 1;
  39.         }
  40.         break;
  41.       case 1:
  42.         if(++greenDuty >= 255) {
  43.           curCycle = 0;
  44.           state = 2;
  45.         }
  46.         break;
  47.       case 2:
  48.         if(--redDuty == 0) {
  49.           curCycle = 0;
  50.           state = 3;
  51.         }
  52.         break;
  53.       case 3:
  54.         if(++blueDuty >= 255) {
  55.           curCycle = 0;
  56.           state = 4;
  57.         }
  58.         break;
  59.       case 4:
  60.         if(--greenDuty == 0) {
  61.           curCycle = 0;
  62.           state = 5;
  63.         }
  64.         break;
  65.       case 5:
  66.         if(++redDuty >= 255) {
  67.           curCycle = 0;
  68.           state = 6;
  69.         }
  70.         break;
  71.       case 6:
  72.         if(++greenDuty >= 255) {
  73.           curCycle = 0;
  74.           state = 7;
  75.         }
  76.         break;
  77.       case 7:
  78.         greenDuty--;
  79.         if(--blueDuty == 0) {
  80.           curCycle = 0;
  81.           state = 1;
  82.         }
  83.         break;
  84.     }
  85.   }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement