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

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2017
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów