Arduino Nano, Startzähler zählt falsch
Hallo zusammen.
Ich habe ein Problem mit einem Startzähler beim Arduino NANO (Nachbau von Ali)
Und zwar zählt er die Sketchstarts zwei Mal, wenn man ihm den Saft abdreht (Stecker ziehen) aber nur ein Mal (wie gewünscht) wenn man den Resetbutton drückt.
Hier de Code:
Die Zeile mit "startCounter++;" macht der anscheinend zwei Mal direkt hintereinander.
Was läuft da falsch?
Ich habe ein Problem mit einem Startzähler beim Arduino NANO (Nachbau von Ali)
Und zwar zählt er die Sketchstarts zwei Mal, wenn man ihm den Saft abdreht (Stecker ziehen) aber nur ein Mal (wie gewünscht) wenn man den Resetbutton drückt.
Hier de Code:
#include <EEPROM.h> {{comment_single_line_double_slash:0}}
int startCounter = 0; //int-Variable definieren
void setup() {
Serial.begin(9600);
startCounter = ReadEEPROM(0,5).toInt(); //gespeicherten Wert aus dem Festspeicher auslesen (erste 5 Zeichen)
startCounter++; //Zähler hochsetzen
Serial.print("StartCounter: "); Serial.println(String(startCounter)); //Wert ausgeben
String tmpString = String(startCounter); //Variable als String merken
WriteEEPROM(0,tmpString,5); //String in Festspeicher schreiben
}
void loop() {
// put your main code here, to run repeatedly:
// wird nicht benötigt
}
void WriteEEPROM(int StartPosition, String xString, int reservedLength)
{
EEPROM.begin(); //Initialize EEPROM
for(int i=0;i<reservedLength;i++) //Schleife zum löschen des reservierten Speichers
{
EEPROM.write(0x0F + i + StartPosition, ""); //Write one by one with starting address of 0x0F
}
for(int i=0;i<xString.length();i++)
{
EEPROM.write(0x0F + i + StartPosition, xString[i]); //Write one by one with starting address of 0x0F
}
EEPROM.end();
}
String ReadEEPROM(int StartPosition, int StringLength)
{
EEPROM.begin(); //Initialize EEPROM
String strText;
for(int i=StartPosition;i<StringLength+StartPosition;i++)
{
strText = strText + char(EEPROM.read(0x0F+i)); //Read one by one with starting address of 0x0F
}
return(strText);
}
Die Zeile mit "startCounter++;" macht der anscheinend zwei Mal direkt hintereinander.
Was läuft da falsch?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8248160050
Url: https://administrator.de/contentid/8248160050
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
7 Kommentare
Neuester Kommentar
Die Funktion zum Schreiben und Lesen des EEPROM sind fehlerhaft. Erwartet wird ein byte(0-255), keine Strings. Und die Umwandlung toInt() liefert dadurch dann einen nicht erwarteten Wert.
RTFM.
Gruß Strods
RTFM.
Gruß Strods
Habe den Code angepasst.
Sieht hier nur keiner weil die Funktionen fehlen...