#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <EEPROM.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// Dichiarazione per un display SSD1306 collegato tramite I2C (addr predefinito 0x3C)
#define OLED_RESET    -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  // Inizializza la comunicazione seriale per il debug
  Serial.begin(9600);

  // Inizializza il display SSD1306 con l'indirizzo I2C 0x3C
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  
  // Pulire il buffer del display
  display.clearDisplay();
  display.setTextSize(1);      
  display.setTextColor(SSD1306_WHITE);  
  display.setCursor(0, 0);     
  display.print(F("Cancellazione EEPROM"));
  display.display();

  // Numero di byte nella EEPROM
  int eepromSize = EEPROM.length();

  // Scrivere 0 in ogni byte della EEPROM
  for (int i = 0; i < eepromSize; i++) {
    EEPROM.write(i, 0);
  }

  // Aggiorna il display per mostrare il messaggio di completamento
  display.clearDisplay();
  display.setCursor(0, 0);     
  display.print(F("EEPROM Cancellata"));
  display.display();
}

void loop() {
  // Non fare nulla
}
