-
Attiny 85 String Error
Hey,
ich kann die class String nicht im Attiny Sketch benutzen.
Wie kann ich den gezeigten Code ohne String am Besten umsetzen?
Code:
int counter= 33;
String messageCount1 = "Anzahl:";
String messageCount2= "Einheiten";
String message1 = messageCount1 + counter+ messageCount2;
lcd.setCursor ( 0, 2 );
lcd.print(message1);
float value = 25.48;
String messageValue1 = "Temperatur:";
String messageValue2 = "°C";
String message2 = messageValue1 + value+ messageValue2;
lcd.setCursor ( 0, 3 );
lcd.print(message2);
-
hallo,
du "addierst" z.B. Integer-Werte an Strings, das wird nicht gehen. Wandle mal die Zahlen in Strings um und guck was passiert:
z.B.
nicht
String message1 = messageCount1 + counter+ messageCount2;
sondern
String message1 = messageCount1 + (String)counter+ messageCount2;
kann sein, dass noch andere Bugs drin sind (die ich jetzt spontan nicht sehe), aber das wäre mal der 1. Schritt.
Falls es dann immer noch nicht geht:
poste bitte einen MINIMALEN, aber KOMPLETTEN Code samt aller Fehlermeldungen der IDE.
-
Danke für den Tipp mit dem Casting.
Das klappt aber nur bei int.
Mit float komme ich leider nicht weiter.
Habe schon viele ausprobiert.
Immer kommt der Fehler
Code:
conversion from 'float' to 'const String' is ambiguous
Folgende Zeilen haben den Erfolg gebracht.
Code:
String messageValue1 = "Temperatur:";
String messageValue2 = "°C";
char charBuf[10];
dtostrf(value,7, 2, charBuf);
String message2 = messageValue1 + charBuf + messageValue2;
lcd.setCursor ( 0, 3 );
lcd.print(message2);
Nur ist aber der Programmspeicherplatz von 6012 Bytes überschritten.
Ich habe gelesen , dass String viel Speicher frisst und man char nehmen soll.
Jedoch weiss ich nicht genau wie ich das umsetzen soll.
Gruß
-
cstrings (char* oder char[ ] ) lassen sich mit strcat() aneinanderhängen, ist aber schon ein wenig komplizierter.
http://www.cplusplus.com/reference/cstring/strcat/
da musst du jetzt durch - entweder ANSI C lernen oder einen größeren Prozessor kaufen und dabei String benutzen.
(Ich selber würde mit den mickrigen AVRs ja gar nicht erst anfangen, wozu gibt es M0/Zero, M4 oder ESPs...)
Eine Option fällt mir noch ein:
einfach alle char* Teilstrings nacheinander einzeln mit lcd.print() ausgeben
-
Am einfachsten so:
Code:
int counter= 33;
lcd.setCursor ( 0, 2 );
lcd.print("Anzahl: ");
lcd.print(counter);
lcd.print(" Einheiten");
float value = 25.48;
lcd.setCursor ( 0, 3 );
lcd.print("Temperatur: ");
lcd.print(value);
lcd.print("°C");