http://www.ebay.de/itm/12864-0-96-Inch-OLED-LED-Display-Anzeige-Modul-fur-Arduino-51-Serie-Neu/371193175731?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20140117130753%26meid%3Dbb535bbe0e244c299462c2cbc035a7a9%26pid%3D100005%26rk%3D1%26rkt%3D6%26sd%3D191168669630&rt=nc Habe 2 von diesen Teilen geschenkt bekommen. Da ich ein ähnliches schon seriell in betrieb genommen habe, dachte ich es geht sehr einfach. Aber hier ist keine Startgrafik beim einschalten. Ist dies überhaupt ein Intelligentes Grafikdisplay, wo schon Grafik und Textbefehle enthalten sind? Leider habe ich auch noch kein entsprechendes Datenblatt gefunden. Wenn einer Dieses Display kennt, wie wird es in einfachster weise in Betrieb genommen. Danke
Diese spaßigen Displays haben keinerlei Grafikfunktionen oder Zeichensätze drin. Man beschreibt sie wie einen Speicher, dessen Bits halt als leuchtende Punkte zu sehen sind. Wenn man echte Grafik machen will und viel RAM zur Verfügung hat, gibt es U8glib. Ich habe so ein Display schon in Betrieb genommen und hatte nicht viel RAM. Meine Lösung ist zugegeben aus drei verschiedenen Beispielprogrammen zusammenkopiert und kann nur einen 5x7-ASCII-Zeichensatz darstellen, und zu "schmutzig" zur Veröffentlichung, aber man kann unter Ausnutzung des "Page Mode" (eine "Seite" ist ein 8 bit hoher Streifen) sehr einfach mit wenig RAM-Bedarf Text und Symbole abbilden, so lange diese nicht höher als 8 Pixel sind. SSD1306 ist übrigens der richtige Suchbegriff, aber darauf achten, daß die Displays im I2C-Modus betrieben werden, gibt auch welche für SPI.
Danke für diese Inf. Wo finde ich das Datenblatt damit ich die Zeilen und Spalten ansteuern kann? Unter Anderen muss ich auch die I2C Adresse wissen. Am besten wäre eine Minimale Startsequenz. Danke
Hi >Wo finde ich das Datenblatt damit ich die Zeilen und Spalten ansteuern >kann? Gurgel: 'SSD1306 Datasheet' MfG Spess
Gurgeln tu ich schon, mache auch weiter. Wie stelle ich fest ob das Teil mit I2C betrieben wird, oder mit Spi? Es sollte ein I2C sein ,wurde mir gesagt.....
Hi
>Wie stelle ich fest ob das Teil mit I2C betrieben wird, oder mit Spi?
Wenn das die Displays aus dem Link sind, dann steht da SCL und SDA
drauf. Und das ist I2C.
MfG Spess
also I2C! Um das teil anzusteuern brauche ich also noch D/C (Daten/Befehle) oder ? RST bleibt offen oder ?
peter schrieb: > Um das teil anzusteuern brauche ich also noch D/C (Daten/Befehle) oder > ? Das deutet eher auf SPI hin.
Hi
>Das deutet eher auf SPI hin.
Nein. Das ist die Umschaltung Befehl/Daten.
MfG Spess
es gibt da 3V und 5V Module.. die 5V haben meist hinten einen Spannungsregler mit drauf.. ob die 3V auch ein levelshifting benötigen weiß ich nicht.
Das Display ist wahrscheinlich ein UG-2864AMBA oder UG-2864HSWE. Lade Dir die Datenblätter. Die Displays unterscheiden sich in der Anzahl der Kontakte auf dem Folienleiter. Google führt Dich zu den Datenblättern. Für die Unterscheidung SPI/I2C sind die Pins BM0 und BM1. Prüfe die Beschaltung. Ich habe ähnliche Displays, die nur 4 Pins VCC;GND;SCL;SDA haben. Leider brauchen meine Displays einen Impuls auf der Reset-Leitung, um immer sauber hoch zu kommen. Die Reset-Leitung ist auf der Leiterplatte nicht angeschlossen. Ich zapfe diesen Pin an, und nach einem ordentlichen Reset starten die Controller immer zuverlässig. fchk
spess53 schrieb: > Hi > >>Das deutet eher auf SPI hin. > > Nein. Das ist die Umschaltung Befehl/Daten. und wird bei I2C zur Festlegung der Adresse (0x78/0x7A) verwendet. fchk
Welchen Befehl müsste ich senden damit das Teil zum Leben erwacht? z.B 1Byte (Adr + WE Bit) 2Byte (Daten) Frank K. schrieb: > Für die Unterscheidung SPI/I2C sind die Pins BM0 und BM1. Prüfe die > Beschaltung. Die Pins gibt es bei mir nicht!
Frank K. schrieb: > Ich habe ähnliche Displays, die nur 4 Pins VCC;GND;SCL;SDA haben. Leider > brauchen meine Displays einen Impuls auf der Reset-Leitung, um immer > sauber hoch zu kommen. kurze Zwischenfrage: das Problem habe ich mit diesen Displays auch, hast du mal probiert ob das per Software zu lösen ist?
Jojo S. schrieb: > Beitrag "Re: OLed Anzeige" > > war das nicht richtig oder bist du ein anderer Peter? Jo,bin ich. Habe meinen eigenen Thread vergessen. Nach der Antwort wäre es ein SPi ??!!! Es fehlt mir aber eine Ansteuerung Sequenz um das Teil zum leben zu erwecken.
ein googlen nach 'SSD1306' erschlägt dich mit Ergebnissen, es gibt jede Menge Libs für alle möglichen Platformen. Ein Befehl alleine reicht nicht, es ist eine Sequenz die einige Registerwerte setzt. Gut ist zB die Adafruit_gfx lib. Ob SPI oder I2C ist der Software egal weil die Kommandos/Registerwerte gleich sind und nur das write auf die Hardware getauscht werden muss.
die Adafruit Lib ist in C++ für Arduino, es gibt aber auch prozedurale Versionen, zB https://github.com/microbuilder/LPC1343CodeBase/tree/master/drivers/displays/bitmap/ssd1306 Die ist für den LPC13xx, aber es sind nur wenige IO Routinen für andere Prozessoren anzupassen.
Jojo S. schrieb: > Frank K. schrieb: >> Ich habe ähnliche Displays, die nur 4 Pins VCC;GND;SCL;SDA haben. Leider >> brauchen meine Displays einen Impuls auf der Reset-Leitung, um immer >> sauber hoch zu kommen. > > kurze Zwischenfrage: das Problem habe ich mit diesen Displays auch, hast > du mal probiert ob das per Software zu lösen ist? Ja. Der I2C-Bus hängt, SDA ist permanent low. Keine Chance. Ich habs mit Pulsen auf SCL probiert, aber das Anzapfen der Reset-Leitung war das einzige, was wirklich zuverlässig half. fchk
peter schrieb: > Welchen Befehl müsste ich senden damit das Teil zum Leben erwacht? > z.B 1Byte (Adr + WE Bit) 2Byte (Daten) > > > Frank K. schrieb: >> Für die Unterscheidung SPI/I2C sind die Pins BM0 und BM1. Prüfe die >> Beschaltung. > Die Pins gibt es bei mir nicht! Doch, gibt es. Sind sogar drei Pins, BM0..BM2 bzw BS0..BS2, je nach Datenblattversion. Nicht auf der Leiterplatte herausgeführt, aber als Eingänge direkt am Folienleiter des Displays. Schau auch ins Datenblatt des SSD1306 fchk
@Frank K. Du bist also der Meinung das mit den vorgesehenen 4 Datenleitungen nichts zu machen ist! SCL,SDA,RST,D/C Diese reichen also nicht! Ist also gleich besser ein Intelligentes Display über die serielle (RS232) anzusteuern. http://www.ebay.de/itm/Serial-UART-I2C-SPI-128x64-12864-OLED-LED-LCD-Module-White-for-Arduino-PIC-AVR-/251233903648?pt=LH_DefaultDomain_0&hash=item3a7eb52420
peter schrieb: > @Frank K. > Du bist also der Meinung das mit den vorgesehenen > 4 Datenleitungen nichts zu machen ist! > > SCL,SDA,RST,D/C Diese reichen also nicht! Doch, sofern es I2C ist, reicht das. D/C auf Ground oder VCC setzen, nach dem Power On einmal RST auf Low und wieder High ziehen, und los gehts. Die BS0..BS2 Pins am Folienleiter dienen dem Einstellen des Schnittstellenmodus (SPI 3W, SPI 4W, I2C,...). Damit kannst DU eineindeutig verifizieren, dass Deine Module auf I2C eingestellt sind. SPI wäre auch denkbar, und viele Module haben bei SPI keinen SDO Pin, d.h. Du kannst nichts zurücklesen. Das Fehlen eines SDO-Pins deutet also nicht zwangsläufig auf I2C als Protokoll hin. Das hier ist das Datenblatt des eigentlichen Displays: http://www.adafruit.com/datasheets/UG-2864HSWEG01.pdf fchk
Das bedeutet.. Seite 3 Pin10 BS0 0 Pin11 BS1 1 Pin12 BS2 0 Dann ist es ein I2C Da zu messen ist für mich nicht einfach, so tief in die Materie wollte ich nicht wieder einsteigen,aber nun isses so!
peter schrieb: > Jojo S. schrieb: >> Beitrag "Re: OLed Anzeige" >> >> war das nicht richtig oder bist du ein anderer Peter? > > Jo,bin ich. > Habe meinen eigenen Thread vergessen. > Nach der Antwort wäre es ein SPi ??!!! Ist es auch - die Anschlüsse hab ich dir schon im vergessen Thread genannt. Es scheint so , dass du es noch nicht versucht hast? oder wo eckt es jetzt? > > Es fehlt mir aber eine Ansteuerung Sequenz um das Teil zum leben zu > erwecken. Für welchen Einsatz brauchst du eine Ansteuerung Sequenz? Arduino PIC ( 18, 24 ) AVR sonstiges SoC ESP8266 SSD1306 wird doch sauber beschrieben: https://www.adafruit.com/datasheets/SSD1306.pdf SPI oder IIC / I2C hier mal IIC wenn du SPI hast dann mach Write_SPI_... daraus der AdressSatz ist beim SSD1306 gleich
1 | void Initial_LY096BG30() |
2 | { |
3 | Write_IIC_Command(0xAE); //display off |
4 | Write_IIC_Command(0x20); //Set Memory Addressing Mode |
5 | Write_IIC_Command(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid |
6 | Write_IIC_Command(0xb0); //Set Page Start Address for Page Addressing Mode,0-7 |
7 | Write_IIC_Command(0xc8); //Set COM Output Scan Direction |
8 | Write_IIC_Command(0x00);//---set low column address |
9 | Write_IIC_Command(0x10);//---set high column address |
10 | Write_IIC_Command(0x40);//--set start line address |
11 | Write_IIC_Command(0x81);//--set contrast control register |
12 | Write_IIC_Command(0x7f); |
13 | Write_IIC_Command(0xa1);//--set segment re-map 0 to 127 |
14 | Write_IIC_Command(0xa6);//--set normal display |
15 | Write_IIC_Command(0xa8);//--set multiplex ratio(1 to 64) |
16 | Write_IIC_Command(0x3F);// |
17 | Write_IIC_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content |
18 | Write_IIC_Command(0xd3);//-set display offset |
19 | Write_IIC_Command(0x00);//-not offset |
20 | Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency |
21 | Write_IIC_Command(0xf0);//--set divide ratio |
22 | Write_IIC_Command(0xd9);//--set pre-charge period |
23 | Write_IIC_Command(0x22); // |
24 | Write_IIC_Command(0xda);//--set com pins hardware configuration |
25 | Write_IIC_Command(0x12); |
26 | Write_IIC_Command(0xdb);//--set vcomh |
27 | Write_IIC_Command(0x20);//0x20,0.77xVcc |
28 | Write_IIC_Command(0x8d);//--set DC-DC enable |
29 | Write_IIC_Command(0x14);// |
30 | Write_IIC_Command(0xaf);//--turn on oled panel |
31 | } |
lg rudi ;-) Schau auch mal da rein Beitrag "MSP430 SSD1306 über I2C"
peter schrieb: > Das bedeutet.. > Seite 3 > > Pin10 BS0 0 > Pin11 BS1 1 > Pin12 BS2 0 > > Dann ist es ein I2C > > Da zu messen ist für mich nicht einfach, so tief in die Materie wollte > ich nicht wieder einsteigen,aber nun isses so! Das kannst Du vielleicht auch an den Leiterbahnen sehen. Eine Lupe oder ein USB-Mikroskop sollte helfen. So sieht das bei mir aus (siehe Bild). Ich muss immer noch an den Reset-Pin einen Draht anlöten - bei Deinen Modulen ist der Pin zum Glück herausgeführt. Weiß man aber alles erst hinterher. fchk
Ich will über einen USB to I2C/SPI Wandler aus VB.Net das Teil ansteuern! Auch mit den C- Pro 32 möchte ich es versuchen,solche Dinger liegen noch rum. Ein einfacher Basisdialekt ist das Beste. Habe ja auch Andere 128/65 zum Leben erweckt. Die Antwort war in einen Anderen Thread gelandet.
>> Frank K. schrieb: >>> Ich habe ähnliche Displays, die nur 4 Pins VCC;GND;SCL;SDA haben. Leider >>> brauchen meine Displays einen Impuls auf der Reset-Leitung, um immer >>> sauber hoch zu kommen. >> kurze Zwischenfrage: das Problem habe ich mit diesen Displays auch, hast >> du mal probiert ob das per Software zu lösen ist? > > Ja. Der I2C-Bus hängt, SDA ist permanent low. Keine Chance. Ich habs mit > Pulsen auf SCL probiert, aber das Anzapfen der Reset-Leitung war das > einzige, was wirklich zuverlässig half. ich konnte mein Problem lösen, das Löschen de GDRAM Start Adresse (0xb0) hat geholfen. Vorher sah das Display nach CPU Reset (kein HW Reset am Display) wie im Anhang aus.
Habe auch ein Foto gemacht! Pin10/11/12 sind frei! Wie erkenne ich nun ob es ein I2C Display ist?
peter schrieb: > Habe auch ein Foto gemacht! > Pin10/11/12 sind frei! > Wie erkenne ich nun ob es ein I2C Display ist? Messen. Die Pins sollten ja mit GND oder VCC verbunden sein.
peter schrieb: > Auf dem Bild sieht man keine Kontaktierung zum + oder - Die kann auch unter dem Folienleiter sein. fchk
Natürlich ist das der I2C Typ, Standardadresse sollte 0x78 sein. Zum Vergleich: Der SPI Typ des gleichen Moduls hat mehr Anschlusspins: http://www.ebay.de/itm/Blue-0-96-IIC-I2C-Serial-128-x-64-OLED-LCD-LED-Display-Module-for-Arduino-R3-/191168669630?pt=LH_DefaultDomain_77&hash=item2c828a67be
Habe ein wenig gemessen. http://www.adafruit.com/datasheets/UG-2864HSWEG01.pdf Pin 13 CS minus Pin10/11/12 alles an minus.Das sollte es doch nicht geben. Was nun?
Aha. BS0..2=[000] ist 4 wire SPI, wo der /CS nicht herausgeführt ist. Das Display ist also immer selektiert und braucht einen eigenen SPI-Port.
Ich habe es als I2C Teil bekommen. ..ob man das Teil auf I2C um codieren kann? Folienleiter ablöten?
peter schrieb: > Folienleiter ablöten? wird schwer zerstörungsfrei gehen. Und dann? Andere Adapterplatine bauen? Ein bischen viel Aufwand für ein Teil das du beim Chinesen für ca. 3€ bekommst. Und die Ansteuerung fehlt dann immer noch. Dann eher einen billigen Arduino als Controller anschliessen, da kannst du die Intelligenz für das Display reinpacken. Google mal nach SSD1306, da wirst du erschlagen mit Projektchen und YouTube Demos.
Was ich alles bestellen kann ist mir klar. Ich bestelle nur noch intelligente,kosten 10Euro mehr, aber sehr einfache Ansteuerung,seriell(RS232) Grundbefehle Text,Grafik schon enthalten. Die Dinger wurden als I2C bestellt ,sind sie nun wirklich nicht I2C. Es gibt widersprüchliche Meinungen. Jetzt liegen die Dinger auf den Tisch und ich wollte sie zum Leben erwecken, ob ich das Nutzen werde ,noch keine Ahnung.
Wenn es wirklich SPI ist, muss eine Mindesttaktfrequenz eingehalten werde? Könnte man das Teil zur Funktionskontrolle auch mit einen z.B. C-Control ansteuern. Da SPI zu Fuß programmiert wird und sehr langsam ist?
einfach mal ins Datenblatt schauen? Beim Clock gibt es nur eine min cycle time von 100 ns, keine max. Also als Frequenz max 10 MHz. https://www.adafruit.com/datasheets/SSD1306.pdf Und SPI ist doch erstmal noch einfacher, du brauchst nur 3 Ausgänge von deinem Controller oder am PC würde auch ein FTDI im Bitbang Mode gehen: Daten/Command Leitung setzen, Datenbit setzen, Clock High, Clock Low und das 8 mal. Das in zwei Routinen die entweder Daten oder Kommando schreiben und schon können alle genannten Bibliotheken hier darauf aufsetzen.
S.52 Ein Takt muss mindestens 100 ns sein,Datenübertragung nicht schneller wie 10MHz. Das Teil kann also sogar statisch betrieben werden. Es ist also möglich die Bits per Hand reinzuhacken. :-)) ..macht kaum jemand. jetzt müsste ich nur sicher wissen, I2C oder nicht?:-(
peter schrieb: > ..macht kaum jemand. Soviel diskutieren und das Teil so anzubeten macht kaum jemand :-/ Du hast doch schon nachgemessen, danach ist es eindeutig 4-wire SPI. Und wenn es I2c ist funktioniert es einfach nicht. Wichtig ist nur mit 3,3 V Pegeln dranzugehen.
hab ich ja auch schon gepostet.. habe eins mit einmal 5V geschrottet.. mein zweites 5 V hatte einen Spannungsregler und shifting Transistoren.. diese konnte ich auf dem TE seinen fotos nunmal nicht finden.
nun ja, jetzt kenne ich das Teil und werde es erst einmal weglegen oder weiter verschenken. Werde mir serielles (Rs232) intelligentes zulegen, damit habe ich recht gute Erfahrung gemacht.
http://www.ebay.de/itm/1-3-Serial-UART-I2C-SPI-128x64-OLED-LED-LCD-Display-Module-Blau-fur-Arduino-/371147821296?pt=LH_DefaultDomain_77&hash=item566a2250f0 Da habe ich schon eins,ist leicht auf Trab zu bringen!
http://www.digole.com/index.php?productID=844 Habe Dies und auch das True Color! Laufen sehr gut und sind denkbar einfach anzusteuern. Nur was sind die nicht bezeichneten Lötpunkte?
Sorry, das ich diesen alten Thread wieder ausgrabe, aber ich habe eine Frage bezüglich des SSD1306. Es gibt 3 Pins, die das Interface auswählen: BS0, BS1, BS2. In der Pinbelegung aus dem Datenblatt fehlt allerdings BS0 vollständig. Wie kommt man an BS0, bzw. was mache ich falsch?
Nun, der BS0 wird dann bereits fest an + oder - angeschlossen sein. Das Datenblatt sollte eigentlich darüber Auskunft geben. Wie sieht es bei BS1 und BS2 aus? Welche Pegel haben die? Oder kannst Du das auswählen?
Habe diese Info noch nicht gefunden, aber er sollte dann auf Low liegen. Ansonsten wäre nur 3er SPI Möglich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.