Konwerter LCD HD44780 I2C - Własne znaki. - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Wyświetlacze (https://forum.arduinopolska.pl/dzial-wy%C5%9Bwietlacze) +--- Wątek: Konwerter LCD HD44780 I2C - Własne znaki. (/watek-konwerter-lcd-hd44780-i2c-w%C5%82asne-znaki) |
Konwerter LCD HD44780 I2C - Własne znaki. - ANT - 07-02-2016 Witam, Tak jak w temacie chciałem wyświetlić własny znak na wyświetlaczu znakowym LCD 2x16. Przy korzystaniu z podłączenia wyświetlacza bez konwertera nie było żadnych problemów. Wielkie moje zdziwienie nastąpiło gdy chciałem to uczynić właśnie na LCD podłączonym przez konwerter I2C. Oto kod: Kod: //Konwerter LCD HD44780 I2C - Własne znaki. Zamiast zdefiniowanego znaku omegi otrzymuje krzaczki. Jest jakieś na to rozwiązanie? Pzdr. RE: Konwerter LCD HD44780 I2C - Własne znaki. - Maciek_M - 07-02-2016 A czy to ten sam wyświetlacz co poprzednio czy inny egzemplarz z konwerterem? I czy normalne znaki pokazuje prawidłowo? Mi coś brakuje w tym kodzie tak optycznie, bo kod działający na I2C mam w domu Wysłane z mojego GT-I9195 przy użyciu Tapatalka RE: Konwerter LCD HD44780 I2C - Własne znaki. - wojtekizk - 07-02-2016 Witam A ja proponuję najpierw sprawdzić czy kod prawidłowo kompiluje się ze starszą wersją IDE Arduino (np. 1.5xx). Jeśli używasz najnowszej wersji IDE, to mogą być problemy z LiquidCrystal_I2C właśnie. W sumie tak do końca nie wiadomo, czy to kwestia biblioteki czy najnowsze IDE potrzebuje poprawki. Pozdrawiam RE: Konwerter LCD HD44780 I2C - Własne znaki. - ANT - 07-02-2016 Na tym samym wyświetlaczu bez konwertera wyświetlałem z tym kodem bez problemu znaki graficzne. Oczywiście na innej bibliotece bez obsługi I2C. Z konwerterem natomiast LCD wyświetla mi wszystkie napisy w porządku, a jedynie te moje własne zdefiniowane mi źle wyświetla. Korzystam ze starej wersji Arduino 1.0.5-r2. Być może musi być coś innego w kodzie. Ten co podałem w pierszym poście jest zaciągnięty z neta więc mimo, że wszystko się wyświetla to jednak może coś z nim jest nie tak jak zasugerował Maciek_M. RE: Konwerter LCD HD44780 I2C - Własne znaki. - wojtekizk - 07-02-2016 Witam Jeśli podejrzewasz sam kod, to dlaczego nie sprawdzisz LCD na innym przykładzie? W bibliotece LiquidCrystal_I2C masz przecież katalog examples i tam znajdziesz przykładowy kod w pliku na przykład: CustomChars.pde Załaduj to na swoje Arduino i będziesz wiedział :-) Pozdrawiam RE: Konwerter LCD HD44780 I2C - Własne znaki. - Lobaf - 07-02-2016 Dziwne, wypróbowałem ten kod u siebie, próbowałem go przerabiać bo nie działał, aż w końcu wróciłem do pierwotnej wersji i o dziwo znak omegi się pokazał, ale po odłączeniu zasilania i ponownym podłączeniu znów są "krzaczki". RE: Konwerter LCD HD44780 I2C - Własne znaki. - wojtekizk - 07-02-2016 Coś sobie przypomniałem w związku z róznymi wersjami biblioteki LiquidCrystal_I2C może zamiast: lcd.print ((char)0); spróbuj uzyć: lcd.write(0); Jeśli kompilator wywali błąd, to będzie oznaczać, że nie ma tam takiej metody - write() Pozdrawiam RE: Konwerter LCD HD44780 I2C - Własne znaki. - ANT - 07-02-2016 Przy instrukcji: lcd.write(0); kompilator wywala błąd. Próbowałem również zamiast zapisu: lcd.print ((char)0); podać instrukcję: lcd.print (char(0)); ale niestety również nie działa ale za to kompiluje się I co teraz dalej? Szkoda gdyby nie można było tworzyć własnych znaków przez ten konwerter I2C dla LCD RE: Konwerter LCD HD44780 I2C - Własne znaki. - Lobaf - 07-02-2016 Wydaje mi się, że to nie wina podłączenia przez I2C. Poniżej widać, że własne znaki działają bez zarzutu i także wywala mi błąd po zmianie na "write". RE: Konwerter LCD HD44780 I2C - Własne znaki. - ANT - 07-02-2016 Panowie i Panie Problem rozwiązany! Oto przykładowy kod wyświetlający naprzemiennie znak omegi i błyskawicy. Kod: //Konwerter LCD HD44780 I2C - Własne znaki. Problemem była ta sekwencja kodu: Kod: lcd.createChar(0, ZNAK); a musi być: Kod: lcd.begin(16,2); Ponadto sprawdziłem, że instrukcja: lcd.print ((char)0); może działać zamiennie z instrukcją: lcd.print (char(0)); lub: lcd.write (byte(0)); Pzdr. |