INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
09.09.2018, 13:31
Beitrag #1
Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
Hallo zusammen,

zum Basteln hab ich mir ein OLED-Display 0,96" mit SSD1306 gekauft.
Das Ding soll für eine Kühlschranküberwachung verwendet werden.
Als Library sind die beiden Files von Adafruit installiert, alles läuft soweit gut
Im Detail habe ich ein paar Fragen:

- kann man das Display mit einem Befehl dunkelsteuern, so dass ich auf Tastendruck die Anzeige hell schalte und dann automatisch über eine Timerfunktion wieder dunkel steuert, damit ich die Batterie schone?

- der Temperaturwert wird schon auf das Display geschrieben, nur schreibt es momentan über alle Werte drüber, d.h. der Messwert wird zwar aktualisiert, aber auf dem Display bleibt alles stehen, was schon mal zur Anzeige kam. Gibt's hierzu einen Trick, um die Anzeige zu 'refreshen'?


Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.09.2018, 15:11 (Dieser Beitrag wurde zuletzt bearbeitet: 09.09.2018 15:14 von Tommy56.)
Beitrag #2
RE: Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
Für Grafikdisplays bietet sich an, ein Rechteck der zu erwarteten Ausgabefläche mit der Hintergrundfarbe zu beschreiben oder noch besser sich die alte Ausgabe merken und diese mit gesetzter Hintergrundfarbe zu überschreiben und dann die Zeichen auszugeben .

Für die Beleuchtung musst Du ins Datenblatt Deines Displays oder in die Lib schauen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.09.2018, 15:33
Beitrag #3
RE: Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
Mit dem "Dunkelsteuern" geht wie mit dem "Überschreiben", einfach alles mit schwarz überschreiben.
Ein einfaches abschalten geht meist nicht.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.09.2018, 18:04
Beitrag #4
RE: Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
Hallo,

vielen Dank für die Tipps, ich dachte mir schon sowas.
Die Frage stellt sich nur, da es im WWW ein Beispiel mit dem Display gibt, in dem eine große Zeitanzeige zu sehen ist.
Ich kann mir nun nicht vorstellen, dass der Programmierer hier ebenfalls im Hintergrund mit Dunkelflächen arbeitet. Im seinem Code ist es sehr einfach gehalten, egal.
Mein Miniprojekt soll nur funktionieren....und das tut es.
Wie schon befürchtet und wie ihr mir schon geraten hattet, arbeite ich nun mit einem 'vollen Rechteck' in Schwarz und dann eben die Umschaltung.

Vielen Dank nochmals

Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.09.2018, 18:26
Beitrag #5
RE: Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
(10.09.2018 18:04)alpenpower schrieb:  Die Frage stellt sich nur, da es im WWW ein Beispiel mit dem Display gibt, in dem eine große Zeitanzeige zu sehen ist.
Ich kann mir nun nicht vorstellen, dass der Programmierer hier ebenfalls im Hintergrund mit Dunkelflächen arbeitet. Im seinem Code ist es sehr einfach gehalten, egal.
.....
Du kannst auch die aktuellen Zeichen mit der Hintergrundfarbe überschreiben, macht es aber nicht einfacher. Einfach mal testen und dann entscheiden.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.09.2018, 18:30
Beitrag #6
RE: Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
Ich bin gerade durch Zufall darüber gestolpert. Da ich nicht weiß, welche Lib Du benutzt, musst Du da in der ???.h mal schauen.
Ein- und Ausschalten:
Beitrag
Lib

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.09.2018, 06:04
Beitrag #7
RE: Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
Hallo,

vielen Dank nochmals, das hört sich gut an, werde ich noch austesten.
Ich verwende die Standard-Libs von Adafruit...._SSD1306 und ..._GMX.

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.09.2018, 10:19 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2018 10:21 von avoid.)
Beitrag #8
RE: Messwert auf OLED 0,96" SSD1306 darstellen geht nicht
Die OLED Displays mit SSD13xx Treiber haben alle einen Befehl zum Display an und aus schalten.
Code:
void sleepDisplay(Adafruit_SSD1306* display) {
  display->ssd1306_command(SSD1306_DISPLAYOFF);
}
void wakeDisplay(Adafruit_SSD1306* display) {
  display->ssd1306_command(SSD1306_DISPLAYON);
}
Leider muss man dabei beachten das einige Displays (je nach Hersteller) einen zusätzlichen Reset am RES-Pin benötigen wenn man sie wieder an schaltet.
Code:
void wakeDisplay(Adafruit_SSD1306* display) {
  display->ssd1306_command(SSD1306_DISPLAYON);
  digitalWrite(RES-Pin, LOW)
  digitalWrite(RES-Pin, HIGH)
}
Die Frage hierzu ist, hat dein Display i2c mit 4 Pins oder SPI mit mehr als vier Pins?
Die 4 Pin Displays haben keinen RES-Pin und darum geht das so auch nicht damit, sollten sie den Einschaltbefehl nicht fressen. Dann hilft nur die Spannung über einen Transistor aus und an zu schalten und das Display neu zu initialisieren wenn es wieder was anzeigen soll. Quasi Old School.

Ich lasse im Code nur einen Timer ablaufen und dann das Display löschen.
So wie es schon meine Vorredner gesagt hatten.
Ich bin mir nicht sicher ob das die Lebensdauer der Pixel verlängert aber immerhin verbrauchen so die Schwarzen Pixel keinen Strom, sondern nur die Logik dahinter.
Hier hab ich das auch so verwendet https://www.youtube.com/watch?v=QXJ2fq0aXgA
Code:
if (gui_standbycounter <= 0) {
     display.clearDisplay(); // überschreibt alle Pixel mit schwarz.
     display.display();
   }

Kannst es ja mal mit sleep und wake versuchen und eine Rücksendung geben.

Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  OLED Rausscrollen dahans 10 288 12.09.2018 14:54
Letzter Beitrag: dahans
  Das geht mir auf den Zeiger Sasch600xt 44 1.466 06.09.2018 15:33
Letzter Beitrag: Sasch600xt
  [gelöst]String, char .... ich begreife es einfach nicht - char Array <> mit SDexist christian@schiltkamp.info 10 443 31.08.2018 23:05
Letzter Beitrag: Tommy56
  LED an Pin13 geht nicht aus. uweq 7 415 24.08.2018 12:31
Letzter Beitrag: uweq
  [selbst gelöst] Register von Inline-Assembler-Anweisung vorher nicht gesetzt => Bug? Addi 2 230 24.08.2018 08:11
Letzter Beitrag: Addi
  Motor läuft nicht. Uwe1475 8 569 19.08.2018 14:43
Letzter Beitrag: Uwe1475
  include *.txt-File ? -- geht nicht :-( uweq 27 1.873 10.08.2018 20:33
Letzter Beitrag: uweq
  OneButton geht im loop() nicht uweq 4 497 09.08.2018 21:29
Letzter Beitrag: uweq
  Arduino Nano und 1,3 Zoll IC2 OLED Display ParadoxDev 3 347 27.07.2018 09:57
Letzter Beitrag: hotsystems
  TFT Display will nicht so wie ich Franzel007 10 1.142 12.05.2018 09:28
Letzter Beitrag: amithlon

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste