Dzień dobry,
chciałbym opisać zegar szachowy mej konstrukcji.
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.

Edit
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.
chciałbym opisać zegar szachowy mej konstrukcji.



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.

Edit
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.
Cool? Ranking DIY