random_06.jpg
Anmelden

Einloggen

Username *
Password *
an mich erinnern

Arduino u8g2 Feintunig

Die Arduino-Bibliothek u8g2 ist sehr mächtig durch die Unterstützung diverser Displaytreiber. Bei manchen Displays ist jedoch etwas Feintuning nötig.

Bild / Pixel verschoben

Das Bild ist ein paar Pixel nach rechts / links verschoben und am Rand gibt es unplausible Pixel bzw. Grafikfehler. Hierfür gibt es u.a. zwei Ursachen :

Häufigste Ursache : Falscher Treiber im Constructor initialisiert

Häufig wird z.B. ein SH1306 Chip verbaut und in der Artikelbeschreibung des Displays ein SSD1306 beschrieben.

Der auf dem Display verwendete Chipsatz benötigt eine leicht andere Ansteuerung

Hierfür ist ein leichter Eingriff in die Bibliothek u8g2 nötig. Der X-Offset kann sehr leicht editiert werden.
Die Bibliothek bzw. zu editierende Datei befindet sich im Regelfall unter :

PersönlichesDokumteVerzeichnis\Arduino\libraries\U8g2\src\clib

Im Beispiel eines SSD1305 kann folgender Workaround in der Datei u8x8_d_ssd1305.c versucht werden :

static const u8x8_display_info_t u8x8_ssd1305_128x32_noname_display_info =
{
  /* chip_enable_level = */ 0,
  /* chip_disable_level = */ 1,
 
  /* post_chip_enable_wait_ns = */ 20,
  /* pre_chip_disable_wait_ns = */ 10,
  /* reset_pulse_width_ms = */ 100,     /* SSD1306: 3 us */
  /* post_reset_wait_ms = */ 100, /* far east OLEDs need much longer setup time */
  /* sda_setup_time_ns = */ 50,        /* SSD1306: 15ns, but cycle time is 100ns, so use 100/2 */
  /* sck_pulse_width_ns = */ 50,    /* SSD1306: 20ns, but cycle time is 100ns, so use 100/2, AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
  /* sck_clock_hz = */ 4000000UL,    /* since Arduino 1.6.0, the SPI bus speed in Hz. Should be  1000000000/sck_pulse_width_ns */
  /* spi_mode = */ 0,        /* active high, rising edge */
  /* i2c_bus_clock_100kHz = */ 4,
  /* data_setup_time_ns = */ 40,
  /* write_pulse_width_ns = */ 150,    /* SSD1306: cycle time is 300ns, so use 300/2 = 150 */
  /* tile_width = */ 16,
  /* tile_hight = */ 4,
  /* default_x_offset = */ 4,  /*HIER WIRD DER X-OFFSET KALIBRIERT => 2 PIXEL FEHLER => UM 2 PIXEL VERÄNDERN*/
  /* flipmode_x_offset = */ 2,
  /* pixel_width = */ 128,
  /* pixel_height = */ 32
};

....

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.