Commands OLED SPI / I2C 0.96 SSD1306

Gast #3989070
Lesenswert?

Hi

Ich vermisse - oder hab ihn noch nicht gesehen - den Command Instruct 
für eine Zeile zu löschen:

ALso:
Ich schreibe
1
display.setCursor(0,0);
2
println("Hallo Welt!");
3
println("Wie geht es?")
4
display.display();

Ausgabe:
Hallo World!
Wie geht es?


Jetzt will ich die erste Zeile überscchreiben:
1
display.setCursor(0,0);
2
println("Hello  World!");
3
display.display();

der alte Text steht noch da
der neue wird drüber geschrieben, alles "verlaufen"

ich will keinen
1
display.clear();

aufrufen, eher die Zeile clearen.
lauter leerzeichen zuvor zu schreiben bringt nichts
da er nur die pixel für den Platz den das leerzeichen braucht
ausfüllt ( wird dann schwarz ) aber nicht den rest.

Gibt es den Befehl nicht für  das SSD1306 oder hab ich was übersehen.
Die Command constructs oben sind eher pseudo zum bessern erklären.

lg rudi ;-)
#3989409
Lesenswert?

r_u_d_i schrieb:
> ich will keinendisplay.clear();

Okay dann Schreibe Dir eine Funktion im Grafik Mode.
Die Du dann fürs löschen nutzt, nicht schön macht aber das was hier 
gewünscht ist.

8x8 Font z.b. also 8 Linien pro Zeile. Farbe schwarz nicht vergessen.

Zeile neu schreiben, viel Spaß.

Gruß Ronny

Ansonsten suche mal nach u8glib !
Gast #3989847
Lesenswert?

Ok gelöst:
1
display.setCursor(0,0)
2
display.setTextColor(WHITE);
3
display.println("Hello World!");
4
display.display();
5
delay(1000);
6

7
display.setCursor(0,0) // (spalte/zeile)
8
// display.setTextColor(WHITE);
9
display.setTextColor(WHITE,BLACK);// danke stefan! 2te parameter 'schwarz' 
10
display.println("Hallo Welt!");
11
display.display();
12
delay(1000);

danke!

lg rudi ;-)
Gast #3989888
Lesenswert?

JojoS schrieb:
> Dieses Vorgehen kostet aber auch nicht weniger als das clear zu Beginn.

Ne da hast Recht,
aber ich hab nicht alles geschrieben:
wenn ich dann vier Zeilen habe
und möchte nur Werte in der ersten Zeile updaten
dann ist ein clear da ungünstig da ich den ganzen inhalt wieder 
schreiben muss.

> Der Inhalt wird im Buffer aufgebaut und mit dispay() in die Anzeige
> gejagt, dadurch flackert nichts falls das die Bedenken waren.

genau das wars. hier flackert es - es baut sich sichtbar nicht so 
schnell auf sodass das flankern nicht auffallen würde.

> Und wenn löschen dann ist ein schwarzes Rechteck zu zeichnen schneller,
> die Zeichenausgabe ist wesentlich aufwändiger.

mit der Angabe wo der Cursor steht, dachte ich, wäre es leichter, mit 
Text zu arbeiten, ein rechteck müsste ich die koordinaten erst wieder 
errechnen sodass bei gesetzter texthöhe auch alles dahinter 
verschwindet.

aber ich werde das rechteck mal probieren, danke!!

lg rudi
Persönliche Seite #3990055
Lesenswert?

Du könntest die Textausgabefunktion so modifizieren, daß sie Dir die 
Koordinaten des jeweils beschriebenen Rechtecks zurückliefert. Die 
könntest Du für etwaige nachfolgende Löschaktionen aufheben, um dann 
wirklich nur ein Rechteck auszugeben (was schneller sein dürfte als den 
Text nochmal invertiert auszugeben).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren