Hier mal als Diskussionsbeitrag meine OLED SSD1306 / SH1106 Assembler Routinen als Teil eins RDA5807 Radios mit ATtiny45. - Thomas
Display extrem responsiv. Olaf zusatztip: Seit kurzem findet man immer mehr Oled (1.3") mit dem SH1106. Der ist fast baugleich zum SSD1306, lediglich die Uebergabe der Columnadresse braucht einen anderen Befehl.
=*/ 8); // same as the NONAME variant, but may solve the "every 2nd line skipped" problem //U8X8_SH1106_128X64_NONAME_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); //U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE); //U8X8_SH1106_128X64_VCOMH0_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // same as the NONAME variant, but maximizes setContrast() range //U8X8_SH1106_128X64_WINSTAR_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // same as the NONAME variant, but uses updated SH1106 init sequence //U8X8_SH1106_72X40_WISE_4W_HW_SPI u8x8(/* cs=*/ 10, /* dc
das 4-Pin, I2C NONAME OLED ohne erkennbare Einschränkungen. Verwendete Initialisierung: U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE); oder mit SDA / SCL: U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, D1, D2); Bei Verwendung der Instantiierung im Page-Modus erscheint keinerlei Anzeige auf dem OLED: U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE); oder mit SDA / SCL: U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, D1, D2); Es gibt dabei weder Kompilierungs- noch Laufzeitfehler
0x00); // memory-mode setup to horizontal-address-mode #endif // lets see if 0x8d works with the SH1106, disable the charge-pump // charge-pump voltage measured: 8,1V #if 1 digitalWrite(DC, LOW); // write commands SPI.transfer(0x8d); // charge-pump command SPI.transfer(0x10); // turns on the charge-pump #endif // clear internal RAM of SH1106 for(row=0;row<8;row++) { digitalWrite(DC, LOW); // write commands SPI.transfer(0xb0 + row); // set page address SPI.transfer(0x00); // set lower column address to 0 SPI.transfer(0x10); // set higher
NO_RESET_PIN, uint8_t i2c_address=0x3C, uint_fast8_t width=128, uint_fast8_t height=32, bool isSH1106=false); [/c] Also ja, da musst du mehr Parameter angeben. Sind denn die Pin Nummern 4 und 5 richtig? Es wäre interessant zu erfahren, wo genau die init() Methode hängen bleibt. Eine I²C Kommunikation
, > uint8_t i2c_address=0x3C, uint_fast8_t width=128, > uint_fast8_t height=32, bool isSH1106=false); > > Also ja, da musst du mehr Parameter angeben. Aber wie? [c]static OLED display=OLED(4,5,255,0x3C,128,64,false);[/c] oder [c]static OLED display=OLED(4,5,255,60,128,64,false);[/c
=*/ 8); // same as the NONAME variant, but may solve the "every 2nd line skipped" problem //U8G2_SH1106_128X64_NONAME_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); //U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); //U8G2_SH1106_128X64_VCOMH0_1_4W_HW_SPI
=*/ 8); // same as the NONAME variant, but may solve the "every 2nd line skipped" problem //U8G2_SH1106_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); //U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); //U8G2_SH1106_128X64_VCOMH0_F_4W_HW_SPI
Adafruit Libery? Kann mir jemand zufällig eine andere Libery empfehlen, welches mein Oled 128x64 SH1106 untetstützt? Oder hat jemand zufällig einen Standart Sketch für dieses Display?
https://www.opendtu.solar/hardware/esp32nodemcu_38pin/#symbolic-view Display ist das OLED Display SH1106 Funkmodul das Generic nRF24L01+ Module with SMA antenna Hier noch ein paar Screenshots. Ist sicher nur eine Sache der richtigen Konfiguration. Ist mein erstes ESP32 Projekt.
ist nicht gleich SPI, einige Displays benötigen halt RST / DC. Zum "SPI"-Anschluss dieser SSD1306/SH1106 OLEDs hatte ich im AVR-Transistortester-Thread mal was geschrieben (Seite 7)
Hallo Das dürfte ein klassisches SSD1306 oder SH1106 modul sein, das theoretisch von der u8glib unterstützt werden sollte. Allerdings hat dieses Modul die CS (chip select) leitung nicht herausgeführt, was die Kommunikation sehr schwierig macht. Wir hatten
komplett > ausgeschaltet werden. Was hast du denn für ein I2C Display? Eines mit SSD1306 oder SH1106 Controller? Da gib es Befehle für einen Standby des Displays, genügt dir vielleicht schon ;)
angeblich" eingebauten Controller zeigt nicht den Erfolg. //Display #include <U8g2lib.h> U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0); void setup(void){ u8g2.begin(); } Was ich jetzt mache, ich versuche Schritt für Schritt die einzelnen Initialisierungsschritte durchzugehen.(Evtl. auch
hingehört. Moment mal, das kommt mir bekannt vor... hier: "Es sind vereinzelt Displays mit SH1106 aufgetaucht, wo das Bild um zwei Pixel verschoben erscheint. Links fehlt etwas und rechts erscheint dafür ein vertikaler Balken mit zufälligem Inhalt. In diesem Fall musst du im Quelltext von OLED:
Hallo, bei meinem ersten Tests mit einem OLED 128x64 Display (SH1106 Controller) bekomme ich die beim compilieren die Fehlermeldung "LCD_128x64.elf section "text will not fit in region text" wenn ich z.B. [c] u8g_SetFont(&u8g, u8g_font_osb18); [/c] verwende.
wie gut so etwas > implementierbar ist. Meine Library für ein OLED-Display mit SSD1306 oder SH1106 Controller braucht incl. Font weniger als 2 kByte Flashspeicher im Textmode. Sollte also eigentlich auch für ein Attiny44 noch gut gehen. http://www.github.com/Sylaina/OLED-Display/
M. K. schrieb im Beitrag #5553729: > Meine Library für ein OLED-Display mit SSD1306 oder SH1106 Controller > braucht incl. Font weniger als 2 kByte Flashspeicher im Textmode. Sollte > also eigentlich auch für ein Attiny44 noch gut gehen. Smile, Dankeschön, ich kenne deine .c *.h Software
was wäre. Bisher habe ich immer Displays auf Basis des HD44780 oder die OLEDs mit SSD1306 bzw. SH1106 Controller verwendet. Die sind mir aber etwas zu klein (ich werde älter und sehe nicht mehr so gut) und dachte mir jetzt so ein 3.5" TFT, ggf. mit Touch, wäre ja recht nett. Mit Arduino scheint es
mich letztens locker zwei-drei Stunden Zeit gekostet...weil ich statt eines SSD1306-Displays ein SH1106-Display angeschlossen hatte. Das war so ein dummer Fehler, da werde ich mich noch Monate drüber ärgern.
https://github.com/Sylaina/oled-display Das ist meine Library für I2C Displays mit SSD1306 bzw. SH1106 Controller. Ist etwas schneller als die Adafruit-Library und braucht auch weniger Speicher. Ist halt dafür nicht ganz so flexibel/umfangreich. Einstellungen werden fürs LCD werden in der lcd.h gemacht
dem Bild angegeben (Seite 5), funktioniert auch mit mit 5V, wurde allerdings heiß bei mir (war ein sh1106), und funktioniert auch mit 3,3V tadellos, schon seit Wochen im Dauertest. Unterschiedliche Angaben zu Bauteilen finde sind mir auch schon aufgefallen (zu einem Sensor), anscheinend schreibt da der
www.szallvision.com 8 4.Functional Specification 4.1 Commands Refer to the Technical Manual for the SH1106G 4.2 Power down and Power up Sequence To protect OEL panel and extend the panel life time, the driver IC power up/down routine should include a delay period between high voltage and low voltage power
www.szallvision.com 8 4.Functional Specification 4.1 Commands Refer to the Technical Manual for the SH1106G 4.2 Power down and Power up Sequence To protect OEL panel and extend the panel life time, the driver IC power up/down routine should include a delay period between high voltage and low voltage power
b Was noch fehlt: Das originale Library von Michael hat Unterstützung für die sehr ähnlichen SH1106-Controler. Da ich nicht über so ein Display verfüge und ich das nicht testen kann, fehlt die derzeit noch. Die Zeichen µ und Ohm im Font sind derzeit nur Dummys Den Code gibts auf github: https
hast auch den Displaytyp und die I2C-Adresse richtig eingestellt? Im Github ist die Library auf ein SH1106-Display eingestellt mit entsprechender Adresse, das musst du ändern wenn du ein SSD1306-Display benutzt ;)
rechts-Drehung links - Steuern von einem WS2812B RGB LED Ring mit 24-32 LEDs - Bedienung über Balkenmenu auf SH1106-OLED-Display 128 x 64 Pixel - Menu-Steuerung über Drehgeber - Menu viersprachig (DE, EN, FR, ES) Alle Einstellungen bei Veränderung speichern und bei Programmstart wiederherstellen - Hauptmenu 1. Programm
aussieht. Typisch chinesisch. > habt ihr diesen Offset auch? Beim 128 Pixel breiten Displays mit SH1106 (welcher dem SSD13xx zu 99% gleicht) gibt es auch einen Offset. Da hat das RAM 132 Spalten, das Display aber nur 128. Der Offset ist dort 2 (also zentriert).
Schlaumaier, würde gerne diese Display https://www.christians-shop.de/13-OLED-Display-128-x-64-SH1106-I2C-IIC-weiss verwenden wenn möglich? Andere Frage dazu, wie bekomme ich die I2C Adresse von dem Display dann raus um es anzusteuern?