Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Licznik do starochińskiej gry GO

MaThiR 24 Sty 2011 21:17 4664 4
  • Licznik do starochińskiej gry GO
    Prezentowane w temacie urządzenie jest funkcjonalnym licznikiem przeznaczonym dla graczy starochińskiej gry GO. Sam nie jestem zapaleńcem GO, urządzenie zrobiłem bratu, pogrywamy wspólnie od czasu do czasu. Aby licznik zrobić bardziej uniwersalnym dodałem możliwość dowolnego ustawiania czasu gry i ruchu gracza. Daje to możliwość wykorzystania licznika podczas grania na mniejszej planszy (13x13) i Atari GO. Urządzenie z powodzeniem może być wykorzystane do innych gier, np. szachów. Urządzenie dysponuje trzema różnymi systemami liczenia, które zostały opisane poniżej.

    Układ elektroniczny
    Głównym elementem układu elektronicznego jest mikrokontroler ATMEGA8515. Wybór ten nie był podyktowany dogłębną analizą, miałem kilka takich układów już dawniej zakupionych. Z racji dużej ilości portów IO ten typ mikroprocesora AVR wydał mi się odpowiedni do tego układu.
    Mikrokontroler steruje dwoma czterocyfrowymi wyświetlaczami LED, obsługuje 7 przycisków oraz buzzer.
    PA i PB osobno obsługują katody diod wyświetlaczy, zaś wszystkie anody obu wyświetlaczy są połączone równolegle i podłączone kolejno przez wtórniki emiterowe do PC0-3. Dwukropki wyświetlaczy są sterowane przez PC4-5. Oba wyświetlacze są osobno sterowane multipleksowo.
    PA pracuje w konfiguracji wejścia podciągniętego do VCC i obsługuje sześć przycisków. Dodatkowo jeden z przycisków przez kondensator zwiera nóżkę RESET do masy. Podczas normalnej pracy tranzystor Q5 podciąga nóżkę RESET do VCC, rozwiązanie to pozwoliło wykorzystać funkcję POWER DOWN mikroprocesora do wyłączania urządzenia. Wciśnięcie S7 wybudza mikroprocesor rozpoczynając normalne działanie.
    Dodatkowo przyciski końca tury mają zewnętrzne wyprowadzenia. Gniazdka jack 3,5(w liczniku z wystającymi wyświetlaczami) i jack 2,5 (licznik z przydymionymi szybkami) umożliwiają podłączenie zewnętrznych dużych i mocnych przycisków dla każdego gracza (w planach).
    Buzzer został oparty na sprzętowym liczniku. Wyemitowanie dźwięku MIDI sprowadza się do wpisania danej w rejestry OC1A i OC1B (częstotliwość), a następnie ich wyzerowania (długość trwania dźwięku). Zaangażowane zostały oba rejestry z powodu sprzętowego zerowania licznika TCNT1. OC1B może inicjować tylko przerwanie, w nim musiałoby nastąpić wyzerowanie licznika, zakłócało to niestety pracę programu.
    Urządzenie jest zasilane czterema akumulatorkami R3. Układ pobiera od 40mA do 160mA w zależności od jasności świecenia wyświetlaczy która jest dowolnie regulowana przyciskami.
    Drugie urządzenie z przydymioną szybką jest zasilane trzema akumulatorkami, sam układ zaś został uproszczony. Schematy poniżej.

    Działanie
    Po uruchomieniu układ jest gotowy do rozpoczęcia gry (czas sumaryczny gry jest ustawiony na 30 minut, zaś czas byo-yomi na 30 sekund). Przyciski S4, S6 służoą do rozjaśniania i ściemniania wyświetlaczy. Przyciskanie S3, S5 powoduje zmianę trybu przestawiania, kolejno:
    - minuty czasu podstawowego gracza #1
    - sekundy czasu podstawowego gracza #1
    - minuty czasu podstawowego gracza #2
    - sekundy czasu podstawowego gracza #2
    - czas byo-yomi gracza #1
    - czas byo-yomi gracza #2
    - ilość możliwych błędów gracza #1
    - ilość możliwych błędów gracza #2
    (jest to liczba możliwych przekroczeń czasu ruchu)
    - tryb gry (1 - gra z czasem podstawowym z ograniczeniem czasu tury, 2 - gra z czasem podstawowym do 00:00, potem załączany jest byo-yomi, 3 - gra tylko z czasem byo-yomi)
    Tylko z trybu zerowego można przejść do gry poprzez przyciśnięcie środkowego przycisku S7. Wtedy gra jest spauzowana, kolejne przyciśnięcie ją aktywuje, następne pauzuje itd... Każdy gracz dysponuje swoim przyciskiem, są to S1 i S2. Ponadto można podłączyć zewnętrzne do gniazdek mini-jack. Przyciskanie S1 i S2 służą do zakończenie ruchu, wtedy zostaje odpisany czas byo-yomi i pokazany pozostały dostępny czas gry. Pozostałe 5, 4, 3, 2, 1, sekundy zostają oznajmione piknięciami o rosnącym tonie by piszczeć ciągle gdy byo-yomi osiągnie 0 sekund. Czas byo-yomi nie może być większy od pozostałego czasu gry. Gdy pozostały czas gry jest mniejszy od początkowej ustawionej wartości byo-yomi ten z każdą kolejną turą maleje do zera sekund.
    W trybie pierwszym gracze wciskając klawisze S3 lub S5 mogą podejrzeć pozostały czas główny przeciwnika, a gdy jest równy zero lub aktywna jest gra tylko i wyłącznie z byo-yomi gracze dysponują podglądem ilość możliwych błędów które przeciwnik może popełnić. Po przekroczeniu zakresu możliwych błędów gra jest kończona krótkim piskiem i wyświetleniem napisu FAIL na wyświetlaczu gracza przegrywającego.
    Włączaniu i wyłączaniu toważyszą różne trzytonowe dźwięki, podobnie obsłudze przycisków też toważyszą delikatne wysokotonowe piski

    Obudowa
    Miała być po prostu jak najmniejsza. Jak widać na zdjęciach, obok laminatów wykorzystane zostały dwie deski w kształcie trapezu polakierowane po bokach. Trochę nieładnie wyglądają wystające wyświetlacze, dlatego wykonałem drugi bliźniaczy licznik. W kolejnym na pewno nie użyję zielonej szybki, ponieważ widać przez nią wnętrze urządzenia.
    Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO

    I schematy (pierwsze dwa obrazki są schematami pierwszej wersji urządzenia, kolejne drugiej):
    Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO
    Licznik do starochińskiej gry GO Licznik do starochińskiej gry GO

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2
    blue_17
    Poziom 32  
    Można by to wykorzystać po małych modyfikacjach do szachów :)
  • #4
    MaThiR
    Poziom 16  
    Cytat:
    Można by to wykorzystać po małych modyfikacjach do szachów Smile

    Nie trzeba niczego modyfikować, licznik już jest do tego przystosowany :wink:

    Oprogramowanie napisałem w C. Program zajmuje 6230 bajtów. Stworzenie dodatkowej modyfikacji nie stanowi żadnego problemu.
    Poniżej zamieściłem wsady oraz projekty płytek obu wersji.
  • #5
    Tomkiewicz
    Poziom 13  
    Mam pytanie do samego programu: żyłowałeś go pod kątem rozmiaru, czy po prostu tak wyszedł? Dość sporo zajmuje, jak na program w C i o takich możliwościach (chyba, że coś zajmuje szczególnie dużo?). To prawie cała pamięć tego uC.

    Próbowałeś kompilować z przełącznikami "-Os -fwhole-program -Wl,--relax"? Pierwszy optymalizuje kod pod względem rozmiaru, drugi włącza optymalizacje kompilatora dla programu jako całości, a trzeci coś podobnego dla linkera.