Witam,
dostałem od klienta wyświetlacz OLED 1,3" I2C opisany jako SSD1306 (nie na samym wyświetlaczu). Korzystając z wiedzy i materiałów wideo od pana Mirka chciałem stworzyć nową bibliotekę do obsługi tegoż wyświetlacza ale napotkałem problem (już rozwiązany). Nie znalazłem rozwiązania tutaj na forum, dlatego udostępniam ten post dla osób, które mogą trafić na podobny wyświetlacz.
Mianowicie, procedura inicjalizacji za nic miała sobie komendę ustawienia trybu pamięci "Set Memory Addressing Mode" (0x20) i trybu "Horizontal addressing mode" (0x00) (czyli przeskakiwania do następnej strony po osiągnięciu prawej krawędzi ekranu). Za każdym razem podczas wysyłania bufora do pamięci wyświetlacza, dane trafiały tylko do pierwszej strony (ciągle nadpisywał górne 8 pikseli, pozostała część to szum powstały podczas uruchomienia).
Według noty SSD1306 jest to tryb Page Addressing Mode:
Po przeszukaniu internetu pod tym kątem, znalazłem informację że może to być wyświetlacz oparty o sterownik SSH1106 i faktycznie tak musi być. Z tego co podejrzałem w bibliotekach do tych sterowników, adresowanie stron przeprowadzane są ręcznie co każde 128 kolumn. Czyli potrzebujemy w ciągu jednej aktualizacji bufora wysłać 8 razy komendę adresowania strony. A może istnieje możliwość ustawienia tego, tylko ja nie znalazłem?
Według noty SSD1306 powinno to działać z automatu gdy ustawimy tryb Horizontal Addressing Mode (ale nie działa)
Wyświetlacz o którym mowa:
Przedstawiam przykładowy kod, gdyby ktoś spotkał się z podobnym problemem:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.