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

Zegar szachowy na mikroprocesorze ATMEGA8

vandalton 31 Paź 2015 21:31 4998 4
  • Dzień dobry,

    chciałbym opisać zegar szachowy mej konstrukcji.

    Zegar szachowy na mikroprocesorze ATMEGA8 Zegar szachowy na mikroprocesorze ATMEGA8 Zegar szachowy na mikroprocesorze ATMEGA8

    Pomysł zbudowania takiego zegara zrodził się w mej głowie, kiedy w okresie zainteresowania mikrokontrolerami chciałem stworzyć coś, co będzie sterowało wyświetlaczem LCD. Nie chcąc kopiować oklepanych pomysłów typu wyświetlenie napisu "hello world" czy zwykły zegarek, postawiłem na konstrukcję, która może mieć zastosowanie praktyczne. Padło na zegar dla szachistów - w tym i dla mnie.


    Zegar szachowy na mikroprocesorze ATMEGA8



    Edytuj

    Schemat zegara został załączony do niniejszego opisu. Sercem jest układ ATMEGA8, który steruje wyświetlaczem 1-rzędowym, 16-znakowym, zgodnym z HD44780. (Na schemacie jest 2x16, proszę się nie sugerować, nie mogłem znaleźć nic bardziej pasującego w bibliotekach Eagle, a schemat połączenia jest identyczny). Do oprogramowania wyświetlacza użyłem biblioteki autorstwa Radosława Kwietnia. Oprócz wyświetlacza, pozostałe niezbędne elementy to kwarc "zegarkowy" oraz 3 przyciski typu "reset" - dwa dla graczy, a trzeci dla sędziego, który może wstrzymać odliczanie czasu podczas gry. Zasilanie zrealizowane jest w standardowy sposób, tj. za pomocą stabilizatora 7805.

    Jako załącznik zamieściłem również pełen kod źródłowy. Program dla mikrokontrolera został napisany w języku C, a do jego kompilacji użyłem WinAVR.

    W metodzie main wywoływane są metody inicjujące porty, asynchroniczny timer oraz wyświetlacz. Następnie uruchamiana jest nieskończona pętla, której zadaniem jest reagowanie na wciskanie przycisków przez użytkowników. Warto zaznaczyć, że program wykorzystuje wewnętrzny oscylator mikrokontrolera, ustawiony na 2 MHz, natomiast kwarc "zegarkowy" wykorzystywany jest przez asynchroniczny timer skonfigurowany tak, aby przerwanie następowało co sekundę. W metodzie przerwania odejmuje się sekundę od czasu, jaki pozostał graczowi, który aktualnie ma wykonać ruch. Natomiast w metodzie askbuttons, zmieniany jest znacznik mówiący o tym, który gracz ma wykonać następny ruch. Do tego dochodzi proste odrysowywanie ekranu - widać tam czas pozostały każdemu z graczy. To, który z nich ma wykonać następny ruch, oznaczone jest gwiazdką. Po upłynięciu czasu jednemu z graczy pojawia się komunikat: "BLACK WINS" albo "WHITE WINS".

    O ile zmontowanie części elektronicznej konstrukcji nie nastręczało mi żadnych problemów, o tyle namęczyłem się chcąc zbudować obudowę do zegara. Ostateczna powstała ona z kawałków drewna oraz grubej tektury. W sklejce nie byłem w stanie wydrążyć otworu na wyświetlacz, stąd tektura. Całość została pokryta okleiną drewnopodobną. Charakter konstrukcji (umieszczenie przycisków na panelach) sprawił, że płytka drukowana była zbędna. Atmega osadzona jest na kawałku płytki uniwersalnej, wraz z elementami odpowiedzialnymi za zasilanie oraz z kwarcem, natomiast przyciski są przylutowane kawałkami kabli, podobnie jak terminal na baterię 9V. Całość sprawia przez to wrażenie pajęczyny, ale między innymi dlatego ten opis trafia do działu "Niedokończone". Dodatkowo, poprzestałem na prototypie. Zegar działa, można przy nim uciąć partyjkę, jednak brak mu podstawowych funkcji, takich jak choćby możliwość ustawienia czasu gry (zawsze jest 15 minut), wyboru bardziej wyrafinowanych rodzajów tempa (np. z dodawaniem czasu na zapis ruchu) itd. Jednak cel (użycie wyświetlacza LCD) został osiągnięty, przy okazji nauczyłem się wiele na temat działania timerów oraz sterowania wyświetlaczem, a same części nie były drogie: około 5 zł za mikroprocesor, 15 zł za wyświetlacz i po około 8 zł za porządne przyciski. W skrócie, uważam, że podjęcie się próby stworzenia takiej konstrukcji było dobrym pomysłem, o sporych walorach edukacyjnych.

    Na zakończenie, krótki film pokazujący zegar w działaniu. Celem filmu jest zaprezentowanie sposobu prezentacji danych (czasu pozostałego graczom), reakcji na przyciski oraz komunikatu, po zakończeniu czasu gry.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    vandalton
    Poziom 9  
    Offline 
    vandalton napisał 19 postów o ocenie 4, pomógł 0 razy. Jest z nami od 2009 roku.
  • PCBwayPCBway
  • #2
    Menos
    Poziom 12  
    Uważam, że przyciski powinny być większe i wygodniejsze.
    Samo naciśnięcie mogłoby uruchamiać jakiś dyskretny dżwięk potwierdzający, że nastąpiło przełączenie odliczania.
  • PCBwayPCBway
  • #3
    vandalton
    Poziom 9  
    Uwagi słuszne - na dźwięk w ogóle nie wpadłem, a faktycznie, przydałby się. Natomiast przycisków większych nie udało się znaleźć w lokalnym sklepie elektronicznym, a zegar był od początku bardziej takim "proof of concept", więc nie szukałem innych.
  • #4
    excray
    Poziom 40  
    Na schemacie masz AREF zwarte z AVCC. To błąd. Reset wisi w powietrzu - to też nie jest profesjonalne. Na dodatek brakuje np. buzzera który by zasygnalizował że czas gracza się skończył. Wiem, że projekt jest edukacyjny ale skoro zadałeś sobie trud aby wyrzeźbić do niego obudowę to warto by było te groszowe rzeczy poprawić.
  • #5
    JanuszArtur
    Poziom 14  
    Tego typu konstrukcje uświadamiają mnie, że takie prehistoryczne gry jak szachy są jeszcze używane. Bardzo mnie to cieszy. Odnośnie do konstrukcji, to nasuwa mi się pytanie, czy nie można było by zmienić podświetlenia wyświetlacza LCD zależnie od tego, który z graczy naciśnie? Mógłby także migać gdy czas się skończy. Mam także uwagę do miejsca, w którym znajduje się 'reset' - czy nie za łatwo wcisnąć go omyłkowo przez gracza? Czy nie lepszym miejscem był by panel z przodu?