12-02-2024, 11:29
Nie wiem jak moge zrobic proste przemijanie teksty na wyswietlaczu LCD 2x16 z konwerterem I2C .
Ocena wątku:
Przemijanie dlugiego tekstu dla wyswietlacz LCD z konwerterem !2C
|
(12-02-2024, 22:51)kaczakat napisał(a): Pokaż w jaki sposób wyświetlasz tekst, może wstawiasz sobie w kod delay(1000) i żaden pomysł nie będzie miał sensu.okej ja początkujacy (9 latek) i korzystam jal marazie z delay a na millis jeszcze przyjdzie czas
Nieważne, zobaczyłem Twój kod do LCD w wątku wcześniej. Jest delay 1000, naucz się pisać kod bez delay, używać millis, inaczej to nie będzie miało sensu. Znajdź w moich poprzednich postach funkcję czas(). Uc nie może robić sobie pauz na 1000ms, to może tak wyglądać dla obserwatora z zewnątrz, ale w programie trzeba robić różne rzeczy w odstępach us, inaczej to będzie wyglądało jakby się zawiesił.
W Arduino masz gotowe funkcje do skrolowania, w każdej bibliotece masz przykłady, czasami nie wszystkie funkcje są tu zaprezentowane, trzeba zajrzeć do pliku keywords.txt, do plików c++ i h.
(12-02-2024, 21:42)oscarX napisał(a): Nie wiem o co dokładnie chodzi - ale jeśli chodzi o przewijanie napisu to sterownik HD44780, który obsługuje te wyświetlacze posiada tryb w którym adres wpisywania się zwiększa - czyli takie normalne wypisywanie kolejnych znaków, oraz tryb w którym adres wpisywania pozostaje stały, a zawartość wyświetlacza jest przesuwana w bok. Wtedy automagicznie można pisać dowolnie długie teksty, a na wyświetlaczu otrzymujemy przesuwający się tekst.no fajnie tylko nie do konca wiem jak to mam zrobic ale bardzo dziekuje za odpoweidz
Oczywiście można też bawić się programowo, ale na pewno będzie gorzej wyglądać (miganie, odrysowania itp).
Nie wiem, czy i ewentualnie która biblioteka to obsługuje.
(12-02-2024, 11:29)SpalonaATmega napisał(a): Nie wiem jak moge zrobic proste przemijanie teksty na wyswietlaczu LCD 2x16 z konwerterem I2C .masz młody, baw się :-)
#include <LiquidCrystal_I2C.h>
int totalColumns = 16;
int totalRows = 2;
LiquidCrystal_I2C lcd(0x27, totalColumns, totalRows);
String staticMessage = "I2C LCD";
String scrollingMessage = "Scrollowany napis dowolnej wielkosci";
void scrollMessage(int row, String message, int delayTime, int totalColumns)
{
for (int i=0; i < totalColumns; i++)
{
message = " " + message;
}
message = message + " ";
for (int position = 0; position < message.length(); position++)
{
lcd.setCursor(0, row);
lcd.print(message.substring(position, position + totalColumns));
delay(delayTime);
}
}
void setup()
{
lcd.init();
lcd.backlight();
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print(staticMessage);
scrollMessage(1, scrollingMessage, 250, totalColumns);
}
(14-02-2024, 07:49)powerTGS napisał(a):Dziekuje ci bardzo i calej reszcie co odpowiedziala(12-02-2024, 11:29)SpalonaATmega napisał(a): Nie wiem jak moge zrobic proste przemijanie teksty na wyswietlaczu LCD 2x16 z konwerterem I2C .masz młody, baw się :-)
Kod:#include <LiquidCrystal_I2C.h>
int totalColumns = 16;
int totalRows = 2;
LiquidCrystal_I2C lcd(0x27, totalColumns, totalRows);
String staticMessage = "I2C LCD";
String scrollingMessage = "Scrollowany napis dowolnej wielkosci";
void scrollMessage(int row, String message, int delayTime, int totalColumns)
{
for (int i=0; i < totalColumns; i++)
{
message = " " + message;
}
message = message + " ";
for (int position = 0; position < message.length(); position++)
{
lcd.setCursor(0, row);
lcd.print(message.substring(position, position + totalColumns));
delay(delayTime);
}
}
void setup()
{
lcd.init();
lcd.backlight();
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print(staticMessage);
scrollMessage(1, scrollingMessage, 250, totalColumns);
}