Boj s displejem

Dnešní boj s ESP8266 a displejem OLED 1306 128x32 (nebo 64 ?) jsem dovedl k vítěznému konci. Návody jsou perfektní, pokud neděláte normální chyby. Takže, ačkoliv deska funguje na universálním nastavení Generic  ESP8266 Module (bliká atd.), tak při připojení k displeji, program neběhá a odmítá komunikovat i s COM portem. Tedy komunikuje, ale na sériovém monitoru se při běhu programu zobrazují nesmysly a OLED displej ani nenastartuje.

Tedy kudy cestička? Tak kontrola připojení displeje - dobře, nic mi nevyhořelo. Kontrola desky - program Blik se nahrává a deska bliká. Druhý displej. To samé. Na jakém portu I2C je displej připojen? Nahrávám skenink sběrnice a na sériovém monitoru opět nesmysly. To už začíná být podezřelé - zrada mezi klávesnicí a židlí? Nastavuji ve skenovacím programu poctivě GPIO piny - SDA GPIO 4, SCL - GPIO 5. Zase nesmysly. Aha, tak změna desky v nastavení Arduino IDE - měním na desku NODEMCU  1.0 (ESP - 12E module) - nějak jsem si vzpomněl, že jsem to už kdysi musel udělat. A ejhle, sériový monitor funguje, displej se objeví na 0x3C (to asi má být displej 138x32, divné), tak uvidím. Nahrávám program z knihovny Příkladů - Adafruit - SSD1306_128x64_I2C. A hele, ono to konečně běží.

Prohlížím si ještě Demo program - vše se nejdříve kreslí do bufferu a ten se pak zobrazí příkazem display.display();. Buffer a OLED displej vymažeme display.clearDisplay();

 

 
 
 

Podprogram pro vykreslení textu

void testdrawchar(void) {
display.clearDisplay();

display.setTextSize(1); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 0); // Start at top-left corner
display.cp437(true); // Use full 256 char 'Code Page 437' font

// Not all the characters will fit on the display. This is normal.
// Library will draw what it can and the rest will be clipped.
for(int16_t i=0; i<256; i++) {
if(i == '\n') display.write(' ');
else display.write(i);
}

display.display();
delay(2000);
}