Unerklärbarer Programmfehler

Hier die Funktion welche die Probleme verursacht

void instruction(){
  // Anleitung anzeigen
  // \t...Zeile enrücken
  // \"..."
  // \n...Zeilenumbruch

  Serial.println("Anleitung:");
  Serial.println("\t\"R\"...\tNeustart");
  Serial.println("\t\"P\"...\tPause");
  Serial.println("\t\" \"...\tFortsetzen");
  Serial.println("\t\"?\"...\tRegeln");
  Serial.println("\t\"N\"...\tAutomatischer Neustart wenn sich das Muster nicht mehr bewegt\n\t\toder alle Zellen gestorben sind");
  Serial.println("\t\"M\"...\tAutomatischer Neustart wenn sich das Muster wiederholt,\n\t\taktiviert auch die Neustartfunktion fuer sich nicht bewegende Muster");
  
  //Serial.println("\t\"+\"...\tZeit zwischen Generationen erhoehen");
  //Serial.println("\t\"-\"...\tZeit zwischen Generationen erniedrigen");
  //Serial.println("\t\"T\"...\tZeit zwischen Generationen zuruecksetzen");
  
Serial.println("\n\t\toder eine beliebige andere Taste um diese Anleitung wieder anzuzeigen.\n");
}

So funktioniert das Programm so wie es sollte, aber nur wenn ich die drei Zeilen auskommentiert lasse.
Wenn ich sie nicht auskommentiert lasse, lässt sich der Sketch noch kompilieren und auf meinen Arduino UNO uploaden, aber wenn ich dann irgendetwas über die Serielle Schnittstelle sende, "hängt" das Programm.
Meine Interrupt-Funktion läuft aber noch.

Ich habe keine Ahnung warum dieser Fehler auftritt, bei diesen drei Zeilen handelt es sich ja nur um einfache Befehle.

Habt ihr eine Idee warum das so ist?
falls Ihr den Rest des Code's oder sonst irgendwelche Informationen über mein Projekt braucht, einfach melden

MfG
J3RE

Meine Idee ist es, daß Du zuviel RAM verbrauchst.
lösung isehe: FAQ Neuigkeiten und Probleme ab Arduino IDE 1.0 - #2 by uwefed - Deutsch - Arduino Forum
Grüße Uwe

uwefed:
Meine Idee ist es, daß Du zuviel RAM verbrauchst.
lösung isehe: FAQ Neuigkeiten und Probleme ab Arduino IDE 1.0 - #2 by uwefed - Deutsch - Arduino Forum
Grüße Uwe

Vielen Dank :slight_smile:
Probier ich gleich mal aus.

Sollte ich alle Texte im Flash Memory speichern?
Sind bei meinem Projekt einige Zeilen Text.
Der ganze Sketch hat kompiliert 7.638 Bytes.

Jetzt funktionierts :smiley:

Hab jetzt alle Serial.print-Befehle in der Form geschrieben

Serial.println(F("\"Conway's Game of Life\" von John Horton Conway\n"));

Somit werden die Texte im Flash Memory gespeichert oder!?

Doch woher weiß ich wann der RAM-Speicher voll ist, oder mein Sketch zuviel RAM braucht?

Doch woher weiß ich wann der RAM-Speicher voll ist, oder mein Sketch zuviel RAM braucht?

Gute Frage. RAM wird auch für den Stack gebraucht, d.h für lokale Variable von Funktionen und für deren Rücksprungadresse ( weswegen alles schief läuft, wenn die kaputt ist. )

Such mal im Playground nach freemem und ähnlichem freeRam. Solange du noch genug RAM hast, kannst du dir anzeigen lassen, wieviel Luft ist...

[Edit: Danke J3RE, dein Link (im nächsten Post) ist genau richtig. ich meinte freeRam, nicht freemem, sorry]

michael_x:
Such mal im Playground nach freemem und ähnlichem. Solange du noch genug RAM hast, kannst du dir anzeigen lassen, wieviel Luft ist...

Vielen Dank

hier ist das alles ganz gut erklärt
http://playground.arduino.cc/Code/AvailableMemory