Scrolling LED matrix display - Parola for Arduino

Hi guys, please assist me on EEPROM. I want send message serially to my arduino mega in this format (hello~1).
If the second part of the message is 1, it saves it in EEPROM starting from address 0, if is 2, start from address 401, if is 2, start from address 802, ... But to my surprise, only the one with address 0 is saving. Others are not. Please assist me bosses. Here is my code:

#include <EEPROM.h>

const int eeprom_size = 400; // values saved in eeprom should never exceed 400 bytes
char eeprom_buffer[eeprom_size];

char first_eeprom_value;

String incomingMessageStr = "";
int incomingLength, incomingLength1;
int EEPROMpos = 0;
bool newMessageAvailable = false;
int i;
char eepAdr;

int arrayNumber = 0;

//Function to read Serial messages
void readSerial(void)
{
while (Serial.available())
{
char c = (char)Serial.read();
if (c == '\n') // end of message character or full buffer
{
newMessageAvailable = true;
}
else // move char pointer to next position
incomingMessageStr +=c;
}
}

//Function to save received messages into EEPROM
void SaveMsg(void){
//Converting incoming text to char array
incomingLength1 = incomingMessageStr.length();
incomingLength1 += 1;
char incomingMessage[incomingLength1];
incomingMessageStr.toCharArray(incomingMessage, incomingLength1);

int firstDelimiter = incomingMessageStr.indexOf('~');
String arrayIndex = incomingMessageStr.substring(firstDelimiter+1);

//Converting arrayIndex
arrayNumber = arrayIndex.toInt();
arrayNumber -= 1;

Serial.print("Incoming message: ");
Serial.println(incomingMessageStr);

//Saving into into EEPROM
if (arrayNumber == 0){
// save_string_to_eeprom(0, incomingMessage);
for( i = 0; i < incomingLength1; i++){
EEPROM.write(i, incomingMessage*);*

  • delay(4);*
  • Serial.print("Reading from immediate addr: ");*
  • eepAdr = EEPROM.read(i);*
  • Serial.print(i);*
  • Serial.print(" Data: ");*
  • Serial.println(eepAdr);*
  • }*
  • }*
  • else if (arrayNumber == 1){*
  • // save_string_to_eeprom(401, incomingMessage);*
  • for(i = 401; i < 401+incomingLength1; i++){*
    _ EEPROM.write(i, incomingMessage*);_
    _
    delay(4);_
    _
    Serial.print("Reading from immediate addr: ");_
    _
    eepAdr = EEPROM.read(i);_
    _
    Serial.print(i);_
    _
    Serial.print(" Data: ");_
    _
    Serial.println(eepAdr);_
    _
    }_
    _
    }_
    _
    else if (arrayNumber == 2){_
    // save_string_to_eeprom(802, incomingMessage);
    _
    for(i = 802; i < 801+incomingLength1; i++){_
    _ EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    else if (arrayNumber == 3){_
    // save_string_to_eeprom(1203, incomingMessage);
    _ for(i = 1203; i < 1203+incomingLength1; i++){
    EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    else if (arrayNumber == 4){_

    // save_string_to_eeprom(1604, incomingMessage);
    _ for(i = 1604; i < 1604+incomingLength1; i++){
    EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    else if (arrayNumber == 5){_

    // save_string_to_eeprom(2005, incomingMessage);
    _ for(i = 2005; i < 2005+incomingLength1; i++){
    EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    else if (arrayNumber == 6){_

    // save_string_to_eeprom(2406, incomingMessage);
    _ for(i = 2406; i < 2406+incomingLength1; i++){
    EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    else if (arrayNumber == 7){_

    // save_string_to_eeprom(2807, incomingMessage);
    _ for(i = 2807; i < 2807+incomingLength1; i++){
    EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    else if (arrayNumber == 8){_

    // save_string_to_eeprom(3208, incomingMessage);
    _ for(i = 3208; i < 3208+incomingLength1; i++){
    EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    else if (arrayNumber == 9){_

    // save_string_to_eeprom(3609, incomingMessage);
    _ for(i = 3609; i < 3609+incomingLength1; i++){
    EEPROM.write(i, incomingMessage);
    delay(4);
    Serial.print("Reading from immediate addr: ");
    eepAdr = EEPROM.read(i);
    Serial.print(i);
    Serial.print(" Data: ");
    Serial.println(eepAdr);
    }
    }
    Serial.println("Data saved into eeprom, successfully");
    Serial.println();
    incomingMessageStr = "";
    newMessageAvailable = false;
    }
    void setup() {
    Serial.begin(9600); // serial communication initialize*

    * Serial.println("Welcome to EEprom test page..");
    Serial.println("Wait until you see EEPROM WIPED message before you continue");
    // clear eeprom on new flash... just for debugging*

    * for (int i = 0 ; i < EEPROM.length() ; i++) {
    EEPROM.write(i, 0);
    }
    Serial.println("EEPROM wiped!");
    }
    void loop() {
    readSerial();
    if (newMessageAvailable)
    {
    SaveMsg();
    Serial.println("After SaveMsg");
    }*

    Thanks_

You may want to edit the title of the first entry of this thread as it does not describe your problem.

Please us code tags for your code so that the code takes less space and is more readable. You can edit your post to add the code tags

Really try to simplify your code to make it more maintainable. All the different cases only differ in the start address, which you can calculate and just use one case. With a lot less code, debugging becomes easier.

EEPROM.write only writes one byte at a time, so you cannot do

    //Converting arrayIndex
    arrayNumber = arrayIndex.toInt();
    arrayNumber -= 1;
    eepromStart = (arrayNumber * eeprom_size);

    //Saving into into EEPROM  
    for (int i=0; i<incomingLength1; i++)
      EEPROM.write(eepromStart+i, incomingMessage[i]);