Bawię się właśnie pinami GPIO Raspberry Pi. Podpiąłem do nich wyświetlacz 2x16 na hd44780 (negatyw, niebieskie tło i białe litery). LCD podłączony przez magistralę 4bit, GPIO i LCD obsługuję za pomocą biblioteki wiringPi. Napisałem sobie do tego prosty program scrollujący tekst na jednej linii. Całość opiera się na zasadzie zbliżonej do bufora cyklicznego. W pętli głównej program sprawdza ile czasu minęło od ostatniego uaktualnienia. Jeśli minie zadany okres, wysyła do wyświetlacza 16 kolejnych znaków licząc od początku. Potem wskaźnik początku się imkrementuje i tak w kółko. Jeśli dojdzie do końca łańcucha (lub bufora) wskaźnik znów otrzymuje wartość 0.
Mam jednak efekt dziwnego migotania przewijanego tekstu. Wygląda to tak, jakby po uaktualnieniu w miejscu gdzie tekst był wcześniej pozostał jego ciemny cień.
Co jest w największym stopniu powodem tego zjawiska? Mam kilka hipotez:
1) Konstrukcja samego wyświetlacza - problem nie do obejścia, pozostaje szukać lepszego. 2) Zbyt długie wgrywanie znaku z uwagi na brak odczytu flagi zajętości. Jedynym wyjściem jest dodanie bufora na linii R/W, połączenie jej z RPi i przerobienie biblioteki, która domyślnie nie obsługuje tego trybu. 3) Zbyt wolna transmisja z uwagi na zastosowanie 4bitowej magistrali - trzeba poświęcić dodatkowe 4 linie. 4) Mój kod jest zły i trzeba napisać go jeszcze raz, stosując inne podejście. 5) Migotanie wynika z zastosowania RasPi - lepiej w tym przypadku użyć dedykowanego mikrokontrolera.Która rozwiązanie jest najbardziej prawdopodobne?
Tak... Wiem, że niektóre wyświetlacze pozwalają na ograniczoną obsługę przewijania. Mi jednak zależy na możliwości wyświetlania długich tekstów, więc wolę to zrealizować programowo.