Memorias EEPROM são conhecidas como memorias não volátil, que não se perdem quando não há mais energia, ou seja, mesmo desligando seu aparelho as informações contidas na memoria não se perdem.
Estas são semelhantes as memoria FLASH, em seu propósito, porem memorias EEPROM são ditas de escrita bit-a-bit, quanto as FLASHs são de bloco-a-bloco.
Estas memorias são destinadas ao armazenamento de dados nem sempre permanentes, mas de pouca modificação, como armazenamento de configurações, constantes e algumas outras informações, como senhas e pre-definições. Isso por que a gravação da memoria EEPROM é limitada, mesmo que seja bastante, ainda é limitada. Um loop mal feito poderia facilmente acabar com uma EEPROM.
Nos Arduinos mais comuns, esta memoria pode variar entre 1KB até 4KB, porem alguns modelos ja estão saindo com mais de 16KB, e pode ser escrita até 100,000 vezes.
Se sua memoria é curta ou já foi gravada até seu limite, o Arduino pode ser facilmente expandido para suportar mais chips de memoria EEPROM, como é o caso dos chips da serie eeprom-24cxx, que pode chegar à 64KB com o custo de R$ 1,50.
Para utilizar memorias externas, podemos usar alguma lib que já nos traz as facilidades do chip escolhido, ou podemos utilizar a lib Wire.h, já que toda comunicação é feita por I2C, como pode ser visto nas referencias do Arduino, aqui.
Um outro ponto importante à se debater é a questão da segurança. Como dito acima uma EEPROM trabalha bit-a-bit, e pode ser lida bit-a -bit, afim de se obter os dados salvos na memoria. Sempre que formos trabalhar pensando na segurança, é possível trabalhar com uma pequena criptografia, mesmo que seja primitiva, para esconder alguma coisa importante que ali esteja.
Para gravar, basta passar no primeiro parâmetro, o endereço da memoria onde deseja salvar, e no segundo parâmetro o valor em byte (0 à 255). Para ler, basta passar o endereço, que receberá o valor.