Forum: Mikrocontroller und Digitale Elektronik Code for grösseres, 1.3"-Display anpassen (u8glib)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Laurin E. (wildatheart)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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 Moderator
von Hans M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Joachim B. (jar)


Bewertung
2 lesenswert
nicht lesenswert
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!

von Laurin E. (wildatheart)


Bewertung
0 lesenswert
nicht lesenswert
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?? ;)

von Laurin E. (wildatheart)


Bewertung
0 lesenswert
nicht lesenswert
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;

von Laurin E. (wildatheart)


Bewertung
0 lesenswert
nicht lesenswert
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?

von Joachim B. (jar)


Bewertung
1 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.