Arduino MEGA hängt bei Vergleichsoperation

Hallo,

ich wollte mit dem Arduino MEGA Nummernfolgen einlesen, vergleichen und anschl. einen Text ausgeben.
Leider hängt sich das Board bei der Vergleichsoperation auf. Kann mir jemand einen Tipp geben wo der Fehler liegen könnte?

Hier mal der Auszug aus dem Code:

unsigned int Nummern_Display
int T_Nummern_Array[1][6]

Nummern_Display = (T_Nummern_Array[1][5]+(T_Nummern_Array[1][4]*10)+(T_Nummern_Array[1][3]*100)+(T_Nummern_Array[1][2]*1000)+(T_Nummern_Array[1][1]*10000));

if (Nummern_Display == 32000)  stringNummernFolge = ("Nummernschild Oberfoerster 1");
.
.
.
if (Nummern_Display == 32999)  stringNummernFolge = ("Nummernschild Revierfoerster 999");
else char* stringNummernFolge       = {"unbekannt"};
              
Serial.print (stringNummernFolge);

Danke fürs Anschauen

Snoops

Du überschreibst den Speicher anderer Variablen.

Mit "int T_Nummern_Array[1][6]" definierst Du ein eindimensionales Array von [ 0 ] [ 0 ] bis [ 0 ][ 5 ]

T_Nummern_Array[1][5] ist außerhalb des gültigen Wertebereichs für den Index des Arrays.
Du überschreibst andere Variablen oder Svstemvariablen und darum hängt sich der Arduino auf.

Definiere das Array größer, wie groß weiß ich nicht da Du nicht den ganzen Code eingebunden hast.

Grüße Uwe

Habe nochmal geschaut aber an der Array-Größe liegt es nicht. Kann es sein, dass ich beim Vergleich andere Interrupts, wie das einlesen neuer Nummern sperren muss?
Leider habe ich aber keine Idee wie das geht. Oder gibt es eine andere Möglichkeit solch einen Vergleich schneller durchzuführen?

unsigned int Nummern_Display

int T_Nummern_Array[2][6]

Nummern_Display = (T_Nummern_Array[1][5]+(T_Nummern_Array[1][4]*10)+(T_Nummern_Array[1][3]*100)+(T_Nummern_Array[1][2]*1000)+(T_Nummern_Array[1][1]*10000));

if (Nummern_Display == 32000)  stringNummernFolge = ("Nummernschild Oberfoerster 1");
.
.
.
if (Nummern_Display == 32999)  stringNummernFolge = ("Nummernschild Revierfoerster 999");
else char* stringNummernFolge       = {"unbekannt"};
              
Serial.print (stringNummernFolge);

Bitte schick mir den gesamten Sketch; ich habe keine Lust herumzuraten.
Grüße Uwe

So auf den ersten Blick hast Du ein Speicherproblem weil Du zuviel RAM verwendest.
Hast Du versucht die Strings mit progmem ins Flash zu schreiben?

Grüße Uwe

Hi,

danke für den Tipp, das war das Problem. Habe mal mit der MemoryFree Funktion den freien Platz geprüft, 191 Bytes sind vielleicht etwas wenig :grin:

Mit PROGMEM und dem unteren Beispielcode an den passenden Stellen funktionierts XD

char Test_string 	[] PROGMEM = "Text String Test	";

char buffer[50];
strcpy_P(buffer, (PGM_P)pgm_read_word(&(Test_string)));
Serial.print(buffer);

Danke
Snoops

Bitte
Grüße Uwe