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

konsolka do gier - SAPER

Fimek 28 Lis 2008 02:09 9837 9
  • konsolka do gier - SAPER


    Witam,

    niniejszym przedstawiam wykonany przeze mnie układ w postaci konsolki do gier z grą saper. Układ powstał po to, bym mógł przetestować wyświetlacz graficzny do komórki i umilić sobie dojazdy do pracy.

    Więc od początku.

    Za inteligencję gry odpowiada mikrokontroler Atmega16. Program zajmuje około 6KB i dosyć dużą przestrzeń pamięci RAM. Jako wyświetlacz wykorzystałem LCD od telefonu Siemens S65, do którego bogatą dokumentację i fajną bibliotekę dla AVR można znaleźć na sieci. Zrobiłem tylko własną obsługę fontów kompatybilną z moim dotychczasowym standardem. Przetwornica do sterowania podświetleniem wykonana została w oparciu o MC34063 + PWM i tranzystor do regulacji jasności. Zasilanie to 2 paluszki które, przy poborze prądu około 80mA, daje perspektywę długiego grania. Cały układ działa począwszy od około 2.2V (wyświetlacz, atmega, przetwornica...) - można zasilać z akumulatorów. Klawiatura wykonana została w oparciu o mikroswitch'e i folię samoprzylepną przykrywającą obudowę od frontu. Wygląda to nie najgorzej i zasłania trochę za duże otwory.

    Ciekawostką w układzie jest użycie hardware'owego generatora liczb losowych. Swierdziłem, że użycie standardowej funcji rand może dać za słabe efekty. Źródłem szumu jest tutaj dioda Zenera przez którą płynie prąd około 30uA. Jeżeli użyje się diody o napięciu około 10V, to wartość międzyszczytowa szumu na niej wynosi około 40mV. Wystarczy prosty wzmacniacz na jednym tranzystorze i dalej na przetwornik A/C. Dla diody o napięciu 3.9V, poziom szumu to już tylko około 5mV. Wniosek jest taki, że bardziej od "prawdziwych" diod Zenera szumią diody z efektem przebicia lawinowego (Uz większe od 6...7V). Rozkład prawdopodobieństwa jest z grubsza gaussowski, ale po pewnych zabiegach świetnie losuje liczby całkowite z rozkładem liniowym.

    Do zrobienia zostało zaimplementowanie jakiegoś intro, obsługi dzwięków i zapisu wyników oraz ewentualnie napisanie innych gier, na przykład snake, rosyjskie jajeczka itp. Warto jednak użyć wówczas większej atmegi. Wyświetlacz sprawia się doskonale, jest wyrazisty i czytelny dość duży, pobiera mało prądu i jest tani.

    Pozdrawiam, Fimek

    konsolka do gier - SAPER


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 28 Lis 2008 05:06
    Fabi20
    Poziom 15  

    Fajny projekt, podoba mi się rozwiązanie generatora liczb losowych, ja kiedyś użyłem termistora i fototranzystora :)

  • #3 28 Lis 2008 07:57
    matrix880
    Poziom 10  

    A mógł bym poprosić o jakiś schemacik :D

  • #4 28 Lis 2008 08:19
    mirekk36
    Poziom 42  

    Witam,

    ja również uważam, że to bardzo ciekawy projekcik. Fajne podejście do otrzymywania liczb losowych. Chyba sam będę musiał coś takiego zrobić dzieciakom pod choinkę - tylko nie pod tą bo już nie zdążę.

    Chciałbym tylko dodać, że może warto byłoby już zrobić lepszy panelik przedni do tego cudeńka. Bo obudowa akurat fajnie to umożliwia. Wystarczy zrobić sobie jakiś wydruk tego panelu przedniego na zwykłej kartce papieru, na jakiejś drukareczce kolorowej obojętnie jakiej, dodać ładne opisy czy symbole dla klawiszy, wyciąć otwór tylko na wyświetlacz - a całość zalaminować w dowolnym punkcie typu ksero, robią to za grosze.

    Potem dałbyś lekki dystansik, bo jak widać switche ciut wystają za mocno, czyli dystansik z jakiejś tekturki a na to już nakleić zalaminowany panelik. Dzięki temu klawiaturka dłużej wytrzyma bez takich efektów, które już u ciebie się pojawiają tzn przecierają się już miejsca w których przyciskasz switche ;) ... gdy będzie to zalaminowany papier a pod spodem jeszcze doklejony kawałek jakiejś sztywnej folii pomiędzy switchem a panelem to już w ogóle wyjdzie klawiaturka Heavy-Duty.

    Warto się z tym pobawić bo roboty nie dużo, koszty niewielkie a efekt - niesamowity

    pozdrawiam

  • #6 28 Lis 2008 11:06
    Fimek
    Poziom 12  

    Schematu nie będzie, programu również nie zamierzam umieszczać. Chciałem zaprezentować wyłącznie pomysł - nie zaś gotowe rozwiązanie.
    Stworzenie tego nie wymagało zadnej specjalnej wiedzy - wystarczyło trochę pokombinować z algorytmami i poślęczeć nad nimi, żeby nie było bugów. Saper napisany całkowicie od podstaw w weekend - wzorowałem się wyłącznie na windowsowym. Udało mi się na wyświetlaczu upchnąć planszę prawie wielkości expert (czyli 16x30 pól, u mnie jest 16x29). Można próbować zmieścić trochę więcej pól (pole można zmniejszyć o piksel w pionie i o dwa w poziomie), ale czytelność planszy się zmniejszy.

    Jeżeli to będzie kogokolwiek interesowało, mogę coś napisać o generacji szumu za pomocą diody Zenera - sprawdzanie rozkładu i badanie przy jakim prądzie jest największy jego poziom było ciekawe :)

    Dzięki za uwagi n/t klawiatury i wyglądu frontu - spróbuję to zmienić.

    Pozdrawiam, Fimek

  • #7 28 Lis 2008 12:19
    master_pablo
    Poziom 16  

    Fajny pomysl z tym sprzetowym generatorem liczb losowych, aczkolwiek w urzadzeniu zasilanym bateryjnie liczy sie kazdy mA i mozna by to zrobic tak, ze po kazdym nacisnieciu przycisku odczytujemy zawartosc jakiegos timera i obylo by sie bez dodatkowego sprzetu.

  • #8 28 Lis 2008 12:32
    LED's
    Poziom 13  

    Fimek, świetny sprzęt. Kolorowy LCD i "snajper" zamroczyły mnie.
    Realizuję "szczęśliwy numerek" do mojej szkoły i potrzebuje wsparcie do liczb pseud losowych. Bo dyrektywa w bacomie mi nie wystarcza.
    Piszesz że możesz napisać o generacji szumu za pomocą diody Zenera, Bardzo bym Cię oto prosił.

  • #9 29 Lis 2008 14:21
    Fimek
    Poziom 12  

    Witam,

    schemat układu jest taki:
    konsolka do gier - SAPER

    Przetwornica, która wytwarza napięcie do zasilania podświetlenia, wykonana jest standardowo wg. noty aplikacyjnej, poza tym że w pętli sprzężenia pracuje dioda Zenera - identyczna jak ta od generowania szumu. Ma to wszystko razem trochę się kompensować termicznie. Filtr z R3 i C2 jest niezbędny - inaczej tętnienia z zasilania są tak duże, że tranzystor nie wzmacnia szumu tylko te tętnienia i przechodzi od nasycenia do zatkania. Z wartością rezystora R4 można trochę pokombinować, bo od niego (i R3) zależy prąd płynący przez diodę i amplituda oraz charakter szumu. Dalej znajduje się prosty wzmacniacz na tranzystorze. Szum ma wartośc międzyszczytową około 1.5V wokół środka około 0.8 ... 1V. Ma on charakter, jak pisałem wcześniej gaussowski, ale na oscyloskopie można zobaczyć że przy niedobrym ustawieniu prądu polaryzacji diody, pojawiają się na tle szumu wyraźne rzadkie piki napięcia które zaburzają rozkład. W miarę wzrostu prądu amplituda szumu się zmniejsza - pewnie prąd szumu odkłada mniejszy spadek napięcia na małej już rezystancji dynamicznej diody. Przy prądzie od 10 do 100...300uA jest okej. Dzięki użyciu słabo liniowego wzmacniacza rozkład szumu jest trochę "krzywy" - środek jest przesunięty w stronę 0V. Użycie lepszego wzmacniacza, np. operacyjnego, miałoby uzasadnienie w postaci jego małej impedancji wyjściowej - impedancja wejściowa ADC atmegi jest zmienna 1kOhma do 100kOhmów (tak w datasheecie piszą) - dobrze by się było od tego uniezależnić. Nie wiem jak jest z autokorelacją szumu (jak bardzo losowe jest jedno losowanie względem poprzedniego) - też może być umiarkowanie w tym układzie, bo sample/hold próbkuje długo i zachowuje się to wszystko jak filtr dolnoprzepustowy. Empirycznie potwierdzone: jedno losowanie jest okej, jeżeli zrobi się powiedzmy wynik modulo 20, czyli wylosuje się liczbę od 0 do 19. Wówczas rozkład jest liniowy. Sumy dwóch pomiarów i to razem modulo 29 i kolejne dwa pomiary i modulo 16 dają bardzo dobre rezultaty przy losowaniu planszy (to wszystko przy prostocie układu :) ). Jeżeli trzeba większych liczb można osobno losować jednostki, dziesiątki, setki itp.

    Podsumowując: warto zrobić lepszy wzmacniacz, użyć przetwornika A/C z szybszym sample/holdem, albo robić pewne małe odstępy między losowaniami (wynikające ze stałej czasowej S/H) jednakowoż w takim prostym układzie parametry są więcej niż wystarczające.

    Mam nadzieję, że byłem użyteczny :)

    pozdrawiam, Fimek

  • #10 29 Lis 2008 14:43
    Jj_Johnys
    Poziom 21  

    Świetna sprawa z tym saperem. Będę czekał na kolejne gierki dla tej konsolki.

    Atmega chyba nie może wykonywać zewnętrznego kodu? Gdyby mogła - można by zrobić coś w rodzaju kartridży z grami. Na karcie pamięci lub jakimś układem z pamięcią flash czy eeprom.

    Interesująca jest również sprawa z generatorem liczb losowych. dzięki za schemat i opis. "Pomógł" się należy.

    pozdr, JnS