#include "EEPROM.h" enum T_Code { Mov = 100, Dir = 101, Sen = 102, Atu = 103 }; int addr_code = 25; #define EEPROM_SIZE 512 void setup() { Serial.begin(115200); EEPROM.begin(EEPROM_SIZE); //AtualizarMemoria(1, addr_code, Mov); } void loop() { int d_code = AtualizarMemoria(2, addr_code, 0); Serial.print("d_code: "); Serial.println(d_code); delay(5000); } void LimparMemoria() { for (int i = 0; i < 254; i++) { EEPROM.write(i, '0'); EEPROM.commit(); } } int AtualizarMemoria(int Funcao, int Endereco, int Valor) { int MaxMemoria = 3; int ValorLido = 0; if (Funcao == 0) { LimparMemoria(); } else { String ValorLidoStr = ""; for (int i = Endereco; i < (Endereco + MaxMemoria); i++) { ValorLidoStr += (char)EEPROM.read(i); } ValorLido = ValorLidoStr.toInt(); if (Funcao == 1) { ValorLido = Valor; ValorLidoStr = (String)ValorLido; int idx = 0; for (int i = Endereco; i < (Endereco + MaxMemoria); i++) { char V = '0'; int PIndex = (MaxMemoria - ValorLidoStr.length()); if (PIndex <= idx) V = ValorLidoStr[idx - PIndex]; EEPROM.write(i, V); idx++; } EEPROM.commit(); } } return ValorLido; }