// C++ code
//
int brightness = 0;

int counter;

int counter2;

int counter3;

int counter4;

int counter5;

int counter6;

int counter7;

int counter8;

int counter9;

int counter10;

int counter11;

int counter12;

int counter13;

int counter14;

int counter15;

int counter16;

int counter17;

int counter18;

int counter19;

int counter20;

int counter21;

int counter22;

int counter23;

int counter24;

int counter25;

void setup()
{
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
}

void loop()
{
  //Wave
  for (counter = 0; counter < 30; ++counter) {
    for (brightness = 0; brightness <= 255; brightness += 100) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 100) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 0; brightness <= 255; brightness += 100) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 100) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
  }
  for (counter2 = 0; counter2 < 30; ++counter2) {
    for (brightness = 0; brightness <= 255; brightness += 80) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 80) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 0; brightness <= 255; brightness += 80) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 80) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
  }
  for (counter3 = 0; counter3 < 30; ++counter3) {
    for (brightness = 0; brightness <= 255; brightness += 50) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 50) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 0; brightness <= 255; brightness += 50) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 50) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
  }
  for (counter4 = 0; counter4 < 20; ++counter4) {
    for (brightness = 0; brightness <= 255; brightness += 30) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 30) {
      analogWrite(0, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 0; brightness <= 255; brightness += 30) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
    for (brightness = 255; brightness >= 0; brightness -= 30) {
      analogWrite(1, brightness);
      delay(50); // Wait for 50 millisecond(s)
    }
  }

  //Sequence
  for (counter5 = 0; counter5 < 16; ++counter5) {
    analogWrite(0, 255);
    analogWrite(1, 0);
    delay(1000); // Wait for 1000 millisecond(s)
    analogWrite(0, 0);
    analogWrite(1, 255);
    delay(1000); // Wait for 1000 millisecond(s)
  }
  for (counter6 = 0; counter6 < 16; ++counter6) {
    analogWrite(0, 255);
    analogWrite(1, 0);
    delay(500); // Wait for 500 millisecond(s)
    analogWrite(0, 0);
    analogWrite(1, 255);
    delay(500); // Wait for 500 millisecond(s)
  }
  for (counter7 = 0; counter7 < 16; ++counter7) {
    analogWrite(0, 255);
    analogWrite(1, 0);
    delay(300); // Wait for 300 millisecond(s)
    analogWrite(0, 0);
    analogWrite(1, 255);
    delay(300); // Wait for 300 millisecond(s)
  }
  for (counter8 = 0; counter8 < 32; ++counter8) {
    analogWrite(0, 255);
    analogWrite(1, 0);
    delay(100); // Wait for 100 millisecond(s)
    analogWrite(0, 0);
    analogWrite(1, 255);
    delay(100); // Wait for 100 millisecond(s)
  }

  //Slo-Glo
  digitalWrite(0, HIGH);
  digitalWrite(1, LOW);
  delay(2000); // Wait for 2000 millisecond(s)
  for (brightness = 255; brightness >= 0; brightness -= 1) {
    analogWrite(0, brightness);
    delay(100); // Wait for 100 millisecond(s)
  }
  delay(2000); // Wait for 2000 millisecond(s)
  for (brightness = 0; brightness <= 255; brightness += 1) {
    analogWrite(1, brightness);
    delay(100); // Wait for 100 millisecond(s)
  }
  delay(2000); // Wait for 2000 millisecond(s)
  for (brightness = 255; brightness >= 0; brightness -= 1) {
    analogWrite(1, brightness);
    delay(100); // Wait for 100 millisecond(s)
  }
  delay(2000); // Wait for 2000 millisecond(s)
  for (counter9 = 0; counter9 < 5; ++counter9) {
    for (brightness = 0; brightness <= 255; brightness += 5) {
      analogWrite(0, brightness);
      delay(100); // Wait for 100 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 5) {
      analogWrite(0, brightness);
      delay(100); // Wait for 100 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 0; brightness <= 255; brightness += 5) {
      analogWrite(1, brightness);
      delay(100); // Wait for 100 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 5) {
      analogWrite(1, brightness);
      delay(100); // Wait for 100 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
  }
  for (counter10 = 0; counter10 < 5; ++counter10) {
    for (brightness = 0; brightness <= 255; brightness += 10) {
      analogWrite(0, brightness);
      delay(80); // Wait for 80 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 10) {
      analogWrite(0, brightness);
      delay(80); // Wait for 80 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 0; brightness <= 255; brightness += 10) {
      analogWrite(1, brightness);
      delay(80); // Wait for 80 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 10) {
      analogWrite(1, brightness);
      delay(80); // Wait for 80 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
  }
  for (counter11 = 0; counter11 < 5; ++counter11) {
    for (brightness = 0; brightness <= 255; brightness += 20) {
      analogWrite(0, brightness);
      delay(60); // Wait for 60 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 20) {
      analogWrite(0, brightness);
      delay(60); // Wait for 60 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 0; brightness <= 255; brightness += 20) {
      analogWrite(1, brightness);
      delay(60); // Wait for 60 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 20) {
      analogWrite(1, brightness);
      delay(60); // Wait for 60 millisecond(s)
    }
    delay(2000); // Wait for 2000 millisecond(s)
  }
  for (brightness = 255; brightness <= 0; brightness += 20) {
    analogWrite(0, brightness);
    delay(60); // Wait for 60 millisecond(s)
  }

  //Chase and Flash
  digitalWrite(0, LOW);
  for (counter15 = 0; counter15 < 2; ++counter15) {
    for (counter12 = 0; counter12 < 4; ++counter12) {
      digitalWrite(0, HIGH);
      digitalWrite(1, LOW);
      delay(90); // Wait for 90 millisecond(s)
      digitalWrite(0, LOW);
      digitalWrite(1, LOW);
      delay(90); // Wait for 90 millisecond(s)
    }
    for (counter13 = 0; counter13 < 4; ++counter13) {
      digitalWrite(0, LOW);
      digitalWrite(1, HIGH);
      delay(90); // Wait for 90 millisecond(s)
      digitalWrite(0, LOW);
      digitalWrite(1, LOW);
      delay(90); // Wait for 90 millisecond(s)
    }
    for (counter14 = 0; counter14 < 4; ++counter14) {
      digitalWrite(0, HIGH);
      digitalWrite(1, LOW);
      delay(200); // Wait for 200 millisecond(s)
      digitalWrite(0, LOW);
      digitalWrite(1, HIGH);
      delay(200); // Wait for 200 millisecond(s)
    }
  }

  //Slow Fade
  analogWrite(0, 255);
  analogWrite(1, 255);
  delay(1000); // Wait for 1000 millisecond(s)
  for (brightness = 255; brightness >= 0; brightness -= 1) {
    analogWrite(0, brightness);
    analogWrite(1, brightness);
    delay(90); // Wait for 90 millisecond(s)
  }
  delay(1000); // Wait for 1000 millisecond(s)
  for (counter16 = 0; counter16 < 5; ++counter16) {
    for (brightness = 0; brightness <= 255; brightness += 1) {
      analogWrite(0, brightness);
      analogWrite(1, brightness);
      delay(90); // Wait for 90 millisecond(s)
    }
    delay(1000); // Wait for 1000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 1) {
      analogWrite(0, brightness);
      analogWrite(1, brightness);
      delay(90); // Wait for 90 millisecond(s)
    }
    delay(1000); // Wait for 1000 millisecond(s)
  }
  for (brightness = 255; brightness >= 0; brightness -= 1) {
    analogWrite(0, brightness);
    analogWrite(1, brightness);
    delay(90); // Wait for 90 millisecond(s)
  }
  delay(1000); // Wait for 1000 millisecond(s)
  for (counter17 = 0; counter17 < 5; ++counter17) {
    for (brightness = 0; brightness <= 255; brightness += 1) {
      analogWrite(0, brightness);
      analogWrite(1, brightness);
      delay(40); // Wait for 40 millisecond(s)
    }
    delay(1000); // Wait for 1000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 1) {
      analogWrite(0, brightness);
      analogWrite(1, brightness);
      delay(40); // Wait for 40 millisecond(s)
    }
    delay(1000); // Wait for 1000 millisecond(s)
  }
  for (counter18 = 0; counter18 < 5; ++counter18) {
    for (brightness = 0; brightness <= 255; brightness += 1) {
      analogWrite(0, brightness);
      analogWrite(1, brightness);
      delay(20); // Wait for 20 millisecond(s)
    }
    delay(1000); // Wait for 1000 millisecond(s)
    for (brightness = 255; brightness >= 0; brightness -= 1) {
      analogWrite(0, brightness);
      analogWrite(1, brightness);
      delay(20); // Wait for 20 millisecond(s)
    }
    delay(1000); // Wait for 1000 millisecond(s)
  }
  
  //Flash
  for (brightness = 1; brightness <= 10; brightness += 1) {
    analogWrite(0, brightness);
    analogWrite(1, brightness);
    delay(20); // Wait for 20 millisecond(s)
  }
  for (counter19 = 0; counter19 < 16; ++counter19) {
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    delay(1000); // Wait for 1000 millisecond(s)
    digitalWrite(0, LOW);
    digitalWrite(1, LOW);
    delay(1000); // Wait for 1000 millisecond(s)
  }
  for (counter20 = 0; counter20 < 16; ++counter20) {
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    delay(500); // Wait for 500 millisecond(s)
    digitalWrite(0, LOW);
    digitalWrite(1, LOW);
    delay(500); // Wait for 500 millisecond(s)
  }
  for (counter21 = 0; counter21 < 16; ++counter21) {
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    delay(300); // Wait for 300 millisecond(s)
    digitalWrite(0, LOW);
    digitalWrite(1, LOW);
    delay(300); // Wait for 300 millisecond(s)
  }
  for (counter22 = 0; counter22 < 32; ++counter22) {
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
    delay(100); // Wait for 100 millisecond(s)
    digitalWrite(0, LOW);
    digitalWrite(1, LOW);
    delay(100); // Wait for 100 millisecond(s)
  }

  //Twinkle and Flash
  for (counter25 = 0; counter25 < 16; ++counter25) {
    for (counter23 = 0; counter23 < 4; ++counter23) {
      digitalWrite(0, HIGH);
      digitalWrite(1, LOW);
      delay(90); // Wait for 90 millisecond(s)
      digitalWrite(0, LOW);
      digitalWrite(1, LOW);
      delay(90); // Wait for 90 millisecond(s)
    }
    for (counter24 = 0; counter24 < 4; ++counter24) {
      digitalWrite(0, LOW);
      digitalWrite(1, HIGH);
      delay(90); // Wait for 90 millisecond(s)
      digitalWrite(0, LOW);
      digitalWrite(1, LOW);
      delay(90); // Wait for 90 millisecond(s)
    }
  }
}
ATTINY8520PU