Serielle Schnittstelle Auslesen probleme

Sehe jetzt auf den ersten Blick nicht den Fehler. Das heißt aber nichts. Ging das schon mal?

Pins 0 und 1 hast du glaube ich nicht verwendet. Aber daran hängt die serielle Schnittstelle. Wenn du die auf Output schaltest, geht natürlich nichts mehr.

Du solltest den Taster aber entprellen. Das kann auch erst mal ganz primitiv mit einem delay(30) oder was in der Größenordnung nach dem ersten Einlesen des Zustands machen. Dann geht es erst weiter wenn das Prellen zu Ende ist. Ansonsten kann es sein, dass die while-Schleife nicht korrekt funktioniert.

Es gibt auch noch bessere Optionen:
http://arduino.cc/en/Tutorial/Debounce (per Hand)
GitHub - thomasfredericks/Bounce2: Debouncing library for Arduino and Wiring (mit Lib)

kann ich das auch machen wenn ich eine Variable ausgebe?

Nein. Man kann Strings als PROGMEM deklarieren und dann mit strcpy_P in einen temporären Puffer ins RAM kopieren (und sich auch Makros dafür schreiben). Man könnte auch den seriellen Eingangspuffer global deklarieren und diesen dann auch als Speicher für solche Strings verwenden. Das gibt es einige Möglichkeiten. Man sogar auf den Puffer verzichten und die chars einzeln auslesen.

Aber für nur einen relativ kurzen String ist das vielleicht auch mehr Aufwand als es sich lohnt. Ich habe das nur erwähnt weil du vorhast ein riesiges Array im RAM zu halten. Das sollte man auch bei 8kB nicht so verschwenderisch damit umgehen. Aber muss auch nicht gleich bis aufs allerletzte Byte optimieren.

Die anderen _P Funktionen sind einfach zu handhaben. Aber wenn der String nicht direkt als Parameter in der Funktion steht wird es komplizierter.

Eine andere Optimierungs-Möglichkeit ist der serielle Puffer selbst. Der muss keine 100 Byte haben wenn du nur so relativ kurze Strings einliest. Du brauchst nur mindestens maximale Stringlänge + 1. Die Hälfte reicht da wahrscheinlich.