- Mikrokontroler ATmega8A, wyświetlacz z kontrolerem PCD8544.
- Zasilanie 5…9 V DC/maks. 100 mA.
- Interfejs użytkownika złożony z wyświetlacza i 5 przycisków.
- Platforma, która może być użyta również do innych zastosowań.
- Programowanie za pomocą 6-pinowego złącza ISP.
Schemat ideowy elektronicznej gry „Snake” pokazano na rysunku 1. Jak można zauważyć, jest to nieskomplikowane urządzenie zbudowane z użyciem mikrokontrolera ATmega8, wyświetlacza graficznego ze sterownikiem PCD8544 (znanym z telefonów komórkowych) oraz 5 przycisków wraz z wyświetlaczem pełniących funkcję interfejsu użytkownika. Za ich pomocą sterujemy wężem „pełzającym” na wyświetlaczu. Naszym celem jest „zjadanie” owoców, od których – co naturalne – wąż rośnie. Trzeba jednocześnie uważać, aby nie zjeść przy tym własnego ogona, bo od tego wąż „umiera”. Jedynym przeciwnikiem węża są jego rozmiary, ponieważ może on bezproblemowo uciekać poza ekran wyświetlacza. Trzeb jednak mieć przy tym na uwadze, że jednocześnie głowa węża pojawi się po przeciwnej stronie i uważać, aby wąż nie „zjadł” przez to własnego ogona.
Zasada działania
Po uruchomieniu urządzenia wyświetla się ekran startowy z logo gry i animacją węża machającego ogonem i mrugającego do nas. Zabawa zaczyna się po wciśnięciu przycisku „OK”, który ma drugą funkcję – uruchamia grę oraz włącza w trakcie jej działania.
Po uruchomieniu gry na wyświetlaczu jest pokazywany jedynie wąż i owoc, który musimy „zjeść”. W przypadku zderzenia się z częścią naszego węża przegrywamy – ekran miga kilkakrotnie i przechodzi do animacji startowej.
Pole gry jest podzielone na „segmenty” o wymiarach 6×6 pikseli. Wyświetlacz ma rozdzielczość 84×48 piksele, więc mamy 14 segmentów w poziomie i 8 w pionie. Dlatego też nasz wąż może maksymalnie składać się ze 112 segmentów. Jeśli uda nam się do tego doprowadzić, a nie jest to wcale łatwym zadaniem, to taki wąż zapełni cały ekran i gra się zakończy.
Program podzielono na sekcje: obsługi przycisków, logiki gry oraz wyświetlania. Rozmiar planszy, po której porusza się wąż, wielkość segmentów – wszystko jest definiowane za pomocą makr, dzięki czemu można przenieść grę na inną platformę, zmieniając jedynie funkcje związane z obsługą wyświetlania.
Można pokusić się o uruchomienie tego np. na kolorowym wyświetlaczu z różnymi obrazkami, zamiast pikselowych segmentów.
Inne wykorzystanie układu
Mimo że na płytce przewidziano miejsce dla rezonatora kwarcowego o częstotliwości 16 MHz, to zrobiono to niejako „na wyrost”, dla potrzeb innych gier lub innych aplikacji, na przykład, przy użyciu płytki w roli zestawu uruchomieniowego lub testowego. Z tego samego powodu dodano również złącze JP1, na którym są wyprowadzone nieużywane piny mikrokontrolera. Ułatwia to zastosowanie urządzenia jako bazy do innych projektów wykorzystujących wyświetlacz graficzny oraz przyciski. Może to być panel do sterowania jakimś innym urządzeniem.
Opisywany program działa przy użyciu taktowania rdzenia za pomocą wbudowanego oscylatora RC o częstotliwości 8 MHz – większa częstotliwość taktowania nie jest potrzebna.
Montaż i uruchomienie
Schemat montażowy gry elektronicznej „Snake” zamieszczono na rysunku 2. Montaż jest typowy i nie powinien nastręczać większych trudności. Problematyczne może być jedynie przylutowanie mikrokontrolera ATmega mającego obudowę TQFP32. Wyprowadzenia – piny wyświetlacza należy lutować po jego zamontowaniu. Jeśli zrobimy to wcześniej, to jest duże prawdopodobieństwo, że zrobimy to krzywo, a wyświetlacz nie będzie pasował idealnie do tulei dystansowych na płytce.
W handlu są dostępne różne wersje wyświetlaczy z kontrolerem PCD8544. Przed zakupem warto sprawdzić kolejność wyprowadzeń, czy jest ona zgodna ze schematem.
Do programowania jest używane 6-pinowe AVR-ISP, zgodne ze standardem wprowadzonym przez Atmela. Aby zmienić oprogramowanie lub samodzielnie zaprogramować mikrokontroler, musimy mieć także programator zgodny ze standardem CMOS 3,3 V, aby nie uszkodzić wyświetlacza. Wyprowadzenia do komunikacji są współdzielone z programatorem. Jeśli dysponujemy programatorem pracującym poprawnie jedynie przy napięciu 5 V, to na czas programowania należy odłączyć zasilanie za pomocą USB oraz wyjąć wyświetlacz. Sam mikrokontroler może pracować zarówno przy zasilaniu napięciem 5 V, jak i 3,3 V.
Przemek Michalak
thedambo1@gmail.com
- R1: 10 kΩ
- C1, C9: 22 µF (SMD „A”)
- C2, C4, C10: 100 nF (SMD 0805)
- C5, C6: 22 pF (SMD 0805)
- C8: 220 µF (SMD „C”)
- IC1: ATmega8A (TQFP32)
- IC2: LM1117-3.3
- Q1: 16 MHz (rezonator kwarcowy – opis w tekście)
- CN1: gniazdo USB micro
- JP2: złącze kątowe goldpin męskie 2×3
- JP1: złącze kątowe goldpin męskie 2×5
- Listwa bez oznaczenia: listwa goldpin żeńska 1×8
- 4 słupki dystansowe M2/12
- RESET, UP, DOWN, LEFT, RIGHT, OK – przyciski TACT
- Wyświetlacz z kontrolerem PCD8544