2019 Gem badge code

Since there are a few boards floating around, here it the code that used for it
// This is full code for The TDI L2S project - open source, no warranty, blah blah
// Written by @TechGirlMN includes bits borrowed from Adafruit and Arduino
//


#define BUTTON_PIN   0    // Digital IO pin connected to the button.  This will be
// driven with a pull-up resistor so the switch should
// pull the pin to ground momentarily.  On a high -> low
// transition the button press logic will execute.

#define LED_1   1    // Digital IO pin connected to LED 1
#define LED_2   2    // Digital IO pin connected to LED 2
#define LED_3   3    // Digital IO pin connected to LED 3
#define LED_4   4    // Digital IO pin connected to LED 4

bool oldState = HIGH;
int showType = 0;
int timer = 75;
int timer2 = 25;
int RandLed = 0;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);

}

void loop() {
  // Get current button state.
  bool newState = digitalRead(BUTTON_PIN);

  // Check if state changed from high to low (button press).
  if (newState == LOW && oldState == HIGH) {
    // Short delay to debounce button.
    delay(20);
    // Check if button is still low after debounce.
    newState = digitalRead(BUTTON_PIN);
    if (newState == LOW) {
      showType++;
      if (showType > 3)
        showType = 0;
      startShow(showType);
    }
  }

  // Set the last button state to the old state.
  oldState = newState;
  startShow(showType);
}

void startShow(int i) {
  switch (i) {
    case 0: Scanner();
      break;
    case 1: Random();
      break;
    case 2: Blink();
      break;
    case 3: Pulse();
      break;

  }
}

// A back and forth animation made popular by the TV show Night Rider
void Scanner() {
  

  digitalWrite(LED_1, HIGH);
  delay(timer2);
  digitalWrite(LED_1, LOW);
  digitalWrite(LED_2, HIGH);
  delay(timer2);
  digitalWrite(LED_2, LOW);
  digitalWrite(LED_3, HIGH);
  delay(timer2);
  digitalWrite(LED_4, HIGH);
  digitalWrite(LED_3, LOW);
  delay(timer2);
  digitalWrite(LED_4, LOW);
  digitalWrite(LED_3, HIGH);
  delay(timer2);
  digitalWrite(LED_2, HIGH);
  digitalWrite(LED_3, LOW);
  delay(timer2);
  digitalWrite(LED_2, LOW);

}
//Random lights go on or off
void Random() {
  RandLed = random(1, 5);
  switch (RandLed) {
    case 1: digitalWrite(LED_1, HIGH);
      delay(timer);
      digitalWrite(LED_1, LOW);
      break;
    case 2: digitalWrite(LED_2, HIGH);
      delay(timer);
      digitalWrite(LED_2, LOW);
      break;
    case 3: digitalWrite(LED_3, HIGH);
      delay(timer);
      digitalWrite(LED_3, LOW);;
      break;
    case 4: digitalWrite(LED_4, HIGH);
      delay(timer);
      digitalWrite(LED_4, LOW);
      break;

  }
}

// all on all off
void Blink() {
  digitalWrite(LED_1, HIGH);
  digitalWrite(LED_2, HIGH);
  digitalWrite(LED_3, HIGH);
  digitalWrite(LED_4, HIGH);

  delay(timer);

  digitalWrite(LED_4, LOW);
  digitalWrite(LED_3, LOW);
  digitalWrite(LED_2, LOW);
  digitalWrite(LED_1, LOW);

  delay(timer);



}

//Theatre-style crawling lights.
void Pulse() {
  digitalWrite(LED_3, HIGH);
  digitalWrite(LED_1, HIGH);
  digitalWrite(LED_2, LOW);
  digitalWrite(LED_4, LOW);
  delay(timer);

  digitalWrite(LED_1, LOW);
  digitalWrite(LED_3, LOW);
  digitalWrite(LED_4, HIGH);
  digitalWrite(LED_2, HIGH);

  delay(timer);


}