70 lines
1.2 KiB
C++
70 lines
1.2 KiB
C++
#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;
|
|
}
|