Skocz do zawartości

LCD 16x2 na I2C - wyświetla tylko jedną "literkę"


Wrona

Pomocna odpowiedź

Dotychczas korzystałem z ekranów LCD podłączanych do Arduino "klasycznie" czyli na kilku przewodach. Postanowiłem więc skorzystać z konwertera by podłączyć ekran poprzez I2C. Zakupiłem nowy wyświetlacz wraz z wbudowanym konwerterem w Botlandzie i na próbę wgrałem przykład z ich strony https://botland.com.pl/pl/content/81-lcd-2x16-przy-pomocy-arduino-i-lcm1602-po-i2c-. W efekcie nic nie działało, więc ten fragment: 

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 

zamieniłem na:

LiquidCrystal_I2C lcd(0x3F,16,2);  

Udało się wgrać, ale na ekranie wyświetla się tylko jeden pierwszy znak  czyi np. tylko "H" ze słowa "Hallo". No chyba że, dla każdej litery słowa ustawiam osobno kursor to w taki sposób po jednej literce pojawi się całe słowo, ale przecież nie o to chodzi  w tym wyświetlaczu.

Przypuszczam że problemem jest ta deklaracja ustawień LCD z tym nieszczęsnym POSITIVE. Pomoże ktoś przebrnąć przez ten kłopot?

Pozdrowienia i z góry dziękuje.

 

 

 

 

Link do komentarza
Share on other sites

8 minut temu, Wrona napisał:

Przypuszczam że problemem jest ta deklaracja ustawień LCD z tym nieszczęsnym POSITIVE.

Raczej wątpię - u mnie takie ustawienie (z dokładnością do adresu konwertera) działa.

Skąd ten adres 0x3f? Standardowo jest 0x27.

 

 

Link do komentarza
Share on other sites

7 minut temu, ethanak napisał:

Skąd ten adres 0x3f? Standardowo jest 0x27.

Adres 0x3F podał mi skaner adresów. Gdy wpisze 0x27 to wyświetlacz jest martwy.

 

Link do komentarza
Share on other sites

0x3F i 0x27 to popularne adresy LCD na I2C. Szybciej by było coś powiedzieć, gdybyś po prostu pokazał kod programu. Są funkcje do wysłania jednego znaku, są do wysyłania tekstu. Ta pierwsza jest zwykle wykorzystywana w drugiej. 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)
53 minuty temu, kaczakat napisał:

Szybciej by było coś powiedzieć, gdybyś po prostu pokazał kod programu. 

Tak jak pisałem zacząłem od przykładowego kodu ze strony https://botland.com.pl/pl/content/81-lcd-2x16-przy-pomocy-arduino-i-lcm1602-po-i2c- Najprostszy jaki jest, a z innymi to samo czyli wyświetla się tylko pierwsza litera ciągu znaków.

 

Edytowano przez Wrona
Błędna kropka na końcu adresu www
Link do komentarza
Share on other sites

8 minut temu, kaczakat napisał:

gdybyś po prostu pokazał kod programu

Wystarczy że podał link, prawda? Fakt, z kodem by było wygodniej (zawsze kopiując z netu można jakiegoś babola zrobić).

A o tym 0x3f właśnie się dowiedziałem, dobrze wiedzieć.

Co nie zmienia faktu, że nie mam pomysłu na to co tam się stało 😞

Link do komentarza
Share on other sites

34 minuty temu, ethanak napisał:

Wystarczy że podał link, prawda?

Link u mnie nie działa, a program nie dzieła u autora wątku. Może więc warto pokazać ten problematyczny program?

Link do komentarza
Share on other sites

6 minut temu, Belferek napisał:

Link u mnie nie działa, a program nie dzieła u autora wątku. Może więc warto pokazać ten problematyczny program?

#include <Wire.h>   // standardowa biblioteka Arduino
#include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD
 
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Ustawienie adresu ukladu na 0x27
 
 
void setup()  
{
  lcd.begin(16,2);   // Inicjalizacja LCD 2x16
  
  lcd.backlight(); // zalaczenie podwietlenia 
  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
  lcd.print("Hello, world!");
  delay(500);
  lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
  lcd.print("BOTLAND.com.pl");
 
}
 
void loop() 
{
   lcd.backlight(); // zalaczenie podswietlenia
   delay(5000);
lcd.noBacklight(); // wylaczenie podswietlenia
   delay(5000);
}

 

Link do komentarza
Share on other sites

(edytowany)
2 godziny temu, kaczakat napisał:

Są funkcje do wysłania jednego znaku, są do wysyłania tekstu. Ta pierwsza jest zwykle wykorzystywana w drugiej. 

Kierunek wydaje się być słuszny tylko gdzie poprawić i co? Mam np. taki prosty kod:

#include <LiquidCrystal_I2C.h>

int i = 555;
String j = "OLA";

LiquidCrystal_I2C lcd(0x3F,16,2);  

void setup()
{
	lcd.init();                      
	lcd.backlight();
    lcd.clear();
    lcd.print(i);
    delay(1000);
    lcd.clear();
    lcd.print(j);
    delay(1000);
    lcd.clear();
    lcd.print("Rabarbar");
    delay(1000);
}

void loop()
{
	for (int a=0; a <16; a++)
	{
		lcd.clear();
		lcd.setCursor(a,0);
		lcd.print(i);
		lcd.setCursor(a,1);
		lcd.print(j);
		delay(1000);
	}
}

Najpierw w pierwszej kolumnie pierwszego wiersza zobaczę kolejno pojedyncze znaki "5", "0"; "R". Potem będzie "5" a pod nim "0" przesuwające się ładnie z lewa na prawo. Zawsze jedna pierwsza literka a reszty znaków brak.

1 godzinę temu, Belferek napisał:

Może spróbuj skorzystać z porad tam zawartych?

Już kilka godzin temu próbowałem zrobić porządek z bibliotekami. I teraz znów to zrobiłem czyli instalacje środowiska Arduino na nowo. Nic się nie zmienia czyli nadal jestem gościem z jedna literką 🙂

 

EDIT:

Okazało się że gdzieś na dysku (i to innym niż ten gdzie zainstalowana Arduino) jest folder z bibliotekami. Były tam stare biblioteki do wyświetlacza i całość się "gryzła". Skasowanie tego zapomnianego folderu rozwiązało problem.

 

 

Edytowano przez Wrona
Znalazłem rozwiązanie problemu
  • Lubię! 1
Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.