random_003.jpg
Anmelden

Einloggen

Username *
Password *
an mich erinnern

Arduino u8g2 Bild / Pixel verschoben

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
};

....

Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.