#include <Arduino.h>
#include <EEPROM.h>
byte count = 0;
void setup() {
Serial.begin(115200);
}
void loop() {
count = 3;
uint16_t valS = random(1000, 10001);
uint32_t valL = micros();
Serial.print("\n\nINT to Split: ");Serial.print(valS);
Serial.print("\t\tHEX 0x");Serial.println(valS, HEX);
Serial.print("LONG to Split:");Serial.print(valL);
Serial.print("\t\tHEX 0x");Serial.println(valL, HEX);
byte buffer[6];
buffer[0] = (valS >> 8) & 0xFF; //2nd byte int
buffer[1] = (valS) & 0xFF; //1st byte
buffer[2] = (valL >> 24) & 0xFF; //4th byte long
buffer[3] = (valL >> 16) & 0xFF; //3rd byte
buffer[4] = (valL >> 8) & 0xFF; //2nd byte
buffer[5] = (valL) & 0xFF; //41st byte
//Saving to EEPROM
Serial.print("'PUT' Byte array:\t\t");
for(int i = 0; i < sizeof(buffer); i++){
Serial.print("0x");
Serial.print(buffer[i], HEX);
EEPROM.put(i, buffer[i]);
Serial.print(" ");
}
Serial.println("\nSaved to EEPROM");
//Read From EEPROM
byte readBuff [6];
Serial.println("\nReading from EEPROM:");
Serial.print("'GET' Byte array:\t\t");
for(int i = 0; i < sizeof(readBuff); i++){ //Confirm bytes match saved bytes
EEPROM.get(i, readBuff[i]);
Serial.print("0x");
Serial.print(readBuff[i], HEX);
Serial.print(" ");
}
//For bitshift splice values back together
uint16_t valJ = ((uint16_t)readBuff[0] << 8) | (readBuff[1]);
uint32_t longVal = (((uint32_t)readBuff[2] << 24) | ((uint32_t)readBuff[3] << 16) | ((uint32_t)readBuff[4] << 8) | readBuff[5]);
//Print Results
Serial.print("\nINT Joined = ");
Serial.print(valJ); Serial.print("\t\tHEX: 0x");Serial.println(valJ, HEX);
Serial.print("LONG Joined = ");
Serial.print(longVal); Serial.print("\t\tHEX: 0x");Serial.println(longVal, HEX);
delay(5000);
}