Alle Werte in ein Array unterbringen oder doch lieber mehrere Arrays?

Guten Morgen zusammen,

vorweg muss ich sagen, dass ich ziemlich neu im Gebiet des Programmierens bin also entschuldige ich mich im Voraus für vermeintlich unnötige Fragen.

Für eine Härteprüfmaschine soll die Berechnung der Härte über einen Arduino erfolgen. Die entsprechenden Parameter dafür können am Arduino eingestellt werden. Hierzu zählen unter anderem der Zoom, der Belastungsgrad usw. Diese Werte würde ich gerne über ein Array auslesen. Hat die Anzahl der Werte im Array eine bestimmte Anzahl überschritten (siehe Bild, hier ist meistens Schluss), wird jedoch nach der Übertragung des Programms auf dem Display praktisch nichts mehr angezeigt. Der dynamische Speicher des Arduino Nano ist jedoch nur zu 72% ausgelastet.

Muss ich mehrere Arrays anlegen oder hat jemand eine Idee, woran dieses Problem liegen könnte? Außerdem würde ich gerne Kommazahlen mit einbeziehen, jedoch scheint es über Float nicht zu funktionieren.

Vielen Dank und Grüße,
Bratapfel

Main__Programm.ino (14.1 KB)

String options[] =

Nicht dein Ernst? Oder doch ....

Mein Tipp: Verabschiede dich von der String Klasse.

Vermutlich das bessere Verfahren: https://www.arduino.cc/reference/en/language/variables/utilities/progmem/

ohne Gewähr, dass es daran liegt


Außerdem würde ich gerne Kommazahlen mit einbeziehen, jedoch scheint es über Float nicht zu funktionieren.

Den Satz verstehe ich überhaupt nicht.


int valueLength = 0;

Global definiert, obwohl eine lokale Definition ausreichen würde. (wenn ich nicht irgendwas wichtiges übersehen habe)

Wann immer möglich bitte lokale Variablen bevorzugen. Globale Variablen sind manchmal unvermeidbar, aber stets zu vermeiden, wenn möglich.

Ein Handvoll Gründe, es dafür gibt.

Über das int Array solltest du nochmal nachdenken. Es gibt auch noch andere Datenstrukturen!

Falsch:

Serial.println("Currentvalue: " + String(value));

Korrekt:

Serial.print(F("Currentvalue: "));  Serial.println(value);

Durch das F() Makro belegt das kein RAM. Und man spart sich das völlig unsinnige temporäre String Objekt

Die Streaming Klasse ist dafür auch sehr schön: http://arduiniana.org/libraries/streaming/