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_