 }
 
 void barber_pole() {
-  //where the animation starts
-  int offset = 0;
+  //where the animation starts  
   CRGB red = CRGB::Red;
   CRGB white = CRGB::White;
-  while(!quitAnimation()) {
+  int offset = 0;  
+  while(!quitAnimation()) {
+    if(offset >= MatrixWidth) {
+      offset = 0;
+    }
     //fill with white
     fill_color(leds, 0, NUM_LEDS-1, white);
-    if(offset > 5) {
-      offset = 0;
-    }
-    //red on every 6th led (1 per row)
-    for(int i=offset; i<NUM_LEDS; i+=6) {
-      Serial.println(i);
-      leds[i] = red;
-    }
-    offset++;
+    int x = offset;
+    for(int y=0; y<MatrixHeight; y++) {
+      if(x >= MatrixWidth) {
+        x = 0;
+      }
+      leds[XY(x,y)] = red;
+      x++;
+    }
+    offset++;    
     FastLED.show();
-    aDelay(3000 * ANIMATION_SPEED);
+    aDelay(100 * ANIMATION_SPEED);
   }
 }
 

  CRGB color1 = CRGB::Red;
  CRGB color2 = CRGB::Blue;
  while(!quitAnimation()) {
    for(int i = 1; i<=LED_COLS; i++) {
      if(quitAnimation()) {
        break;
      }

}

void fill_row(int row, CRGB color) {
  int row_end = row*MatrixWidth-1;
  int row_start = row_end-MatrixWidth;
  fill_color(leds, row_start, row_end, color);
}

void fill_column(int col, CRGB color) {
  for(int i = 0; i < NUM_LEDS; i+=MatrixWidth) {
    int led = i+col-1;    
    leds[led] = color;    
  }
}

uint16_t XY( uint8_t x, uint8_t y)
{
  uint16_t i;  
  i = (y * MatrixWidth) + x; 
  return i;
}