#include <EEPROM.h>
#define EEPROM_SIZE 512
char myData[] = "Hello, EEPROM!";
int getFreeEEPROM(){
int freeSpace;
for (int i = 0; i <= EEPROM.length(); i++) {
int content = (int) EEPROM.read(i);
if(content == 255){
freeSpace++;
}
}
return freeSpace;
}
int getUsedEEPROM(){
int usedSpace;
for (int i = 0; i <= EEPROM.length(); i++) {
int content = (int) EEPROM.read(i);
if(content != 255){
usedSpace++;
}
}
return usedSpace;
}
String getUsedEEPROMAddresses() {
String usedAddress = "";
int usedAddresses[EEPROM.length()];
int count = 0; // Variabel untuk menghitung jumlah alamat yang terisi
// Membaca seluruh EEPROM dan memeriksa apakah ada data yang terisi
for (int i = 0; i < EEPROM.length(); i++) {
int content = (int) EEPROM.read(i); // Baca nilai di EEPROM
if (content != 255) { // 255 berarti belum ada data yang ditulis
usedAddresses[count] = i; // Menyimpan alamat EEPROM yang terisi
count++; // Increment count untuk menyimpan alamat selanjutnya
}
}
// Membuat string untuk menampilkan alamat-alamat yang terpakai
usedAddress += "[";
// Menggabungkan semua alamat yang terpakai dalam satu string
for (int i = 0; i < count; i++) {
usedAddress += String(usedAddresses[i]);
if (i < count - 1) {
usedAddress += ", "; // Menambahkan koma hanya jika bukan elemen terakhir
}
}
usedAddress += "]";
return usedAddress;
}
void setup() {
Serial.begin(115200);
EEPROM.begin(EEPROM_SIZE);
// Menulis data ke EEPROM
for (int i = 0; i < sizeof(myData); i++) {
EEPROM.write(i, myData[i]);
}
EEPROM.commit();
Serial.println("Data written to EEPROM.");
// Membaca kapasitas EEPROM
int eepromSize = EEPROM.length();
int usedSpace = sizeof(myData);
int remainingSpace = eepromSize - usedSpace;
// Menampilkan informasi kapasitas
Serial.print("Total EEPROM Size: ");
Serial.println(eepromSize);
Serial.print("Used Space: ");
Serial.println(usedSpace);
Serial.print("Remaining Space: ");
Serial.println(remainingSpace);
Serial.println((char) EEPROM.read(0));
Serial.println((char) EEPROM.read(1));
Serial.println((char) EEPROM.read(2));
Serial.println((char) EEPROM.read(3));
Serial.println((char) EEPROM.read(4));
Serial.println((char) EEPROM.read(5));
Serial.println((char) EEPROM.read(6));
Serial.println((char) EEPROM.read(7));
Serial.println((char) EEPROM.read(8));
Serial.println((char) EEPROM.read(9));
Serial.println((char) EEPROM.read(10));
Serial.println((char) EEPROM.read(11));
Serial.println((char) EEPROM.read(12));
Serial.println((char) EEPROM.read(13));
Serial.println((char) EEPROM.read(14));
Serial.println(EEPROM.read(15));
Serial.println((int) EEPROM.read(16));
Serial.println((long) EEPROM.read(17));
Serial.println((bool) EEPROM.read(18));
// Membaca data ke EEPROM
String data = "";
for (int i = 0; i < sizeof(myData); i++) {
data += (char) EEPROM.read(i);
}
Serial.println(data);
// Mencetak kapasitas total EEPROM
Serial.println("Total EEPROM: "+String(EEPROM.length()));
// Mencetak jumlah EEPROM yang bisa dipakai
int free_space = getFreeEEPROM();
Serial.println("Free EEPROM: "+String(free_space));
// Mencetak jumlah EEPROM yang sudah terpakai
int used_space = getUsedEEPROM();
Serial.println("Used EEPROM: "+String(used_space));
// Mencetak alamat EEPROM yang sudah terpakai
String usedAddres = getUsedEEPROMAddresses();
Serial.println("Used EEPROM Address: "+usedAddres);
}
void loop() {
// Tidak ada yang perlu dilakukan dalam loop
}