Arduino Polska Forum

Pełna wersja: 20x4 OLED (WEH002004) przez I2C
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam,
poszukuję rozwiązania problemu właściwej definicji wyświetlacza OLED poprzez I2C.
Płytkę połączyłem z UNO i generalnie wyświetlacz wyświetla żądany txt.
Jest jednak jedno małe ale:
- standardowa definicja ustawienia kursora "setCursor" daje dziwne umiejscowienie tekstu na ekranie
działa to tak jakby kontynuacją 1linii była 3cia a drugiej - czwarta
np. przy konfiguracji (21,1) print zacznie pisać od drugiego znaku 4 linijki

[attachment=321]



W związku z tym pytanie: jak prawidłowo inicjować bibliotekę pod taki wyświetlacz?

Aktualnie korzystam z podpowiedzi dla LCD po I2C

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);   //tu zmieniłem tylko adres zgodny z chipset I2C

z tego co wiem cyferki wewnatrz nawiasu oznaczają piny, czy są to piny I2C? Widziałem też w różnych przykładach definicje w formie: ...I2C lcd(0x3F, 20,4) co miało by oznaczać  adres i wielkość wyświetlacza. Z jakiego powodu stosuje się dwa rodzaje definicji?

 lcd.begin(20,4);  //tak deklaruję wielkość wyświetlacza

jeśli użyję setCursor(0,3), wyświetlacz zaczyna wyświetlać różne losowe znaki na całej powierzchni

Dzięki za zainteresowanie.
Krzysiek
(23-03-2017, 11:52)wex napisał(a): [ -> ]Witam,
poszukuję rozwiązania problemu właściwej definicji wyświetlacza OLED poprzez I2C.
Płytkę połączyłem z UNO i generalnie wyświetlacz wyświetla żądany txt.
Jest jednak jedno małe ale:
- standardowa definicja ustawienia kursora "setCursor" daje dziwne umiejscowienie tekstu na ekranie
działa to tak jakby kontynuacją 1linii była 3cia a drugiej - czwarta
np. przy konfiguracji (21,1) print zacznie pisać od drugiego znaku 4 linijki





W związku z tym pytanie: jak prawidłowo inicjować bibliotekę pod taki wyświetlacz?

Aktualnie korzystam z podpowiedzi dla LCD po I2C

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);   //tu zmieniłem tylko adres zgodny z chipset I2C

z tego co wiem cyferki wewnatrz nawiasu oznaczają piny, czy są to piny I2C? Widziałem też w różnych przykładach definicje w formie: ...I2C lcd(0x3F, 20,4) co miało by oznaczać  adres i wielkość wyświetlacza. Z jakiego powodu stosuje się dwa rodzaje definicji?

 lcd.begin(20,4);  //tak deklaruję wielkość wyświetlacza

jeśli użyję setCursor(0,3), wyświetlacz zaczyna wyświetlać różne losowe znaki na całej powierzchni

Dzięki za zainteresowanie.
Krzysiek

Też walczyłem z tym lcd. U mnie problem rozwiązała biblioteka U8G2. Co do definicji to wszystko zależy od tego jakiej biblioteki używasz.
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  to są numery pinów na przejściówce I2C, na wypadek gdyby ktoś inaczej chciał podłączyć, bo nie muszą być przylutowane. Jak w konstruktorze podajesz wielkość ekranu (swoją drogą to jest LCD nie OLED) to nie podajesz go już przy inicjalizacji w begin - to są zapewne znaleziska fragmentów kodu z różnych bibliotek. Tam gdzie kupiłeś pytaj z jakimi bibliotekami to ma działać, najwyraźniej chip w środku nieco inaczej działa niż w najpopularniejszych LCD. Ja akurat mam u siebie takie biblioteki, które nie podają pinów  w konstruktorze i 20x4 działa OK https://github.com/fdebrabander/Arduino-...2C-library i https://github.com/mathertel/LiquidCrystal_PCF8574/ . Możesz sobie porównać działanie.
(22-11-2018, 08:52)kaczakat napisał(a): [ -> ]LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  to są numery pinów na przejściówce I2C, na wypadek gdyby ktoś inaczej chciał podłączyć, bo nie muszą być przylutowane. Jak w konstruktorze podajesz wielkość ekranu (swoją drogą to jest LCD nie OLED) to nie podajesz go już przy inicjalizacji w begin - to są zapewne znaleziska fragmentów kodu z różnych bibliotek. Tam gdzie kupiłeś pytaj z jakimi bibliotekami to ma działać, najwyraźniej chip w środku nieco inaczej działa niż w najpopularniejszych LCD. Ja akurat mam u siebie takie biblioteki, które nie podają pinów  w konstruktorze i 20x4 działa OK https://github.com/fdebrabander/Arduino-...2C-library i https://github.com/mathertel/LiquidCrystal_PCF8574/ . Możesz sobie porównać działanie.

Cytat:Jak w konstruktorze podajesz wielkość ekranu (swoją drogą to jest LCD nie OLED) to nie podajesz go już przy inicjalizacji w begin - to są zapewne znaleziska fragmentów kodu z różnych bibliotek.
Nie żebym się wymądrzał. To jest alfanumeryczny wyswietlacz 20x4 OLED WINSTAR. W  zależności od modelu może pracować na podłączeniach jak standardowy LCD hd44780 lub I2C/SPI. Mi pomogła biblioteka U8G2.
Dzięki za info o oled, takich jeszcze nie widziałem, ja jeszcze dodam, że jak inicjalizowałem wyświetlacz 2x20 do pracy jako 2x16 to wyświetlał linię 0 w 0, a 1 w 2 wierszu (licząc od 0).