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
  Bedingung wird nicht wiederholt ausgeführt Lite 16 670 29.03.2019 05:11
Letzter Beitrag: Lite
  Oled 0.91 wechselnde Anzeige . Benötige hilfe MotD 6 417 24.03.2019 22:48
Letzter Beitrag: Bitklopfer
Tongue GSM Modul - Nur erste SMS geht raus Haukini 3 311 24.03.2019 14:04
Letzter Beitrag: hotsystems
  Gelöst ==> Arduino Nano, Kommunikation mit PC bringt nicht korrekten ASCII moehrle 4 317 02.03.2019 22:04
Letzter Beitrag: hotsystems
  Nichts geht mehr... AnFi 4 316 25.02.2019 14:23
Letzter Beitrag: Tommy56
  Typecasting oder nicht? Batucada 1 261 19.02.2019 18:51
Letzter Beitrag: Tommy56
  Timer Sketch für OLED SSD1331 Talon 20 790 17.02.2019 10:48
Letzter Beitrag: Tommy56
  Switch erkennt eine Phase nicht DonSonora 27 1.432 30.01.2019 22:24
Letzter Beitrag: MicroBahner
  RTC MCP 7940 geht nach grobby 15 826 13.01.2019 15:01
Letzter Beitrag: grobby
  Problem mit Displayanzeige LCD2004 bzw. nicht Richtig magnum1795 39 2.101 18.12.2018 08:15
Letzter Beitrag: magnum1795

Gehe zu:


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