agrobot_base/Firmware/dispositivos/dispositivos.ino

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;
}