Skocz do zawartości

LCD 2x16 Animacje


soban

Pomocna odpowiedź

Witam wszystkich.

Zaczynam zabawę z wyświetlaczem LCD. Bawiłem się już kontrastem itp. tak więc teraz przyszła pora na animację. Nigdzie nie mogę znaleźć poradnika odnośnie tej funkcji. Dowiedziałem się tylko dzięki własnym kombinacjom, że istnieje funkcja dodawania obiektów w BASCOM-AVR. Niżej prezentuje podstawowy kod którym się posługuję od samego początku:

$regfile = "m128def.dat"


$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Porte.2 , Rs = Porte.3

Cls
Do
Locate 1 , 1
Lcd "LCD 2x16 Nauka"
Locate 2 , 1
Lcd ""
Loop
End

Tak więc wracając do funkcji tworzenia obiektów postanowiłem zrobić gwiazdę, słońce jak kto woli która się obraca (czyt. promienie się obracają). Dostałem 2 kody na 2 różne pozycje tej figury:

Deflcdchar [x],32,32,4,4,31,4,4,32' replace [x] with number (0-7)
Deflcdchar [x],32,32,17,10,4,10,17,32' replace [x] with number (0-7)

Proszę o pomoc odnośnie programu który umożliwiłby mi wstawienie tych obiektów oraz sposobu dzięki któremu ta gwiazdka obracałaby się w jednym miejscu.

Za wszelką pomoc z góry dziękuję.

PS: Program w Bascomie

Link do komentarza
Share on other sites

$regfile = "m128def.dat"


$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Porte.2 , Rs = Porte.3

Cls
Do
Lcd chr(0)
waitms 100
lcd chr(1)
waitms 100

Deflcdchar 0,32,32,4,4,31,4,4,32' replace [x] with number (0-7)
Deflcdchar 1,32,32,17,10,4,10,17,32' replace [x] with number (0-7)
Loop
End

obrazki zrobione przez to urządzenie bacomowskie wczytujemy lcd chr(x) tam gdzie x to liczba którą ustawiłeś w deflcdchar

Mam nadzieję że o to chodziło i w miarę jasno się wyraziłem.

Link do komentarza
Share on other sites

Robomaniak to co wpisałeś daje jeden symbol za drugim a mi chodzi o to żeby te znaki były w jednej kratce i żeby zmieniały się np. co pół sekundy żeby utworzyć animację taką. W sensie raz jeden raz drugi, raz jeden raz drugi w pętli

No chyba, że Cię źle zrozumiałem zrobiłem coś takiego

Kod:

   $regfile = "m128def.dat"


   $crystal = 8000000

   Config Lcd = 16 * 2
   Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Porte.2 , Rs = Porte.3

   Cls
   Do
   Lcd Chr(0)
   waitms 100
   Lcd Chr(1)
   waitms 100

   Deflcdchar 0 , 32 , 32 , 4 , 4 , 31 , 4 , 4 , 32        ' replace [0] with number (0-7)
   Deflcdchar 1 , 32 , 32 , 17 , 10 , 4 , 10 , 17 , 32     ' replace [1] with number (0-7)
   Loop
   End
Link do komentarza
Share on other sites

aha czyli się nie zrozumieliśmy

$regfile = "m128def.dat"


$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Porte.2 , Rs = Porte.3

Cls
Do
locate 1 ,1
Lcd chr(0)
waitms 100
locate 1, 1
lcd chr(1)
waitms 100

Deflcdchar 0,32,32,4,4,31,4,4,32' replace [x] with number (0-7)
Deflcdchar 1,32,32,17,10,4,10,17,32' replace [x] with number (0-7)
Loop
End

teraz powinno zadziałać.

  • Lubię! 1
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

Dzięki wielkie Piwo i pomógł 4you a jeśli jesteś taki dobry w te LCD to wiesz może jak zrobić żeby się raz zakręciła i przeskoczyła w kolejną kratkę i tak dalej i tak dalej???

PS: Może zrobisz jakiś tutek do LCD? Bo nie ma jeszcze takiego a przynajmniej ja nie znalazłem, gdzie pokazane by były różne kombinacje z przesuwaniem, animacjami nie wiem jakimiś takimi rzeczami które można by było dalej rozwijać według własnego gustu.

Link do komentarza
Share on other sites

To podpowiedz mi jeszcze tylko tyle czemu to nie chodzi płynnie tylko robi 4 znaki, chwila przerwy, 4 znaki, znowu przerwa itd. Jak się pozbyć tej przerwy?

$regfile = "m128def.dat"


$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Porte.2 , Rs = Porte.3

Cls

Do
lcd chr(1)
Waitms 30
locate 1, 1
Lcd Chr(2)
Waitms 30
locate 1, 1
Lcd Chr(3)
Waitms 30
locate 1, 1
Lcd Chr(4)
Waitms 30
Locate 1 , 1

Deflcdchar 1 , 32 , 32 , 31 , 17 , 23 , 16 , 31 , 32        ' replace [x] with number (0-7)
Deflcdchar 2 , 32 , 32 , 29 , 21 , 21 , 17 , 31 , 32        ' replace [x] with number (0-7)
Deflcdchar 3 , 32 , 32 , 31 , 1 , 29 , 17 , 31 , 32         ' replace [x] with number (0-7)
Deflcdchar 4 , 32 , 32 , 31 , 17 , 21 , 21 , 23 , 32        ' replace [x] with number (0-7)


Loop
End

[ Dodano: 20-06-2011, 21:00 ]

Wytłumaczy mi to ktoś? Byłbym mega wdzięczny

Link do komentarza
Share on other sites

Może daj

Deflcdchar 1 , 32 , 32 , 31 , 17 , 23 , 16 , 31 , 32        ' replace [x] with number (0-7)
Deflcdchar 2 , 32 , 32 , 29 , 21 , 21 , 17 , 31 , 32        ' replace [x] with number (0-7)
Deflcdchar 3 , 32 , 32 , 31 , 1 , 29 , 17 , 31 , 32         ' replace [x] with number (0-7)
Deflcdchar 4 , 32 , 32 , 31 , 17 , 21 , 21 , 23 , 32        ' replace [x] with number (0-7) 

przed pętlą do..loop.

Link do komentarza
Share on other sites

Wymyśliłem coś takiego:

$regfile = "m128def.dat"


$crystal = 4000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Porte.2 , Rs = Porte.3
Dim Jman As Byte
Cursor Off

Deflcdchar 0 , 32 , 32 , 32 , 4 , 14 , 31 , 14 , 14         ' replace [x] with number (0-7)
Deflcdchar 1 , 32 , 32 , 4 , 14 , 31 , 14 , 14 , 32         ' replace [x] with number (0-7)
Deflcdchar 2 , 32 , 4 , 14 , 31 , 14 , 14 , 32 , 32         ' replace [x] with number (0-7)
Deflcdchar 3 , 4 , 14 , 31 , 14 , 14 , 32 , 32 , 32         ' replace [x] with number (0-7)
Deflcdchar 4 , 14 , 31 , 14 , 14 , 32 , 32 , 32 , 32        ' replace [x] with number (0-7)
Deflcdchar 5 , 31 , 14 , 14 , 32 , 32 , 32 , 32 , 32        ' replace [x] with number (0-7)
Deflcdchar 6 , 14 , 14 , 32 , 32 , 32 , 32 , 32 , 32        ' replace [x] with number (0-7)
Deflcdchar 7 , 14 , 32 , 32 , 32 , 32 , 32 , 32 , 32        ' replace [x] with number (0-7)

Cls


Do

 For Jman = 0 To 7 Step 1
   Waitms 50
   Locate 2 , 7
   Lcd Chr(jman)
   Next
     For Jman = 6 To 0 Step -1
   Waitms 50
   Locate 2 , 7
   Lcd Chr(jman)
   Next

Loop

End

No i teraz mam problem bo nie wiem np jak dodać drugi taki sam element tak aby chodził równo z tym 1 a nie czekał aż 1 skończy pracę i dopiero zaczął swój ruch.

Link do komentarza
Share on other sites

BASCOM akurat nie jest najszczęśliwszym rozwiązaniem do robienia animacji. A już szczególnie na Alfanumerycznym LCD.

Używana przez was instrukcja, DefLCDchar zwyczajnie nie została do tego celu pomyślana. Ma ona jedynie umożliwić wyświetlanie nietypowych znaków a nie tworzenie animacji. Zresztą zalecane jest użycie po niej instrukcji CLS co praktycznie skreśla ją w tworzeniu animacji.

Wyświetlacze kompatybilne z standardem Hitachi posiadają pamięć CG-RAM, gdzie można zdefiniować 8 znaków użytkownika. Maja one kody od 0 do 7 (oraz 8 - 15 zdublowane przyp. tłumacza). Znaki te można wyświetlać używając instrukcji LCD w połączeniu z funkcja CHR().

W środowisko BASCOM wbudowano narzędzie projektowe dla tych znaków. Znajduje się ono w menu: Tools | Character Designer.

Uwaga! Po instrukcjach DEFLCDCHAR powinna występować instrukcja CLS.

Aby płynnie coś animować należało by stworzyć własne procedury, operujące bezpośrednio na CGRAM wyświetlacza.

Link do komentarza
Share on other sites

No ok stworzyłem najprostszą strzałkę którą dałem w kodzie wyżej a chciałbym np zrobić dwie takie strzałki jedna dajmy w drugiej linii na 5miejscu a druga w tej samej linii na miejscu 8 mają się ruszać identycznie jedna z drugą to jak mam o zrobić? Pomożecie?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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