 
 // loop() runs over and over again, as quickly as it can execute.
 void loop() {
-  pattern_hsv_offset_circle_loop(&strip);
+  if (HAL_Core_Mode_Button_Pressed(1000)) {
+    ++pattern;
+    if (pattern >= N_PATTERNS) {
+      pattern = 0;
+    }
+  }
+  if (pattern == 0){
+    pattern_hsv_offset_circle_loop(&strip);
+  } else if (pattern == 1) {
+    pattern_hsv_circle_loop(&strip);
+  }
   strip.show();
   delay(LOOP_DELAY);
 }

}

void pattern_hsv_circle_loop(Adafruit_NeoPixel *strip){
  HsvColor hsv(base_hue, base_saturation, base_brightness);
  RgbColor rgb = HsvToRgb(hsv);
  for (int i = 0 ; i < PIXEL_COUNT ; ++i){
    (*strip).setPixelColor(i, rgb.r, rgb.g, rgb.b);

#define PIXEL_TYPE WS2812B
#define HUE_STEP 10 // 1..255, each loop increments hue by this value
#define LOOP_DELAY 100 //ms
#define BASE_BRIGHTNESS 40 //0-255
#define BASE_SATURATION 255
#define N_PATTERNS 2

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
uint8_t base_hue = 0;
uint8_t pattern = 0;

// setup() runs once, when the device is first turned on.
void setup() {
