hi leute,
ich habe eine frage ich bin gerade dabei mit eine kleine wetterstation
mit dem 0.96" 128x32 oled display mit dem sdd1306 controller aufzubauen.
ich sitzte gerade an der aufteilung des display und habe da ne frage ob
es einfacher geht die einzelnen sachen zu positionieren.
@ Peter II (Gast)
>Kannst du nicht jede Zeile in ein String packen und dann auf einmal>ausgeben?
Dazu müsste man die hohe Schule der C-Formatstrings beherrschen. Das
kommt erst ein paar Semester nach Arduino ;-)
Mit Arduino hast du doch C++, oder? Mach dir ne Klasse, die ähnlich wie
ostream funktioniert, aber das Zeugs auf das Display rausschiebt und
spezielle Behandlung für linefeed hat. Die Formatstrings haben den
Nachteil, das sie Speicherverwaltung o.ä. und vor allem viel Platz
brauchen.
@Sven S. (boldie)
>Mit Arduino hast du doch C++, oder?
Ja, aber . . .
>Mach dir ne Klasse, die ähnlich wie>ostream funktioniert, aber das Zeugs auf das Display rausschiebt und
Wieviel Arduino-User haben auch nur ANSATZWEISE Ahnung von C++ und wie
man dort ein Klasse erstellt?
>spezielle Behandlung für linefeed hat. Die Formatstrings haben den>Nachteil, das sie Speicherverwaltung o.ä. und vor allem viel Platz>brauchen.
Ach herje, und was macht alle Welt mit Boards wie Arduino mega mit 256kB
Flash?
Was ist wohl aufwändiger? Ein paar Formatstrings in den Flash packen
oder eine eigene Klasse programmieren?
phil schrieb:> habe eig mehr an sowas gedacht
Jörg hat es dir doch quasi schon vorgebetet:
Jörg W. schrieb:> void display_output(int x, int y, const char *fmt, ...)
Jörg W. schrieb:> display_output(0, 8, "Außen: %d°", a);
Besser:
display_output(0, 8, "Außen: %2d°", a);
Gerade, wenn die Temperatur unter 10° sinkt, wirken zwei Gradzeichen
hässlich ;-)
Frank M. schrieb:> Gerade, wenn die Temperatur unter 10° sinkt, wirken zwei Gradzeichen> hässlich ;-)
Scharf beobachtet! Wie oft bin ich drauf reingefallen .....
Warum du jetzt für grad write verwendest und für i und a printLm, ist
unklar, hat wohl was mit den Datentypen zu tun die du NATÜRLICH nicht
genannt hast. Wenn man grad als Zeichen im Zeichensatz definiert kann
man °C als ein String schreiben, das spart Aufrufe.
Frank M. schrieb:> display_output(0, 8, "Außen: %2d°", a);>> Gerade, wenn die Temperatur unter 10° sinkt, wirken zwei Gradzeichen> hässlich ;-)
Wenn ich es richtig sehe, macht er ja jedes mal display.clearDisplay();
Sollte also keine Zeichen stehen bleiben.
Michael B. schrieb:> void writeAT(char x char y, char*text)> { display.setCursor(x,y); Display.println(text); }Mitlesa schrieb:> Mit dem Arduino-Software-Mist wird es wohl annähernd dabei bleiben.
Michael B. schrieb:> Schreibe dir eine Funktion, die einen String an bestimmter Stelle> ausgibt
Hilft nicht, er hat ja auch numerische Argumente.
> Wenn man grad als Zeichen im Zeichensatz definiert kann man °C als ein> String schreiben, das spart Aufrufe.
Wenn der Host UTF-8 als Zeichensatz benutzt und das Display ISO8859-1,
kann man das eben nicht direkt schreiben.
Ansonsten kann man immer noch strings verketten:
Hallo,
Falk B. schrieb:> @ Peter II (Gast)>>>Kannst du nicht jede Zeile in ein String packen und dann auf einmal>>ausgeben?>> Dazu müsste man die hohe Schule der C-Formatstrings beherrschen. Das> kommt erst ein paar Semester nach Arduino ;-)
naja, der ganze Kram inclusive der Stringklasse usw. ist in den etwas
verstreuten Arduino- und Bibliotheks-Beschreibungen schon problemlos
nachzulesen.
Allerdings sind die nicht im "Fritzing"-Format und auch nicht auf
YouTube zu finden.
Insofern pflichte ich Dir bei.
Gruß aus Berlin
Michael
Falk B. schrieb:> Wieviel Arduino-User haben auch nur ANSATZWEISE Ahnung von C++ und wie> man dort ein Klasse erstellt?
Anwesend!(also mindestens schon mal einer)
Falk B. schrieb:> Dazu müsste man die hohe Schule der C-Formatstrings beherrschen. Das> kommt erst ein paar Semester nach Arduino
Warum war das bei mir anders herum?
Komisch!
Mitlesa schrieb:> Mit dem Arduino-Software-Mist ....
Och....
Ein Hoch auf die (Vor)Urteile...
@ Frank M. (ukw) Benutzerseite
>> Wenn ich es richtig sehe, macht er ja jedes mal display.clearDisplay();>Das Flackern würde mich aber ziemlich stören.
Das wird der OP schon noch lernen, daß man meist nicht das gesamte
Disply löscht sondern nur überschreibt.