Gra pamięciowa - odtwarzanie sekwencji

Gra pamięciowa - odtwarzanie sekwencji

Gry i zabawki towarzyszą nam od pierwszych tygodni życia. Ich główną rolą jest rozwijanie naszych zdolności. Jedną z nich jest nasza pamięć, którą powinniśmy ćwiczyć bezustannie na różne sposoby. Ten nieskomplikowany układ może nam w tym pomóc. Zwarta konstrukcja pozwala na trzymanie tej gry przy sobie – w plecaku, schowku samochodowym albo w torbie.

Podstawowe parametry:
  • załączanie generowanej losowo sekwencji diod LED (jednej z czterech),
  • wydłużanie sekwencji o jeden krok po każdej w pełni prawidłowej odpowiedzi,
  • możliwość regulacji tempa gry, czyli czasu załączania się kolejnych diod LED,
  • wprowadzanie sekwencji poprzez wciskanie dużych przycisków,
  • automatyczne przejście do uśpienia po około 10 s od ostatniej akcji użytkownika,
  • pobór prądu około 120 nA w stanie uśpienia, 850 μA podczas oczekiwania i do 5 mA podczas wyświetlania,
  • zasilanie napięciem stałym 1,8...5 V,
  • wbudowane gniazdo baterii CR2032.

Nasza pamięć może zaskakiwać swoją pojemnością przez wiele lat, o ile regularnie jej używamy. W tym celu powstało wiele gier i zabaw, które wymagają jej wysilania. Kojarzenie symboli na wyłożonych wcześniej kartach to tylko jedna z możliwości. Część z nich wymaga obecności drugiej osoby, co bywa problematyczne. Na szczęście, pomóc nam może elektronika, która będzie z matematyczną precyzją podchodzić do udzielanych odpowiedzi.

Ta niewielka gra ma formę podręcznej konsoli, obsługiwanej obiema dłońmi, na kształt znanych przenośnych konsol do gier. Jej obsługa jest bardzo prosta: po włączeniu zaczyna pokazywać sekwencję załączających się diod. Zaczyna się zawsze od jednej diody, po czym czeka na wciśnięcie odpowiadającego jej przycisku. Jeżeli odpowiedź jest prawidłowa, układ wydłuża sekwencję – poprzednio załączona dioda jest wskazywana ponownie, po czym dokładana jest kolejna. Jakikolwiek błąd powoduje powrót do początku.

W ćwiczeniu pamięci pomaga fakt, że sekwencje są generowane całkowicie losowo. Prawdopodobieństwo dodania określonej diody (jednej spośród czterech) wynosi 25%. Nie sposób zatem nauczyć się kolejnych kroków sekwencji, ponieważ po przegranej jest ona budowana całkowicie od nowa.

Budowa i działanie

Schemat ideowy omawianego urządzenia znajduje się na rysunku 1. Głównym komponentem sterującym pracą układu jest mikrokontroler ATmega88PA-PU z 8-bitowym rdzeniem AVR. Ma wystarczającą liczbę konfigurowalnych wyprowadzeń i może pracować z napięciem zasilania już od 1,8 V. Przez większość czasu znajduje się w stanie uśpienia, z którego wybudza go przerwanie od zmiany stanu na wyprowadzeniu PD2. Nie realizuje zadań krytycznych czasowo, wobec czego częstotliwość zegara jest stabilizowana przez wbudowany układ oscylatora RC. Rezystory zawarte w drabince RN1 podciągają wejścia służące programowaniu ISP, w tym wejście zerujące, do dodatniego potencjału zasilania, co zmniejsza ryzyko nieprawidłowego zadziałania układu spowodowane ładunkami elektrostatycznymi lub zakłóceniami elektromagnetycznymi.

Rysunek 1. Schemat ideowy gry pamięciowej

W układzie znajduje się pięć przycisków monostabilnych. Cztery z nich – S1...S4 odpowiadają diodom LED, które wskazują sekwencję do zapamiętania, a S5 służy do uruchamiania gry. Wewnętrzne rezystory podciągające mikrokontrolera zostały połączone równolegle z zewnętrznymi R1...R5 co zwiększa pewność prawidłowego zadziałania układu w przypadku np. dotknięcia palcem ścieżki na powierzchni płytki drukowanej.

Cztery diody LED1...LED4 wskazują użytkownikowi, który przycisk powinien nacisnąć aby odtwarzać sekwencję z pamięci oraz potwierdzają przyjęcie wciśnięcia. Rezystory ograniczają ich prąd do około 5 mA (przy zasilaniu napięciem 3 V z baterii CR2032) co zapewnia dostateczną jasność nawet w słoneczny dzień. Piąta, dwukolorowa dioda LED5 wskazuje stan gry: pokazywanie sekwencji, oczekiwanie na wciśnięcie przycisku, sukces (prawidłowe powtórzenie całej sekwencji) lub błąd.

Wbudowany w mikrokontroler przetwornik analogowo-cyfrowy jest wykorzystywany do generowania losowych liczb oznaczających kolejną diodę w sekwencji oraz do ustalania tempera rozgrywki. Załączenie zasilania części analogowej odbywa się po wystawieniu stanu wysokiego na wyprowadzenie PC3 mikrokontrolera. Wtedy dokonywany jest pomiar napięcia pomiędzy ślizgaczem P1 i masą układu, co służy zadaniu szybkości załączania się kolejnych diod w sekwencji.

Obwód składający się z rezystorów R10...R12 generuje silnie zaszumione napięcie stałe. Przetwornik wychwytuje chwilową jego wartość, konwertuje, po czym wyłuskuje ostatni, najmłodszy bit. Drugi taki sam pomiar, wykonany po kilku milisekundach, generuje drugi bit.

Ich wartość jest zupełnie losowa, bowiem głównych źródłem szumów w tym układzie są szumy termiczne rezystorów, mające rozkład jednostajny (tak zwany szum biały). Dwa zestawione ze sobą bity tworzą liczbę z przedziału 0...3, co odpowiada wprost numerowi diody do załączenia: LED1...LED4.

Zasilaniem dla układu jest pojedyncza bateria BAT1 typu CR2032, której koszyk znajduje się na płytce. Jej pojemność jest na tyle znacząca, że wystarczy na wiele godzin gry oraz wiele miesięcy trwania w uśpieniu. Jednocześnie, cała gra staje się w ten sposób lekka i kompaktowa, ponieważ nie wymaga instalowania dodatkowych źródeł energii lub zasilacza sieciowego.

Montaż i uruchomienie

Układ został zmontowany na jednostronnej płytce drukowanej o wymiarach 100×65 mm, której schemat został pokazany na rysunku 2. W odległości 3 mm od krawędzi płytki znalazły się cztery otwory montażowe, każdy o średnicy 3,2 mm.

Rysunek 2. Schemat montażowy i wzór ścieżek płytki

Montaż proponuję rozpocząć od elementów o najmniejszej wysokości obudowy, czyli rezystorów, kondensatorów położonych na powierzchni laminatu, diod. Nie wolno zapomnieć o dwóch zworkach z cienkiego drutu, których miejsce jest pod układem US1.

Pod mikrokontroler proponuję zastosować podstawkę, aby ułatwić jego programowanie oraz wymianę w razie uszkodzenia. Zmontowany układ można zobaczyć na fotografii tytułowej.

Mikrokontroler powinien mieć fabryczne ustawienia bitów zabezpieczających. Wbudowany oscylator RC, który taktuje rdzeń sygnałem o częstotliwości 1 MHz oraz wyłączony Brown-Out Detector to prawidłowa konfiguracja w tym układzie. Pamięć Flash trzeba zaprogramować dostarczonym wsadem.

Poprawnie zmontowany i zaprogramowany układ jest gotowy do działania po włożeniu baterii typu CR2032 do koszyka. Napięcie zasilające, o ile będzie pochodziło z zewnętrznego zasilacza, nie powinno przekraczać wartości 5 V i na pewno powinno być dobrze filtrowane, a najlepiej stabilizowane. Układ był projektowany do współpracy z napięciem o wartości około 3 V i w tych warunkach zmierzono pobór prądu: około 120 nA w stanie uśpienia, około 850 μA podczas oczekiwania na wciśnięcie przycisku podczas wprowadzania zapamiętanej sekwencji i około 5 mA podczas świecenia diodą LED. Minimalnym napięciem, przy którym układ działa, jest 1,8 V – wynika to z dokumentacji użytego mikrokontrolera.

Eksploatacja

Jeżeli nasza zabawka ma włożoną baterię, to zapewne znajduje się w stanie uśpienia. Można ją wybudzić poprzez wciśnięcie przycisku S5. Natychmiast po tym załączy jedną z czterech diod LED umieszczonych przy przyciskach. Prawidłową odpowiedzią będzie wciśnięcie tego przycisku w czasie nie dłuższym niż 10 s – jeżeli w tym czasie nie będzie reakcji, układ powróci do stanu uśpienia. Przejście w ten stan jest sygnalizowane przez diodę LED5, która błyska na czerwono, a potem na zielono.

Załóżmy, że załączyła się dioda LED3 i chwilę później człowiek wcisnął S3. Świecenie LED5 na zielono potwierdzi, że to był dobry wybór. Zaraz po tym, jak LED5 zgaśnie, załączy się LED3, zgaśnie i załączy się inna dioda, dajmy na to LED1. Po wygaszeniu LED1 trzeba tę sekwencję powtórzyć: najpierw S3, potem S1. Zazielenienie się LED5 wynagrodzi nam włożony wysiłek. Następna sekwencja będzie dłuższa, 3-elementowa: LED3, LED1 i jeszcze jakaś. Podczas wciskania przycisków będziemy widzieć chwilowe załączanie się diod przy nich. To informacja zwrotna, że styki w microswitchu zadziałały prawidłowo, a sygnał został prawidłowo zinterpretowany.

Jeżeli jakakolwiek z naszych odpowiedzi będzie nieprawidłowa, czyli wciśnięty przycisk nie będzie odpowiadał diodzie, która się wcześniej załączyła w tej sekwencji, LED5 stanie się czerwona. W ten sposób układ poinformuje nas, że popełniliśmy błąd. Sekwencja zacznie się budować od nowa. Tym razem pierwszą diodą może być, na przykład, LED2.

Potencjometr P1 ustala czas świecenia diod podczas pokazywania sekwencji. Po skręceniu na minimum czas ten wynosi 70 ms, co wymusza silne skupienie uwagi. Z kolei, maksymalny czas świecenia to nieco ponad 1 s. Rozdzielczość regulacji wynosi 1 ms, więc niewielkim wkrętakiem można sobie wyregulować poziom trudności gry. Przypominam, że informacja z P1 jest zbierana wyłącznie po wybudzeniu mikrokontrolera lub po włożeniu baterii w gniazdo BAT1.

Maksymalna długość zbudowanej sekwencji to 256 elementów. Po przekroczeniu tej długości, licznik indeksujący tablicę zapamiętanych elementów przepełnia się i układ wraca na początek zabawy, czyli rozpoczyna od jednej diody. Życzę Czytelnikom takiego sukcesu!

Michał Kurzela, EP

Wykaz elementów:
Rezystory: (THT o mocy 0,25 W)
  • R1…R5: 10 kΩ
  • R6…R9, R13, R14: 220 Ω
  • R10…R12: 10 MΩ
  • RN1: 4×10 kΩ SIL5
  • P1: 100 kΩ montażowy leżący
Kondensatory:
  • C1, C3: 100 nF raster 5 mm MKT
  • C2: 100 μF 25 V raster 2,5 mm
Półprzewodniki:
  • LED1…LED4: czerwone 5 mm np. LED F5 R
  • LED5: zielona/czerwona 5 mm ze wspólną katodą np. LED F5 R/G-1
  • US1: ATmega88PA-PU DIP28
Pozostałe:
  • BAT1: koszyk baterii CR2032 THT leżący (KOSZYK BAT 6)
  • J1: goldpin 5 pin męski 2,54 mm kątowy THT
  • S1…S5: microswitch 12×12 9 mm THT (MIKROSW TS)
  • Jedna podstawka DIP28 wąska
Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2023
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów