Gra elektroniczna Sudoku

Gra elektroniczna Sudoku
Pobierz PDF Download icon
Sudoku jest popularną zabawą, jednak przypomnijmy podstawowe zasady. Plansza składa się łącznie z 81 pól. W każdym z nich może znajdować się cyfra od 1 do 9. Naszym zadaniem jest zapełnienie planszy w taki sposób, aby we wszystkich poziomych wierszach, pionowych kolumnach jak i również wydzielonych kwadratach o wymiarach 3×3 pola wystąpiły wszystkie liczby (od 1 do 9) oczywiście - bez powtórzeń. Zaczynamy zawsze z częściowo uzupełnioną planszą i na jej podstawie uzupełniamy kolejne kratki. W pewnym sensie ilość zapełnionych początkowo pól definiuje poziom trudności planszy. Sposobów rozwiązywania jest bardzo dużo - można je znaleźć w Internecie. Rekomendacje: wciągająca gra elektroniczna, pasjonująca rozrywka umysłowa. Wykonana latem przyda się na długie, jesienne wieczory.

Schemat ideowy urządzenia pokazano na rysunku 1. Sercem gry jest 32-bitowy mikrokontroler STM32F030C8T6 z rdzeniem Cortex-M0, który jest taktowany przebiegiem o częstotliwości 48 MHz. Do osiągnięcia tej częstotliwości z kwarcu 8 MHz użyto generatora PLL (Phase Locked Loop).

Jako wyświetlacz zastosowano 2,2-calowy wyświetlacz graficzny TFT o rozdzielczości 240×320 pikseli ze sterownikiem ILI9341, komunikujący się za pomocą magistrali SPI. Umożliwia on wyświetlenie do 65 tys. kolorów. Rolę manipulatora pełni 5 przycisków ułożonych w „krzyżak”. Dodatkowo, wyprowadzony został sygnał zerowania (reset) mikrokontrolera.

Zasada działania

Po uruchomieniu układu (dołączeniu zasilania przez przewód USB lub dostępne goldpiny) na ekranie ujrzymy prostą animację powitalną – kilka komunikatów „SUDOKU STM” w różnych kolorach. Układ poprosi nas o wybranie numeru planszy (widzimy napis „Wybierz nr planszy!”). W pamięci znajduje się 10 zaprogramowanych wcześniej zestawów. Od strony kodu wygląda to tak, że w pamięci mamy 2 tablice dla każdej planszy – pierwsza z wartościami wyświetlanymi przy uruchomieniu, natomiast druga zawiera pełne rozwiązanie (listing 1). Obie mają po 81 elementów – kolejne wartości odpowiadają kolejnym polom.

Wyboru planszy dokonujemy przyciskami „w lewo”/„w prawo” i zatwierdzamy przyciskiem środkowym. Po rozpoczęciu zabawy możemy przemieszczać się „kursorem” (podświetlonym na żółto polem) strzałkami góra/dół/lewo/prawo, za pomocą „OK” przechodzimy do trybu edycji pola. Możemy wtedy wybrać liczbę do wpisania lub skorzystać z alternatywnej funkcji strzałki „dół”. Gdy ją wciśniemy dwa razy wykasujemy zawartość wybranej kratki. Również przycisk „góra” ma alternatywne funkcje- podwójny klik sprawdzi poprawność planszy – poprawnie wpisane liczby podświetlą się na zielono, natomiast błędne na czerwono, natomiast poczwórne wciśnięcie przerwie aktywną grę oraz uruchomi wybór nowej planszy (można wybrać tą samą i uzyskać wtedy restart).

Dzięki wykorzystaniu metody callbacków w kodzie do obsługi przycisków odseparowano logikę gry od reszty i została wklejona do osobnych plików. Umożliwia to w łatwy sposób zmianę sterowania np. na pilota IR (diodę IR można podpiąć do wyprowadzeń i z poziomu jej obsługi wywołać odpowiednią funkcję) i zwiększa czytelność kodu.

Dodatkowe możliwości układu

Układ może służyć w funkcji nieskomplikowanej platformy testowej dla różnych projektów na STM32F030C8T6. Większość nieużywanych pinów wyprowadzono na złącze kątowe JP3, a ich nazwy opisano na płytce drukowanej. Można dzięki temu bez problemu dołączyć od lewej strony inną płytkę z potrzebnymi układami lub przyłączyć je przewodami. Dodatkowo, do mikrokontrolera są doprowadzone także wyprowadzenia gniazda na kartę SD znajdujące się na module z wyświetlaczem. Przyda się to przy zapisywaniu bitmap do wyświetlenia na LCD, które z pewnością nie zmieszczą się na LCD (pomimo pamięci aż 64 kB).

Montaż i uruchomienie

Schemat montażowy gry Sudoku pokazano na rysunku 2. Największą trudność może sprawić zamontowanie mikrokontrolera w obudowie LQFP48. Do tej czynności polecam użyć grotu typu mini-fala. Reszta elementów jest co prawda w obudowach SMD, ale jest to rozmiar 0805 lub SMC „A” dla kondensatorów, więc dość spory jak na dzisiejsze standardy.

Wyświetlacz jest montowany na dwóch listwach goldpin (9-pinowej i 4-pinowej). Umożliwia to jego stabilne ułożenie, więc nie potrzeba dodatkowych przykręcanych dystansów, jak ma to miejsce w wyświetlaczu LCD ze złączami po jednej stronie. Przy ich lutowaniu dobrze mieć je nałożone na wyświetlacz, aby mieć całkowitą pewność, ze będą prosto. Piny programujące zostały wyprowadzone na złącze JP4 i odpowiednio opisane na płytce drukowanej. Jako programator można wykorzystać ST-Link wbudowany we wszystkie płytki developerskie typu Discovery lub Nucleo.

Przemek Michalak
thedambo1@gmail.com

DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik październik 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio październik 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje październik 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna październik 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich wrzesień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów