I2C Display-Weis-I2C-SDD1306-128x64-Modul

OP #5550848
Lesenswert?

https://www.ebay.de/itm/0-96-OLED-Display-Weis-I2C-SDD1306-128x64-Modul-Arduino-Raspberry-Pi/162465864403?hash=item25d3b85ad3:g:6ucAAOSwOhFbQy2z

Hallo,
zeigt das genannte Display Leuchtreaktionen wenn Spannung (GND/VCC) 
angelegt wird?

.. oder erst nach der korrekten Initialisierung?

Ja/nein
OP #5552075
Lesenswert?

Stefanus F. schrieb:
> Diese Zeile ist in der Tat die wichtigste. Sie legt fest, an welche
> Arduino Pins das Display angeschlossen ist. Da gibt es noch mehr
> optionale Parameter, sind alle in der oled.h dokumentiert.

Die 16 scheint Reset zu sein, bei mir nicht!
Habe die Adresseinstellung noch nicht gefunden.
Kann aber erst heute Abend weitermachen.
Das Prog ist zwar nicht ganz das richtige.
Ich wollte ohne zu frickeln das Teil testen, defekt oder nicht.

Wenn es klappt gibt es ja noch viele andere Funktionsparameter.
MfG
Gast #5552109
Lesenswert?

Al. K. schrieb:
> Die 16 scheint Reset zu sein, bei mir nicht!

Du musst die Pins so einstellen, wie du sie verkabelt hast. Wenn die 
Reset Leitung gar nicht verbunden ist, schreibst du ersatzweise 
NO_RESET_PIN hin. Das steht in der Doku in der oled.h .

> Habe die Adresseinstellung noch nicht gefunden.

In der oled.h steht drin, welche Adressen die üblichen sind.

> Ich wollte ohne zu frickeln das Teil testen, defekt oder nicht.

Was soll dass denn bedeuten? Suchst du ein Testprogramm, dass deine 
Pin-Zuordnung und die Adresse automatisch heraus findet? Da kannst du 
lange suchen.

Wer zu faul für Elektronik ist, sollte vielleicht was anderes machen.
#5552113
Lesenswert?

Stefanus F. schrieb:
> Du Dir hier raus kopieren:
> http://stefanfrings.de/esp8266/WIFI-Kit-8-Test2.zip

und was hilft das dem TO?

ich will dir wirklich nichts Böses, frage mich aber warum du immer 
solche Tipps geben musst, der TO hat ein reines I2C Display verlinkt, 
mit 4 Pins, VCC, GND, SDA und SCL

Al. K. schrieb:
> 
https://www.ebay.de/itm/0-96-OLED-Display-Weis-I2C-SDD1306-128x64-Modul-Arduino-Raspberry-Pi/162465864403?hash=item25d3b85ad3:g:6ucAAOSwOhFbQy2z

nachdem man dein ZIP runtergeladen und geöffnet hat findet man zur Init

// OLED display=OLED(2,14,4);
OLED display=OLED(4,5,16);

3 Pins MIT Reset vermute ich (gilt für andere Displays), das gibt das 
Display vom TO aber nicht her!

ausserdem gibt es diese Displays mit SSD1306 und SH1106 Chip, beide 
differieren etwas in der Ansteuerung.

Dein 3-Zeiler Beitrag hilft also dem TO in keinster Weise
Gast #5552116
Lesenswert?

Joachim B. schrieb:
> 3 Pins MIT Reset vermute ich (gilt für andere Displays), das gibt das
> Display vom TO aber nicht her!

Noch einer der die Doku nicht liest, bevor er plappert. Und auch nicht 
die Erklärungen, die direkt im Beitrag vor dem Geplappere stehe.

> ausserdem gibt es diese Displays mit SSD1306 und SH1106 Chip, beide
> differieren etwas in der Ansteuerung.

Ach was, wirklich?
Wofür ist wohl der letzte optionale Parameter des Konstruktors?

Joachim: Wenn man keine Ahnung hat, dann sollte man einfach mal die 
Klappe halten.
Gast #5552128
Lesenswert?

Joachim B. schrieb:
> Kupferleitwert!

Ja toll, der Bart ist schon ziemlich lang. Da schreibt man vor >5 Jahren 
einmal falsche Zahlen von Wikipedia ab, und der Joachim reibt sich vor 
Freude einen über diese Entdeckung.

Weißt du was, für deinen Hinweis zu dem Fehler bin ich inzwischen nicht 
mehr dankbar.
#5552138
Lesenswert?

Stefanus F. schrieb:

> Ja toll, der Bart ist schon ziemlich lang. Da schreibt man vor >5 Jahren
> einmal falsche Zahlen von Wikipedia ab

dann p*sse mich doch nicht an:

Stefanus F. schrieb:
> Joachim: Wenn man keine Ahnung hat, dann sollte man einfach mal die
> Klappe halten.

das kann ich voll zurückgeben, deine 3-Zeilerantwort an den TO war ohne 
weitere Erklärungen eben nicht hilfreich für jemand der noch nie mit 
diesen I2C Displays zu tun hatte, gut gemeint ist selten gut gemacht.
Gast #5552155
Lesenswert?

Joachim B. schrieb:
> das kann ich voll zurückgeben, deine 3-Zeilerantwort an den TO war ohne
> weitere Erklärungen eben nicht hilfreich für jemand der noch nie mit
> diesen I2C Displays zu tun hatte, gut gemeint ist selten gut gemacht.

Dann nimm ihm doch Du die Windeln ab und setz' ihn auf's Töpfchen.

Wenn der TE den Begleittext nicht lesen mag, nicht programmieren mag, 
keine includes mag, ja dann wird's für ihn Zeit Gartenzwerge zu bemalen. 
Das ist ein Diskussionsforum, wenn der TE nicht auf dem Level der 
Diskussion ist, dann macht der was falsch und nicht die anderen 
Diskutanten.

Der einzige Zweck Deines Posts war im Übrigen Stefan anzumachen.
Wenn Du den Sinn des Forums oder des einzelnen Posts schon darin siehst 
unbedingt hilfreich zu sein: da kam aber so was von gar nix von Dir.
OP #5552216
Lesenswert?

Habe die angegebenen Pins 4/5 zum Test genommen.
Das Demoprogramm läuft und ist rech ausführlich.

OLED(uint8_t sda_pin, uint8_t scl_pin, uint8_t reset_pin=NO_RESET_PIN, 
uint8_t i2c_address=0x3C,
uint_fast8_t width=128, uint_fast8_t height=32, bool isSH1106=false);


Mich wundert es nur das hier die I2C Adresse 0x3C ist.
Auf dem Display aber 0x78.

Auch sollte mein Display 128*64 sein hier sind aber 128*32 eingetragen.

Das Display wird aber richtig angesteuert(Maxi Breite/Maxi Höhe)



MWS schrieb:
> Wenn der TE den Begleittext nicht lesen mag, nicht programmieren mag,
> keine includes mag, ja dann wird's für ihn Zeit Gartenzwerge zu bemalen.

Man darf doch mal fragen ob es ein einfaches Testprogramm ohne Include 
Dateien gibt.
Warum ist doch hier nicht relevant!

Es geht um Lösungen, nicht warum es dieser Lösung bedarf!
Gast #5552223
Lesenswert?

> Mich wundert es nur das hier die I2C Adresse 0x3C ist.
> Auf dem Display aber 0x78.

I²C Device Adressen haben 7 Bit. Der Wert 0x78 kann daher nicht richtig 
sein. Er kommt vermutlich so zustande:

Das erste Byte jeder Transaktion enthält diese 7bit Adresse plus ein Bit 
zur Angabe, ob man schreiben oder lesen will.
1
Bit:  7 6 5 4 3 2 1 0
2
      a a a a a a a rw
3

4
 a= Adresse
5
rw= Low=read, High=Write

Wenn du nun die 7 Bit Adresse um das rw Bit erweiterst und als 8 Bit 
Zahl betrachtest, dann hat diese bei Lese-Zugriffen den Wert 0x78.
1
OLED(uint8_t sda_pin, uint8_t scl_pin, uint8_t reset_pin=NO_RESET_PIN, 
2
uint8_t i2c_address=0x3C, uint_fast8_t width=128, uint_fast8_t height=32, bool isSH1106=false);

> Auch sollte mein Display 128*64 sein hier sind aber 128*32 eingetragen.

Das sind nur die default Werte für optionale Parameter. Du kannst ja die 
richtigen Werte beim Konstruieren angeben:
1
OLED display=OLED(4,5,NO_RESET_PIN,0x3C,128,64,false);
Gast #5552237
Lesenswert?

Al. K. schrieb:
> Man darf doch mal fragen ob es ein einfaches Testprogramm ohne Include
> Dateien gibt.
> Warum ist doch hier nicht relevant!

Kommt darauf an...
Nachdem es zweckmäßig ist, Displaytreiber mit ein wenig Komplexität als 
Lib auszuführen, so ist das Einbinden per include der Standard.
Wenn Du sinnlos und ohne erkennbaren Grund etwas anderes willst, dann 
ist das relevant.
Gast #5552265
Lesenswert?

Al. K. schrieb:
> Es geht um Lösungen, nicht warum es dieser Lösung bedarf!

Um die Lösung als Selbstzweck geht es allein für Dich.

Nachdem Du es aber nicht selbst erledigt bekamst, hast Du hier die 
Helferin bemüht und die interessiert eben auch noch mehr.

Das ist doch kein Supportforum hier, in dem es eine Verpflichtung 
anderer Teilnehmer gibt, dem Beschwerde- oder Fragesteller möglichst zu 
dessen Konditionen behilflich zu sein.
OP #5552308
Lesenswert?

MWS schrieb:
> Das ist doch kein Supportforum hier, in dem es eine Verpflichtung
> anderer Teilnehmer gibt, dem Beschwerde- oder Fragesteller möglichst zu
> dessen Konditionen behilflich zu sein.

Du hast die Verpflichtung erfüllt!
Du hast nicht geholfen und nur dazwischen geredet!



Stefanus F. schrieb:
>> Auch sollte mein Display 128*64 sein hier sind aber 128*32 eingetragen.
>
> Das sind nur die default Werte für optionale Parameter. Du kannst ja die
> richtigen Werte beim Konstruieren angeben:
> OLED display=OLED(4,5,NO_RESET_PIN,0x3C,128,64,false);


Werde ich Testen , aber vielleicht ist es wirklich nur ein 128*32 
Display, da
das Display Maximal genutzt wird.

Das mit der Adressbildung war mir wieder mal entfallen.
OP #5552685
Lesenswert?

Zitat:
------------------------------------------------------------------------ 
---
Nur so am Rande: Es gibt SSD1306 OLEDs die sich nicht mit einem I2C 
Scanner finden lassen, weil sie kein ACK senden. Natürlich ist das dann 
auch kein richtiges I2C...

Hast du denn mal versucht das display anszusprechen? Beispielsweise mit 
u8g2 software emulated I2C (welches das ACK nicht auswertet)?
------------------------------------------------------------------------ 
----
Was hat dies für Auswirkungen auf verschiedene Arduino Programme?
Wenn das ACK nicht gesendet wird , aber es im Arduino Prog ausgewertet 
wird,
was ist dann?


Wie gehe ich am besten/einfachsten vor um eine Textzeile zu invertieren?
Prinzip den entsprechenden Grafikbereich der Zeile Invertieren.
Gast #5552713
Lesenswert?

Al. K. schrieb:
> Wie gehe ich am besten/einfachsten vor um eine Textzeile zu invertieren?
> Prinzip den entsprechenden Grafikbereich der Zeile Invertieren.

Mit meiner OLED Library kannst du einen weißen Kasten zeichnen und 
danach Text in schwarz darüber schreiben.

Ich würde das aber vermeiden, denn je länger und heller die Pixel 
leuchten, umso schneller verschleißen sie.
Gast #5552736
Lesenswert?

Al. K. schrieb:
> Wie gehe ich am besten/einfachsten vor...

Ach Leute,
nachdem auch dieser Thread mal wieder fast entgleist ist (ohne daß ICH 
involviert gewesen wäre), sag ich erstmal nur: Ohne Fleiß kein Preis. 
Das kannten schon unsere Vorfahren.

Das Allererste, was man beim Kauf eines Displays tun sollte ist, die 
Dokumentation zu diesem Display zu suchen, zu finden und zu LESEN. Gilt 
für das Display als solches als auch für den verwendeten Grafikchip.

Wenn so ein Display kein ACK sendet, dann ist das seltsm und nicht 
konform zu den Regeln. Ich zweifle da zunächst dran, allerdings habe ich 
mit chinesischen 3D-Magnet-Sensor-Moduln (für 'ARDUINOOOHH') eine 
ähnliche Erfahrung machen müssen.

In solchen Fällen ist grundsätzlich ein spezieller, auf genau dieses 
Teil zugeschnittener Lowlevel-Handler nötig - und den muß man sich 
vermutlich selber schreiben.

Grundsätzlich sollte man aber Lowlevel-Dinge strikt von Hilevel-Dingen 
trennen. Deswegen ist die Frage "Wie gehe ich am besten/einfachsten vor 
um eine Textzeile zu invertieren?" komplett falsch. Wirklich KOMPLETT 
falsch. Ich formuliere das mal ganz anders:
1. Man habe einen Bild-Speicher im RAM, wo man das Bild mit diversen 
Hilevel-Funktionen aufbaut.
Also mit sowas:
- Füllen eines Rechtecks mit einer Farbe
- Schreiben von Textzeichen in einer anderen Farbe und in einem 
bestimmten Font
- Zeichnen von Linien und anderen Kringeln

Bei monochromen Displays hat man als Farbauswahl da nur hell, dunkel, 
invertiert. Aber das ist ja nur eine Art Untermenge von Farbe1 bis 
FarbeXXX.
2. Man habe einen Lowlevel-Treiber, der nach Fertigstellung der 
Zeichenarbeiten den Inhalt des Bild-Speichers en bloc in das Display 
befördert.

So herum geht es, "die Textzeile zu invertieren".

W.S.
#5552801
Lesenswert?

Stefanus F. schrieb:
> Joachim B, wann kommt denn dein hilfreicher Beitrag zum Thema.
> Versuche es doch bitte wenigstens.

gerne

Joachim B. schrieb:
> ausserdem gibt es diese Displays mit SSD1306 und SH1106 Chip, beide
> differieren etwas in der Ansteuerung.

ich habe über ein halbes Dutzend dieser OLED Displays bestellt, von 
verschiedenen Quellen man sieht aber leider nicht immer welcher Chip 
verbaut ist und manche haben echte Probleme und benötigen den reset.

Ich habe mich mit der UG8 LIB rangetastet.

Wenns beim TO nun läuft ist ja alles gut zumal er den Reset Pin ja nicht 
erreichbar hat.

Für andere bei denen es klemmt empfehle ich die UG8 zu probieren wie ich 
es tat und alle Optionen zu probieren
https://github.com/olikraus/u8glib

Die OLED Lib am ESP mit OLED ist auch etwas zickig, nerven tut dabei das 
es fast unzählige LIBs gibt die man alle probieren muss bis es klappt.
OP #5553048
Lesenswert?

Joachim B. schrieb:
> nerven tut dabei das
> es fast unzählige LIBs gibt die man alle probieren muss bis es klappt.

Das nervt wirklich, noch dazu wenn alle halbe Jahre mal ein Projekt für 
den Club ansteht.

Stefanus F. schrieb:
> Mit meiner OLED Library kannst du einen weißen Kasten zeichnen und
> danach Text in schwarz darüber schreiben.
>
> Ich würde das aber vermeiden, denn je länger und heller die Pixel
> leuchten, umso schneller verschleißen sie.

..werde ich mal testen!

Ich möchte ja nicht das gesamte Innenleben studieren nur um eine 
Anzeigetafel der 70/80 Jahre für den Club zu konzipieren wie W.S. 
andeutet.
Es war nur eine Festschriftanzeige wo der Aktuelle Stand  beleuchtet 
wurde.
Gast #5553230
Lesenswert?

Joachim B. schrieb:
> nerven tut dabei das es fast unzählige LIBs gibt die man
> alle probieren muss bis es klappt.

Sicher nervt das. Andererseits sollte man bedenken, das Konkurrenz das 
Geschäft belebt.

Wenn man für alles nur eine Wahlmöglichkeit hat, muss diese eine Lösung 
sehr hohe Qualität haben. Die erreicht man wohl nur im Laufe vieler 
Jahre oder beschleunigt wenn kommerzielle Interessen dahinter stecken.

Aber selbst das ist kein Garant, wie man bei den Libraries von Adafruit 
gut sehen kann.

Natürlich gibt es aufeinander abgestimmte Produkte mit der dazugehörigen 
Software. Nur kosten die "etwas" mehr, als 5 Euro. Im Industriebereich 
sind sie dennoch Standard.
OP #5553264
Lesenswert?

Hallo Stefanus,
habe jetzt getestet,inverser Anzeigetext funktioniert.

Habe aber eine Frage zum Aufruf.
       display.draw_string(4,52,"Erfurt  20:34",0,0);
hiermit Funktionierte es, Schwarze Schrift ins weise Feld.

 //      display.draw_string(4,52,"Erfurt  20:34",0,BLACK);
Dieser Aufruf z.B. erzeugt Compiler Fehler.

Wie sieht ein Ordnungsgemäßer Aufruf aus?

Stefanus F. schrieb:
> Natürlich gibt es aufeinander abgestimmte Produkte mit der dazugehörigen
> Software. Nur kosten die "etwas" mehr, als 5 Euro. Im Industriebereich
> sind sie dennoch Standard.

Deshalb habe ich bis jetzt immer Intelligente Displays genommen.
Mit Tx/Rx Ansteuerung war das immer recht einfach.

https://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=nixtion+Display
So ein Teil will ich demnächst Nutzen.
Gast #5553307
Lesenswert?

Guck von meinem Beispielprogramm ab. Du musst "OLED::BLACK" schreiben.

Eine Konstante, die einfach nur BLACK heißt wäre mir zu heiß gegeben. 
Das gäbe sicher schnell einen Konflikt mit anderen Libraries.

> So ein (Nextion Display) Teil will ich demnächst Nutzen.

Die haben auch einen guten Ruf. Werden hier immer wieder empfohlen.
OP #5553456
Lesenswert?

Stefanus F. schrieb:
> Guck von meinem Beispielprogramm ab. Du musst "OLED::BLACK" schreiben.

Hatte ich auch getestet, na ja werde ich nochmals machen.
Was ist mit dem Textparameter.
0 und 1 habe ich getestet, aber was muss ich richtig schreiben?

Edit
     display.draw_string(4,52,"Erfurt  20:34",0,OLED::BLACK);
getestet und o.k.
Edit:
display.draw_string(4,52,"Erfurt 20:34",OLED::NORMAL_SIZE,OLED::BLACK);
getestet und o.k.

Hatte ich aber schon mal versucht!
#5554780
Lesenswert?

Mit den SPI-OLEDS sind auf jeden Fall mehrere Displays möglich, weil du 
hier über die CS Leitung des Displays bestimmen kannst, für wen der 
Datenstrom ist.

Bei den I2C Displays mußt du sehen, ob du auf der Platine die I2C 
Adresse von 0x78 auf eine andere Adresse legen kannst (ich glaube aber 
eher nicht).
Beitrag #5554844 wurde von einem Moderator gelöscht.
#5554869
Lesenswert?

Ralph S. schrieb:
> Bei den I2C Displays mußt du sehen, ob du auf der Platine die I2C
> Adresse von 0x78 auf eine andere Adresse legen kannst (ich glaube aber
> eher nicht).

Ich hab hier einige Displays mit SSD1306-Controller, da ist ein Jumper 
drauf mit dem ich zwischen 0x78 (0x3C) und 0x7A (0x3D) wählen kann. Zwei 
Displays sollten damit also gehen. Würde aber bei so einem Fall auch 
eher nach SPI-Displays schaun.
OP #5555342
Lesenswert?

Es geht hier um das Arduinoprogramm, ob mit wenig Anpassung 
mehreremeiner I2C Displays angesteuert werden können.
Das  ist zu meinen Verständnis nur möglich wenn ich die Pins und/oder 
Adresse zur Laufzeit ändern kann.
Es ist ja ein Soft I2C!

Man könnte auch einen I2C Multiplexer extern nutzen, das ist aber 
zusätzliche externe Hardware.
Gast #5555347
Lesenswert?

Al. K. schrieb:
> Es geht hier um das Arduinoprogramm, ob mit wenig Anpassung
> mehreremeiner I2C Displays angesteuert werden können.
> Das  ist zu meinen Verständnis nur möglich wenn ich die Pins und/oder
> Adresse zur Laufzeit ändern kann.

Bei meiner oled.h Library (in 
http://stefanfrings.de/esp8266/WIFI-Kit-8-Test2.zip) kann man beliebige 
I/O Pins und beliebige Slave-Adressen als Konstruktor-Argument angeben.

> Es ist ja ein Soft I2C!

Eben deswegen geht das. Hier bekommt man mehr Flexibilität auf Kosten 
der Performance.

Wobei ich hervorheben möchte, dass diese Library eigentlich für den 
ESP8266 gedacht war, der erreicht auch mit Soft I²C die maximale 
Geschwindigkeit, die das Display verträgt.
OP #5555378
Lesenswert?

Stefanus F. schrieb:
> Bei meiner oled.h Library (in
> http://stefanfrings.de/esp8266/WIFI-Kit-8-Test2.zip) kann man beliebige
> I/O Pins und beliebige Slave-Adressen als Konstruktor-Argument angeben.

..ist dies aber zur Laufzeit möglich?

Es einer im Club, welcher gleich 8 Displays ansteuern wollte!?

Kann der ACK vom Display ignoriert/ausgeblendet  werden?
Hatte mal eine I2C Ansteuerung zum Slave mit reinen Out Pegel L/H.

Habe das Programm mal in den Arduino Nano geladen, lief aber nicht!

Die Zeit ist bei meiner möglichen Anwendung untergeordnet!
#5555384
Lesenswert?

Al. K. schrieb:
> Stefanus F. schrieb:
>> Bei meiner oled.h Library (in
>> http://stefanfrings.de/esp8266/WIFI-Kit-8-Test2.zip) kann man beliebige
>> I/O Pins und beliebige Slave-Adressen als Konstruktor-Argument angeben.
>
> ..ist dies aber zur Laufzeit möglich?
>
> Es einer im Club, welcher gleich 8 Displays ansteuern wollte!?
>
> Kann der ACK vom Display ignoriert/ausgeblendet  werden?
> Hatte mal eine I2C Ansteuerung zum Slave mit reinen Out Pegel L/H.
>
> Habe das Programm mal in den Arduino Nano geladen, lief aber nicht!
>
> Die Zeit ist bei meiner möglichen Anwendung untergeordnet!

Das ist so oder so Murks!
Bei 8 Displays solltest du SPI nehmen!
Gast #5555411
Lesenswert?

Al. K. schrieb:
> Stefanus F. schrieb:
>> Bei meiner oled.h Library (in
>> http://stefanfrings.de/esp8266/WIFI-Kit-8-Test2.zip) kann man beliebige
>> I/O Pins und beliebige Slave-Adressen als Konstruktor-Argument angeben.
>
> ..ist dies aber zur Laufzeit möglich?

Das Objekt enthält Zustandsdaten und den RAM Puffer für das jeweilige 
Display. Du musst schon für jedes Display ein eigenes Objekt anlegen. Ob 
du das zur Laufzeit machst, oder einmal beim Programmstart, bleibt Dir 
überlassen.

> Kann der ACK vom Display ignoriert/ausgeblendet  werden?

Es wird bereits ignoriert. Die Funktion i2c_send liefert den Wert des 
ACK zurück, aber der return Wert wird nirgends ausgewertet.
Gast #5557327
Lesenswert?

an welchem µC hängt das Display? Der Code von Stefan war ja auch für den 
ESP8266, wenn man den nimmt sollte der auch 4 Instanzen des Oled mit 
Soft-I2C treiben können. Der ESP hat genug RAM das man da keine 
Verrenkungen im Code braucht. Und der hat gleich ein WLan über das man 
die Displaydaten vorgeben kann. Wenn man I2C Display mit zwei 
verschiedenen Adressen nimmt sollte der ESP sogar die gewünschten 8 Oled 
bedienen können.
OP #5558997
Lesenswert?

Knacker Amüsiert schrieb:
> Na das kann ja wieder ein (neues) Affentheater hier auf uC.net werden.

leider ist es kurzfristig nicht mehr nötig, da mein schwerkranke Kollege 
und Musiker  mit 61 Jahren verstorben ist.
Er wollte eins dieser Displays benutzen, selbst programmieren konnte er 
krankheitsbedingt  nicht mehr!


Ich schreibe dies nur um den vielen Nölern etwas über das Maul zu 
fahren.
wenn nach einer schnellen und angeblichen fertigen Lösung gesucht wird 
und man das Handwerkszeug nicht nochmals selbst herstellen will.
Die letzte Arbeit der Anwendung ist in den meisten Fällen ohne Hilfe zu 
bewerkstelligen das ist nur Logik und Anwendung der Befehle,egal welche 
Programmiersprache.
..noch dazu wenn man selten Programmiert.

So das wars!

MfG
OP #5566043
Lesenswert?

ichBinGast schrieb:
> Du siehst aber es gibt immer wieder vernünftige Antworten auf alle
> Fragen!

Ich bin auch der Meinung das Hilfsbereitschaft und Verständnis den 
größten Teil der User zugeordnet werden kann.
Mit nörgelnden nicht zielführenden Antworten von Pseudofachleuten
muss man umgehen  können.
Diese nicht zielführenden Vorschläge kosten aber oftmals viel Sinnlose 
Zeit!
OP #5747027
Lesenswert?

Hallo,
habe die I2C Anzeige mal wieder in Benutzung.
Nutze die Include von Stefanus.
Will erst mal eine Char Variable übergeben.Es erfolgt auch eine Anzeige 
im Display.
Die Übergabe einer nächsten wird nicht angezeigt.
Wie ist der richtige  Befehlsaufruf um eine Char Variable auf dem 
Display anzeigen zu lassen.

Zeichen='4';
display.draw_character(Sp,Ze,Zeichen,OLED::NORMAL_SIZE,OLED::WHITE);

display.draw_string(Sp,Ze,Zeichen,OLED::NORMAL_SIZE,OLED::WHITE);
Einmal geht es!

Es sollte sich auch ein Char Array anzeigen lassen.
Wie sieht der Richtige Befehl dazu aus.
...oder geht das nicht?
display.draw_string(Sp,Ze,*mystring,OLED::NORMAL_SIZE,OLED::WHITE);
Gast #5747036
Lesenswert?

Al. K. schrieb:
> Einmal geht es!

Sollte auch mehrmals mit draw_character() gehen. Bei mir geht es. Hast 
du das beigelegte Beispielprogramm mal ausprobiert? 
http://stefanfrings.de/esp8266/WIFI-Kit-8-OLED.zip

> Es sollte sich auch ein Char Array anzeigen lassen.

Hänge ein Null-Zeichen hinten dran und benutze draw_string(). Oder 
benutze draw_character() und baue eine for-schleife drumherum. Etwas 
anderes macht die draw_string() Funktion im Prinzip auch nicht.
1
char[] meinArray={'A','B','C'};
2
for (int i=0; i<3; i++)  // oder sizeof(meinArray) anstelle der 3
3
{
4
    draw_character(i*5,0,meinArray[i]);
5
}
6

7
char[] meinString="ABC";
8
draw_string(0,0,meinString);

Der Unterschied ist, dass Strings automatisch mit einem Null-Zeichen 
terminiert sind, während Arrays von Zeichen es nicht sind. Die 
draw_string Funktion erkennt das Ende (bzw. die Größe) des Arrays an 
diesem Zeichen. Wenn es fehlt, passiert irgend etwas blödes.

Das gilt allgemein für alle String-Funktionen in c.
OP #5747045
Lesenswert?

Hallo,
Das mit der Nul habe ich auch versucht!
Dann auch dies einfache

Zeichen='1';
display.draw_string(Sp_Text+58,Ze_Text+4*TeZeAbst,Zeichen,OLED::NORMAL_S 
IZE,OLED::WHITE);

Zeichen='2';
display.draw_string(Sp_Text+58,Ze_Text+4*TeZeAbst,Zeichen,OLED::NORMAL_S 
IZE,OLED::WHITE);

Zeichen='3';
display.draw_string(Sp_Text+58,Ze_Text+4*TeZeAbst,Zeichen,OLED::NORMAL_S 
IZE,OLED::WHITE);

Zeichen='4';
display.draw_string(Sp_Text+58,Ze_Text+4*TeZeAbst,Zeichen,OLED::NORMAL_S 
IZE,OLED::WHITE);

Werde jetzt erst mal weiter testen, muss ja mal klappen;-))

ha,ha, ich glaube ich sollte es mit der Draw.charakter Funktion nochmals 
testen!
Gast #5747354
Lesenswert?

Al. K. schrieb:
> Zeichen='1';
> display.draw_string(Sp_Text+58,Ze_Text+4*TeZeAbst,Zeichen,OLED::NORMAL_S
> IZE,OLED::WHITE);

Für einzelne Zeichen musst du draw_character() verwenden. Draw String 
durchläuft den Speicher bis zum nächsten '\0' Zeichen, welches das Ende 
der Zeichenkette markiert.

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