Hi lferrer,
apologies for the late response ...
So let's look at how to switch flags. I'd create an array per flag and do something like this:
#include <avr/pgmspace.h> // Needed to store stuff in Flash using PROGMEM
#include "FastLED.h" // Fastled library to control the LEDs
// How many leds are connected?
#define NUM_LEDS 195
// Define the Data Pin
#define DATA_PIN 6 // Connected to the data pin of the first LED strip
// Define the array of leds
CRGB leds[NUM_LEDS];
// Define Colors
#define Red 0xFF0000
#define White 0xFFFFFF
#define Blue 0x0000FF
#define Green 0x00FF00
#define Black 0x000000
#define Yellow 0xFFFF00
int Counter=0; // added to use as the flag counter
uint32_t flag_USA[13][15] = {Â
  { White, Blue, White, Blue, White, Blue, White, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 1
  { White, White, White, White, White, White, White, White, Blue, White, Blue, White, Blue, White, Blue, }, // row 2
  { White, Blue, White, Blue, White, Blue, White, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 3
  { White, White, White, White, White, White, White, White, Blue, White, Blue, White, Blue, White, Blue, }, // row 4
  { White, Blue, White, Blue, White, Blue, White, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 5
  { White, White, White, White, White, White, White, White, Blue, White, Blue, White, Blue, White, Blue, }, // row 6
  { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 7
  { White, White, White, White, White, White, White, White, White, White, White, White, White, White, White, }, // row 8
  { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 9
  { White, White, White, White, White, White, White, White, White, White, White, White, White, White, White, }, // row 10
  { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 11
  { White, White, White, White, White, White, White, White, White, White, White, White, White, White, White, }, // row 12
  { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, } // row 13  Â
};
 Â
uint32_t flag_OtherCountry1 [13][15] = {
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, },
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 1
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 1a
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 2
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 2a
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3
 { Blue, White, White, White, Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, }, // rowÂ
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3a
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 4
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 4a
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 5
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 5a
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }
};
 Â
uint32_t flag_OtherCountry2 [13][15] = {
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, },
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 1
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 1a
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 2
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 2a
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3
 { Blue, White, White, White, Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, }, // rowÂ
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3a
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 4
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 4a
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 5
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 5a
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }
};
 Â
uint32_t flag_OtherCountry3 [13][15] = {
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, },
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 1
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 1a
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 2
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 2a
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3
 { Blue, White, White, White, Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, }, // rowÂ
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3a
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 4
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 4a
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 5
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 5a
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }
};
void setup() {Â
 FastLED.addLeds<NEOPIXEL,DATA_PIN>(leds, NUM_LEDS); // Init of the Fastled library
 FastLED.setBrightness(15);
}
void loop() {
 if(Counter>3) { Counter=1; } // reset counter
 Â
 // Light Up
 for(int row = 0; row < 13; row++) {
  for(int col = 0; col < 15; col++) {
   setFlagColor(Counter); // call function to pick the correct flag
   delay(100); // 0.1 second slow down
   FastLED.show(); // Light up one at a timeÂ
  }
 }Â
 delay(5000); // 5 seconds
 // All LEDs OFF
 for(int i = NUM_LEDS-1 ; i >= 0; i-- ) {
  leds = 0;Â
  FastLED.show();
  delay(1);  Â
 } Â
 Counter++; // increase counter
}
void setFlagColor(int flagID) {
 switch(flagID) {
  case 0:Â
   leds[ (row*15)+col ] = flag_USA[row][col];
   break;
  case 1:Â
   leds[ (row*15)+col ] = flag_OtherCountry1[row][col];
   break;
  case 2:Â
   leds[ (row*15)+col ] = flag_OtherCountry2[row][col];
   break;
  case 3:Â
   leds[ (row*15)+col ] = flag_OtherCountry3[row][col];
   break;
 }
}
This is not done in the most elegant way, and I have not tested this.
Under different circumstance I'd actually expand the flag array, but then it may be hard to follow what I'm doing ...
That would have been something like this:
uint32_t flag_OtherCountry2 [4][13][15]
Where the first index indicated the flag number, but you'd have to define the flags then in one large array, something like this:
uint32_t flags [4][13][15] = { {
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, },
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 1
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 1a
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 2
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 2a
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3
 { Blue, White, White, White, Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, }, // rowÂ
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3a
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 4
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 4a
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 5
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 5a
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }
} , {
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, },
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 1
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 1a
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 2
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 2a
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3
 { Blue, White, White, White, Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, }, // rowÂ
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, Blue, White, Blue, Blue, }, // row 3a
 { Blue, Blue, Blue, Blue, Blue, White, White, White, White, White, White, White, White, White, White, }, // row 4
 { White, White, White, White, White, White, White, White, White, White, White, Blue, Blue, Blue, Blue, }, // row 4a
 { Blue, Blue, Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }, // row 5
 { Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Blue, Blue, }, // row 5a
 { Blue, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, Red, }
} , // etc etc
Which would change the "loop()" to
void loop() {
 if(Counter>3) { Counter=1; } // reset counter
 // Light Up
 for(int row = 0; row < 13; row++) {
  for(int col = 0; col < 15; col++) {
   leds[ (row*15)+col ] = flags[Counter][row][col]; // added index
   delay(100); // 0.1 second slow down
   FastLED.show(); // Light up one at a timeÂ
  }
 }Â
 delay(5000); // 5 seconds
 // All LEDs OFF
 for(int i = NUM_LEDS-1 ; i >= 0; i-- ) {
  leds = 0;Â
  FastLED.show();
  delay(1);  Â
 } Â
 Counter++; // increase counter
}
But the code I just posted may get you started the easy way (you may have noticed that I was too lazy to actually make different flag, I just copied you example a few times hahah.
To use a button to toggle the effect, I'd recommend taking a look at this where I use toggling effects: All LED effects in one - catch the button.
Hope this helps 