 unsigned char display_buffer_2[BUFFER_SIZE];
 static unsigned char *display_buffer = display_buffer_1;
 
+unsigned char random_colours_buffer[BUFFER_SIZE];
+unsigned int random_colours_buffer_pixel = 0;
+
+
 volatile byte display_buffer_live = 1;
 
 volatile byte new_row = 0;

unsigned long tickcounter = 0;
unsigned long lastdata_tickcounter = 0;
// 40000 = 20 seconds
unsigned long timeout = 40000;

volatile boolean cycling = false;
// 1000 ~ 1/2 second

unsigned long cycle_tickcounter = 0;

unsigned long colours[] = {0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0x00FFFF, 0xFF00FF, 0xFFFFFF};
int colours_length = 7;

void set_initial_pattern(void) {
  set_random_colours();
}

void set_random_colours() {
  
  for (int pixel=0; pixel < RGB_LEDS; pixel++) {
    unsigned long colour = colours[random(colours_length)];
    display_buffer[pixel * 3 + 0] = colour & 0xFF;
