Trouble with adding new values to 2D array

Boy, multi-dimensional arrays in C/Arduino sure aren’t fun! Here’s a quick overview of my project; I’m working on an RFID-enabled mood lamp that will allow certain color values to be associate with certain RFID tags (so that a user can “teach” their favorite light level to the Arduino and associate it with their personal tag).

I am storing all RFID tags in one array and color values in another (as a set of triplets). My frustration right now is in trying to append or “push” new color values onto my pre-existing array for colors. I keep getting an error saying “invalid array assignment” whenever I try to construct a temporary array of ints (red, green, blue values) and then pushing that temporary array onto the pre-existing array of color values. Hopefully this is clear enough that you can make sense of my code. Any help is appreciated, I’m just stumpted!

Some irrelevant code is removed to make it easier to read

// Preferences
const int maxTags = 20;
char* tags[maxTags] = {"23920592821","295820233"};
int colors[maxTags][3] = {{255,255,255},
int numTags = 2;

void programmingMode() {
  char newTag[10];
  int bytesread;
  int val;
  int r,g,b;
  // First the user must pass in a tag, so poll the reader until a tag is read
  // Check if reader data is available
  while(Serial.available() == 0) {
    // Check for a header
    if( == 10) {
      bytesread = 0; 
      // Read in the 10 digit code
      while(bytesread < 10) {
        if( Serial.available() > 0) { 
          val =; 
          if( val == 10 || val == 13)
          newTag[bytesread] = val;

      // Wait until set switch is pressed
      while( digitalRead(setPin) == LOW ) {}
      // Read the values of the pots
      r = analogRead( redPot );
      g = analogRead( greenPot );
      b = analogRead( bluePot );
     int newColor[3] = {r,g,b};
      tags[numTags] = newTag;
      colors[2] = newColor;
      // Chill out for a sec to prevent double-reads

  // Append RFID tag to tags array
  // Append color values (pot positions) to colors array
  // Update numTags variable

You need to add the r, g, and b values individually:

colors[numTags][0] = r;
colors[numTags][1] = g;
colors[numTags][2] = b;

Well. That was simple. I'm a bit surprised, lol. Works like a charm, thanks!