Forum

Einloggen | Registrieren | RSS  

Zahnlos72(R)

15.03.2023,
23:20
(editiert von Zahnlos72
am 15.03.2023 um 23:29)
 

Frage zur String Klasse( C++ auf Arduino ) (Elektronik)

Hallo !

Mein Code ist nun doch schon ziemlich umfangreich und vielleicht auch von mir als Laien auf diesem Gebiet etwas umständlich geschrieben, aber immerhin macht er was er soll...

Es ist eine Laufschrift für eine Matrix mit 32*8 2812B GRB Leds....
Alles ohne Einbindung einer Bibliothek wie Adafruit oder dgl.

Es ist möglich einen individuellen Rahmen zu laden / Hintergrundfarbe für die verschiedenen durchlaufenden Texte ( Sätze ) auszuwählen und die Farbe des Textes selbst zu definieren...natürlich alles mit Helligkeitswerten von 0 - 255

Der Sketch verwendet 26896 Bytes (83%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 1389 Bytes (67%) des dynamischen Speichers, 659 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Habe Strings deren Inhalt mehr oder weniger lange Sätze darstellen....
Wenn ich nun noch mehr Sätze oder mehr Zeichen im String verwenden möchte, gibt es ab einer für mich nicht abzuschätzenden Grenze das Problem dass der Inhalt eines oder mehreren Strings davor dann nicht mehr zurückgegeben wird...

Offensichtlich wird da was gespeichert was nicht gespeichert werden müsste ...oder liege ich da falsch
Könnte man das löschen ????

lG

Gast

16.03.2023,
18:35

@ Zahnlos72

Frage zur String Klasse( C++ auf Arduino )

» Hallo !
»
» Mein Code ist nun doch schon ziemlich umfangreich und vielleicht auch von
» mir als Laien auf diesem Gebiet etwas umständlich geschrieben, aber
» immerhin macht er was er soll...
»
» Es ist eine Laufschrift für eine Matrix mit 32*8 2812B GRB Leds....
» Alles ohne Einbindung einer Bibliothek wie Adafruit oder dgl.
»
» Es ist möglich einen individuellen Rahmen zu laden / Hintergrundfarbe für
» die verschiedenen durchlaufenden Texte ( Sätze ) auszuwählen und die Farbe
» des Textes selbst zu definieren...natürlich alles mit Helligkeitswerten von
» 0 - 255
»
» Der Sketch verwendet 26896 Bytes (83%) des Programmspeicherplatzes. Das
» Maximum sind 32256 Bytes.
» Globale Variablen verwenden 1389 Bytes (67%) des dynamischen Speichers, 659
» Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
»
» Habe Strings deren Inhalt mehr oder weniger lange Sätze darstellen....
» Wenn ich nun noch mehr Sätze oder mehr Zeichen im String verwenden möchte,
» gibt es ab einer für mich nicht abzuschätzenden Grenze das Problem dass der
» Inhalt eines oder mehreren Strings davor dann nicht mehr zurückgegeben
» wird...
»
» Offensichtlich wird da was gespeichert was nicht gespeichert werden müsste
» ...oder liege ich da falsch
» Könnte man das löschen ????
»
» lG

Wenn der Speicherplatz nicht ausreicht, dann geht das nicht.
Speicher deine Strings doch extern, z.B. EEPROM und lade nur den String, der gerade benötigt wird.
Sind die Strings static?

bastelix(R)

16.03.2023,
23:25

@ Gast

Frage zur String Klasse( C++ auf Arduino )

» Wenn der Speicherplatz nicht ausreicht, dann geht das nicht.
» Speicher deine Strings doch extern, z.B. EEPROM und lade nur den String,
» der gerade benötigt wird.
Statt EEPROM würde ich eine SD-Karte nehmen, da gibt es fertige Libs (auch wenn diese der TE eher meidet ;-) ) und man kann die Text-Datei relativ einfach am PC bearbeiten.

Zahnlos72(R)

17.03.2023,
07:46
(editiert von Zahnlos72
am 17.03.2023 um 17:24)


@ Gast

Frage zur String Klasse( C++ auf Arduino )

» Sind die Strings static?

Guten Morgen !

Ja das ist eine gute Frage...ich nehme es an !

String myString1; // Texteingabe 1
String myString2; // Texteingabe 2
String myString3; // Texteingabe 3
String myString4; // Texteingabe 4
String myString5; // Texteingabe 5
String myString6; // Texteingabe 6

String myString; // übergebener Text


So übergebe ich die Texte....

...hab gelesen dass die Strings RAM belegen und man könnte sie aber auch im Programmspeicher speichern...nur dazu habe ich die Befehle nicht gefunden
soll ja ganz einfach sein .... wie immer....


HAB ES SCHON GEFUNDEN ! Es funktioniert jetzt mit vielen langen Sätzen !



lG

Gast

17.03.2023,
18:20

@ Zahnlos72

Frage zur String Klasse( C++ auf Arduino )

» » Sind die Strings static?
»
» Guten Morgen !
»
» Ja das ist eine gute Frage...ich nehme es an !
»
» String myString1; // Texteingabe 1
» String myString2; // Texteingabe 2
» String myString3; // Texteingabe 3
» String myString4; // Texteingabe 4
» String myString5; // Texteingabe 5
» String myString6; // Texteingabe 6
»
» String myString; // übergebener Text
»
»
» So übergebe ich die Texte....
»
» ...hab gelesen dass die Strings RAM belegen und man könnte sie aber auch im
» Programmspeicher speichern...nur dazu habe ich die Befehle nicht gefunden
» soll ja ganz einfach sein .... wie immer....
»
»
» HAB ES SCHON GEFUNDEN ! Es funktioniert jetzt mit vielen langen Sätzen !
»
»
»
» lG

Es gibt das Zauberwort "static".

Zahnlos72(R)

17.03.2023,
21:32

@ Gast

Frage zur String Klasse( C++ auf Arduino )

» Es gibt das Zauberwort "static".

wie schon in meinem Nachtrag erwähnt habe ich es schon hinbekommen ! lieb von Dir dass Du mir das Zauberwort verraten hast..... nur mit diesem allein ist es ja nicht getan !



const char myString1[] PROGMEM = "BLABLABLA1";
const char myString2[] PROGMEM = "BLABLABLA2";
const char myString3[] PROGMEM = "BLABLABLA3";
const char myString4[] PROGMEM = "BLABLABLA4";
const char myString5[] PROGMEM = "BLABLABLA5";
const char myString6[] PROGMEM = "BLABLABLA6";
const char myString7[] PROGMEM = "BLABLABLA7";
const char *const string_table[] PROGMEM = {myString1, myString2, myString3, myString4, myString5, myString6, myString7};
char buffer[300];

String myString; // übergebener Text


lG

bastelix(R)

17.03.2023,
22:21
(editiert von bastelix
am 17.03.2023 um 22:22)


@ Zahnlos72

Frage zur String Klasse( C++ auf Arduino )

Es gibt noch den F-Makro, der das ganze etwas lesbarer hält (sofern man Makros nicht für eine Erfindung dunkler Mächte hält ;-) )
https://techexplorations.com/guides/arduino/programming/f-macro/

Das geht aber nur so lange gut bis dein Flash-Speicher voll ist. Danach heißt es externes Speichermedium nutzen.

Das Zauberwort "static" ist übrigens in allen gängigen Zauberbüchern beschrieben. Teilweise sogar mit ganzen Zauberformeln zum Nachzaubern :-D
https://www.arduino.cc/reference/de/language/variables/variable-scope-qualifiers/static/
https://openbook.rheinwerk-verlag.de/c_von_a_bis_z/009_c_funktionen_008.htm

Edit: Und wenn du immer nur so kurze Code-Schnipsel postest ist es echt schwer nachzuvollziehen was du genau brauchst.

Zahnlos72(R)

17.03.2023,
22:49

@ bastelix

Frage zur String Klasse( C++ auf Arduino )

» Es gibt noch den F-Makro, der das ganze etwas lesbarer hält (sofern man
» Makros nicht für eine Erfindung dunkler Mächte hält ;-) )
» https://techexplorations.com/guides/arduino/programming/f-macro/
»
» Das geht aber nur so lange gut bis dein Flash-Speicher voll ist. Danach
» heißt es externes Speichermedium nutzen.
»
» Das Zauberwort "static" ist übrigens in allen gängigen Zauberbüchern
» beschrieben. Teilweise sogar mit ganzen Zauberformeln zum Nachzaubern :-D
» https://www.arduino.cc/reference/de/language/variables/variable-scope-qualifiers/static/
» https://openbook.rheinwerk-verlag.de/c_von_a_bis_z/009_c_funktionen_008.htm
»
» Edit: Und wenn du immer nur so kurze Code-Schnipsel postest ist es echt
» schwer nachzuvollziehen was du genau brauchst.

Danke für die Infos ! werde mich da mal durchlesen....ist in dem Buch welches ich zur Verfügung hab nicht zu finden, aber das ist auch für Einsteiger wie ich es einer bin !

lG