![]()
Dai un'occhiata qui:
E qui:
#include <EEPROM.h>
const int BUFSIZE = 10;
char buffer[BUFSIZE];
int bufIndex = 0;
const char* PASSWORD = "12345";
void fillEeprom(int startAddr, int endAddr, byte value) {
if (startAddr < 0) {
return;
}
if (endAddr < 0) {
return;
}
if (startAddr > endAddr) {
return;
}
for (int i = startAddr; i <= endAddr; i++) {
EEPROM.write(i, value);
}
}
void clearEeprom() {
fillEeprom(0, 1023, 0xFF); // ci dovrebbe essere una costante predefinita che indica la fine della EEPROM...
}
void processBuffer(const char* buf) {
if (strcmp(buf, PASSWORD) == 0) {
clearEeprom();
Serial.println("Eeprom cancellata.");
}
else {
Serial.println("Password errata.");
}
}
void setup() {
Serial.begin(9600);
}
void loop() {
char ch;
while(Serial.available() > 0) {
ch = Serial.read();
switch(ch) {
case 0x0A:
case 0x0D:
if (bufIndex > 0) {
buffer[bufIndex] = 0;
processBuffer(buffer);
bufIndex = 0;
}
break;
default:
if (bufIndex < (BUFSIZE - 1)) {
buffer[bufIndex];
bufIndex++;
}
else {
// carattere perso per mancanza di spazio nel buffer
}
}
}
}
L'ho soltanto compilato, ma non provato su una scheda reale. Se ho scritto qualche castroneria, vi prego di segnalarlo, grazie!
![]()