. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
LCD bludiště
26. května 2008 | kgsws | LCD bludiště | Komentářů: 16  
LCD bludiste

LCD bludiště

Elektronická hra bludiště postavená na procesoru PIC a čtyřřádkovém textovém displeji. Umožňuje tvorbu vlastní mapy a následné sbírání klíčů, otevírání zamčených dveří a vůbec spoustu zábavy.

Jde o velice jednoduché zapojení, ale trochu složitější program. Program používá vnitřní paměť EEPROM pro uložení mapy, takže mapa zůstává uložena i po odpojení napájení.
Program obsahuje 2 možnosti: hraní mapy a úpravu mapy. Pro hraní se používají všechny čtyři šipky, tak jak jsou. Pro editaci mapy se používají šipky doprava + doleva pro pohyb, šipka dolů pro výběr objektu a šipka nahoru pro umístění aktuálního objektu.
Objekty jsou: nic (prázdný prostor), zeď, zeď na klíč (2 druhy), klíč (2 druhy) a dveře (jako cíl). Po naprogramování procesoru PIC bude mapa prázdná, takže je potřeba napřed nějakou vymyslet a až poté začít hrát.

Na následujícím obrázku je schéma zapojení:


Obr. 1: Schéma zapojení

Jak to celé vzniklo:
Dostal se mi do rukou LCD displej 16x4 znaků s klasickým řadičem a tak sem ho chtěl samozřejmě hned otestovat. Měl jsem 2 možnosti - z datasheetu nastudovat časové diagramy, nebo se podívat na internet po tom, co už někdo udělal a zkusit spíš to. Narazil sem na tento kód
bludiště, vyzkoušel jsem ho, ale nefungoval. Vlastně ani nevím jak, ale napadlo mě přepsat kód tak, aby datová komunikace probíhala na PORTB a RS + Enable na PORTA. Tím se mi to povedlo rozchodit! Zbývalo již jen upravit pár věcí, především abych mohl ovládat všechny 4 řádky, a ne jen 2 jako autor původního kódu.
Jako první pokusy jsem vypisoval text a to fungovalo dobře. Pak mě napadlo odzkoušet 8 vlastních znaků, jenže v tom kódě na ně nebyla podpora. Když jsem prozkoumal datasheety, zjistil jsem jak to udělat. Slouží k tomu funkce LCDCH1 ve zdrojovém kódu na 146 řádku.


Obr. 2: Funkční prototyp

Programový princip hry:
Tento pricip se dá použít do všech programovacích jazyků, nejen na jednočip. Na začátku je pole o dané velikosti. Celé pole se vykreslí na zobrazovací jednotku (LCD displej). Následuje poloha hráče (v tomto případě jako jedno číslo odkazující do interní pamětu displeje na obrázek panáčka). Když se má panáček pohnout nahoru, odečte se od jeho polohy číslo 16 (protože jeden řádek má 16 znaků). Naopak, když se má panáček pohnout dolů, číslo 16 se přičte. Při pohybu doprava, doleva se samozřejmě počítá jen s číslem jedna.
Zároveň se u každého pohybu musí kontrolovat, jestli je vůbec možné ho provést. Jako první se kontroluje poloha, aby hráč "nevyšel" z hracího pole. To znamená na každém řádku a každém sloupci, podle jeho předchozí polohy. Potom se jeho nová poloha porovnává s pamětí, pokud je na tomto místě v paměti zeď, pohyb se neumožní a hráč zůstane kde byl. Pokud je tam zeď na klíč, musí se zkontrolovat, jestli má hráč ten správný klíč a pokud ne tak se pohyb opět neumožní. Pokud je na nové poloze klíč, změní se v paměti číslo, aby bylo jasné, že ho zvednul.
Je-li pohyb úspěšný, jeho předchozí poloha se na zobrazovací jednotce (ne v paměti!) nahradí prázdným místem, aby za sebou nedělal stopu.

Dva obrázky ze hry:


Obr. 3: Úvodní obrazovka
 
Obr. 4: Hra

Zde si můžete prohlédnout video ze hry:

Get the Flash Player to see this player.
LCDbludiste.flv
70s & 2530kB

Poznámka :
Také jsem si zkusil zapojení postavit na kontaktním poli a mohu potvrdit, že je funkční. Bohužel jsem však měl k dispozici pouze displej 4x20 znaků a ne předepsaný 4x16 znaků, takže jsem toho ze hry příliš neměl:


Obr. 4: Verze Pandatronu

Samozřejmě nezapomeňte dát na napájecí piny procesoru 100nF kondenzátor.

Seznam soucastek
R              10k  4x
R              8k2
Trimr          2k2
IO             PIC16F628 / PIC16F628A
LCD            4x16 znaku
Tlacitka       jakekoliv spinaci  4x

Autor: kgsws@seznam.cz

Odkazy & Download:
Firmware k obvodu PIC16F628, nebo PIC16F628A







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (28):

Zobrazit starší 30 dnů (28)...

host
28. Dne 28. 06. 2012 v 03:48 zaslal host
super
Opravdu super funguje hned jak jsem tuto stranku spatril hned jsem se pustil do prace.


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
PU232F - převodník USB-UART, modul
Modul s obvodem CP2102 od Silicon Labs - převodník USB-UART pro vývoj a malosériovou výrobu.
Skladem od 290 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007