Skocz do zawartości

Poprawne podłączenie wyświetlacza LCD


Pomocna odpowiedź

   #include <Wire.h>
   #include <LiquidCrystal_I2C.h>

   LiquidCrystal_I2C lcd(0x27,16,2); 
   void setup()
   {
     delay(1000);
     lcd.init();                   

     lcd.backlight();

     lcd.print("For");
     lcd.setCursor (0,1);
     lcd.print("Bot");
   }

   void loop()
   {
   }
  • Lubię! 1
Technicznie wywoływanie setup w loopie nie łamie żadnego standardu. To co Fauke zrobił to ekwiwalent:

A od kiedy, co obieg pętli wykonuje się wszystkie inicjalizacje? Nie wmówisz mi, że to standardowe podejście.

Ale nie łamie żadnych założeń co do kodu.

A co to są założenia kodu? Rozwiązanie było dobre do sprawdzenia, czy coś działa, ale jest niedopuszczalne w dalszym użytkowaniu. To tak, jakbyś, co obieg pętli resetował cały system. Korzystanie z takiego rozwiązania na dłuższą metę pokazywałoby tylko, że programista nie ma pojęcia, co robi.

Rozwiązanie z ciągłym inicjalizowaniem LCD (w pętli loop) jest co najmniej nieeleganckie. Wyświetlacz po wstępnej konfiguracji powinien działać poprawnie bez konieczności ciągłego wywoływania funkcji Setup. Jeśli taka konieczność występuje, świadczy o błędzie w montażu, konfiguracji fusów lub najprawdopodobniej programie.

Jak chodzi o ten konkretny kod, wywoływanie lcd.init() zajmuje ponad sekundę. W kodzie LiquidCrystal_I2C.cpp, linia 65 znajdziemy:

delay(1000);

Jest jeszcze kilka mniejszych opóźnień, więc wywołanie tej funkcji zajmuje wieki. Oznacza to, że program nie ma czasu właściwie na nic więcej.

Więc jeśli program ma tylko co sekundę wyświetlić napis na ekranie, to rozwiązanie się sprawdzi (chociaż z brzydkim miganiem). W każdym innym przypadku, program trzeba traktować jako niepoprawny.

Tak jako ciekawostkę podam tylko pewne odstępstwo od reguły inicjalizacji LCD. Wyświetlacze mają niemiłą cechę polegającą na zawieszaniu się od czasu do czasu. Najłatwiej zawiesić wyświetlacz wykonując testy ESD. W takiej sytuacji najczęściej pomaga reinicjalizacja - i może to być rozwiązanie jeśli urządzenie nie chce przejść badań na zgodność elektromagnetyczną, wszystko działa poprawnie, tylko zawartość ekranu znika po testach.

Jednak w tym przypadku proponowałbym inicjalizować LCD tylko raz na początku programu.

  • Lubię! 2

Sprawa wyjaśniona. Aż mi głupio ale hmm po prostu starannie przylutowałem przejściówkę i działa jak należy, bez problemów!

Temat do zamknięcia i jeszcze raz bardzo dziękuje wszystkim.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...