Hallo liebe Gemeinde Ich habe ein LED-Panel nach einem Design von einem "instructables.com"-User gebaut. Original verwendet der Autor ein 0.96" I2C Display (128x64). Ich wollte nun für ein grösseres Panel ein 1.3" Dislay (auch I2C und 128x64) verwenden. Leider friert nun das Display sofort nach dem Power Up ein und reagiert nicht auf Befehle des Drehknopfes etc (das kleinere funktioniert im gleichen Setting einwandfrei). Ich habe mich bereits an das Arduino-Forum gewandt. Die User dort sind alle der Meinung, dass das grössere Display ohne Code-Änderungen funktionieren sollte.. In meiner Schaltung verwende ich ein Atmega328P. Die Display wird mit der u8glib-Library angesteuert. Der Autor des Designs meinte, man müsse wohl die Identifiers des u8glib ändern. Weiss jemand von euch, was zu tun ist? Ich danke euch schon jetzt! wildatheart Hier der Code: -- Welchen Teil von Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang hast Du jetzt nicht verstanden?
:
Bearbeitet durch User
Laurin E. schrieb: > Screen::Screen() { > #ifndef u8glib_h > #define u8glib_h > #include <u8glib.h> > #endif > //U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, > /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);// for u8g2lib > //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | > U8G_I2C_OPT_FAST); > _valueChange = true; > _showBigText = false; > _showBat = false; > _showBottom = false; > _showCaption = false; > > } was solln das sein? Hat das neue Display auch den SSD1306 drauf? Wenn nicht und es nur kompatibel ist, Laurin E. schrieb: >Der Autor des Designs meinte, man müsse >wohl die Identifiers des u8glib ändern. schau mal ob die lib beim Init die ID ausliest und da der Vergleich fehl schlägt. MfG, Hans
Laurin E. schrieb: > Hallo liebe Gemeinde > Ich habe mich bereits an das Arduino-Forum gewandt. Die User dort sind > alle der Meinung, dass das grössere Display ohne Code-Änderungen > funktionieren sollte.. is so > In meiner Schaltung verwende ich ein Atmega328P. Die Display wird mit > der u8glib-Library angesteuert. Der Autor des Designs meinte, man müsse > wohl die Identifiers des u8glib ändern. wie wäre es mit der richtigen Controllerwahl? #include "U8glib.h" //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK PS du hast mein Mausscrollrad zerstört!
Danke vielmals Joachim! Welche Line kommt jetzt wohin? Es müssen sämtliche Zeilen betreffend der u8glib-Library geändert werden, oder? Sorry ich bin code-technisch noch im Anfänger-Stadium ;) PS: Tut mir echt leid wegen deiner Maus! Soll ich Dir eine neue schenken?? ;)
Hab's mal probiert. Die Darstellung erscheint sofort und ohne Noise, aber es reagiert noch nicht auf Commands des Drehknopfes und Button. Der Newbie ist kläglich gescheitert ;) Ausschnitt 1 //Input and Output #define BUTTON1 8 #define BUTTON_ON 7 #define DT 2 #define CLK 3 #define COLD 9 #define WARM 10 #define OLED_RESET 4 //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI class Button { Ausschnitt 2 RotEnc rotenc; U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); Screen screen; Button button1(BUTTON1); Button buttonOn(BUTTON_ON); Light light(WARM, COLD); Thermistor therm1(0); Thermistor therm2(1); //Thermistor therm3(2); Voltage volt1(3); Ausschnitt 3 //Screen-methods Screen::Screen() { #ifndef u8glib_h #define u8glib_h #include <u8glib.h> #endif //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK _valueChange = true; _showBigText = false; _showBat = false; _showBottom = false; _showCaption = false;
Hallo alle Ich habe das Display gewechselt, da ich mit der Code-Anpassung nicht klarkomme. Das grosse Display hat jetzt denselben Controller wie das kleine (SSD1306). Wenn ich die Schaltung mit externem Quarz auf 16MHz takte, kommt nur ein Rauschen auf dem Display. Wenn ich den Chip jedoch durch den internen 8MHz-Oszi takte, wird das Programmierte korrekt dargestellt. Nur leider ist die Reaktionszeit (auf Commands durch Drehknopf etc.) sehr lang. Weiss jemand, was ich tun könnte?
Laurin E. schrieb: > Weiss jemand, was ich tun könnte? programmieren lernen entweder die Timings am Display bei 16MHz langsamer machen oder die Timings für den Encoder bei 8MHz schneller machen.
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.