I'm having a problem with the RAM limitation of my microcontroller (max of 124KB). Here is the part of my code that is giving me some headache:

```
// Declaring arrays (they actually need to be float)
// The three dots (...) means that there are several more numbers inside the arrays (actually there are 345 numbers inside each array).
float AR_KELON_POWER_COOL_21_FANMAX[] = {1,348,174,21,66,21,66,...,3800};
float AR_KELON_SWING_COOL_21_FANMAX[] = {1,347,173,21,65,21,65,...3800};
float AR_KELON_COOL_18_FAN1[] = {1,348,174,21,65,21,65,21,21,...,3800}
float AR_KELON_COOL_18_FAN2[] = {1,348,173,21,66,21,66,21,...,3800}
float AR_KELON_COOL_18_FAN3[] = {1,348,173,21,66,21,66,21,20,...,3800}
float AR_KELON_COOL_18_FANMAX[] = {1,348,173,21,66,21,66,21,...,3800}
float AR_KELON_COOL_19_FAN1[] = {1,348,174,21,66,21,66,21,21,...,3800}
//Will be adding more arrays

//array of pointers
float *airConditionerCommands[] = {
    AR_KELON_POWER_COOL_21_FANMAX,
    AR_KELON_SWING_COOL_21_FANMAX,
    AR_KELON_COOL_18_FAN1,
    AR_KELON_COOL_18_FAN2,
    AR_KELON_COOL_18_FAN3,
    AR_KELON_COOL_18_FANMAX,
    AR_KELON_COOL_19_FAN1
// I put more arrays inside here as I declare the arrays
}

void executeCommands(int data) {
    int i=0;
    int command=0;

    for(i=0; airConditionerCommands[i] != NULL; i++) {
        command = i + 67;
        if(command == data) {
            //This function will execute some instructions as it reads the array airConditionerCommands[i].
            sendIR(airConditionerCommands[i], 400, 38); 
            break;
        }
    }

}

```

This program works perfectly if there are less than about 110 declared arrays (and abviously put inside of \*airConditionerCommands[]). But if I declare more arrays the program won't be compiled, because there is no more RAM left in the microcontroller.
Is there a way around this? I don't have too much experience with C, but I think there is a way to allocate and free the memory the arrays are using.

Any help would be awsome. Thanks