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

Gra PONG na Arduino Pro Mini

sanfran 16 Lut 2020 15:07 2412 6
  • Chciałem trochę wciągnąć syna w Arduino i zbudować z nim projekt gry PONG oparty na: https://michaelteeuw.nl/post/87381052117/building-pong

    Okazało się, że syn się dosyć szybko wykolegował z projektu twierdząc że XBOX jest ważniejszy, a jednak postanowiłem poświęcić kilka wieczorów i projekt dokończyć. W tym czasie oryginalny projekt ewoluował na tyle, że pozwoliłem go sobie zamieścić w tym dziale. Pan Michael Teeuw odwalił kawał dobrej roboty z programowaniem silnika gry, więc pozwoliłem sobie go zaadaptować na swoje potrzeby.

    Oto jak wygląda gotowe pudełko z grą w różnych wariantach gry:
    Gra PONG na Arduino Pro Mini Gra PONG na Arduino Pro Mini Gra PONG na Arduino Pro Mini Gra PONG na Arduino Pro Mini

    A tak wygląda w środku:
    Gra PONG na Arduino Pro Mini Gra PONG na Arduino Pro Mini

    A tak schemat połączeń:
    Gra PONG na Arduino Pro Mini

    Opis konstrukcji.
    Zamówiłem ekran OLED 0.96. W stosunku do pięcio-pionowych ekranów należało zmienić port adresacji i zaskoczyło na stole. Wyświetlacz ten jest bardzo malutki. Domówiłem więc OLED 1.3” (podobno kompatybilny), ale nie do końca. Mniejszy jest zbudowany na układzie SSD1306 a większy na SSH1106. Powoduje to, że należało zastosować zupełnie inną bibliotekę - U8g2lib.h - i trochę przetłumaczyć program. Potencjometry 22k które miałem okazały się nieliniowe, co było bardzo uciążliwe, więc należało kupić liniowe. Należy zwrócić na to uwagę podczas budowy swojego urządzenia.
    W tym czasie zakiełkowała myśl aby zbudować urządzenie jak najbardziej przypominające stare gry telewizyjne. Dodałem więc pięć przełączników bistabilnych i jeden astabilny.
    Pierwszy przełącznik to zasilanie. Użyłem baterii 6F22. Ponieważ chińskie klony ProMini słyną ze słabego stabilizatora, który nie dość, że nie wystarczy na zasilanie czegokolwiek więcej niż samej płytki to jeszcze lubi się przepalać przy przypadkowym zwarciu, więc dorzuciłem stabilizator 7805.
    Drugi przełącznik to odcinanie masy głośniczka. Bez żadnych programowych sztuczek. Głośniczek jest głośny, więc się przydaje.
    Trzy kolejne podłączone są do pinów 10, 11 i 12.
    Odpowiadają za zmniejszanie paletek, zmianę na Tenis - Piłka Nożna oraz trzeci uruchamia Squash dla jednej osoby (nie działa gdy wybieramy Piłkę Nożną).
    Moim celem była możliwość zmiany rodzaju gry w każdym momencie, a nie tylko podczas startu, więc przełączniki są sprawdzane w głównej pętli.
    Pętla sprawdza przełączniki, oblicza położenie piłki, paletek po czym kasuje ekran i rysuje go na nowo.

    Ostatni przycisk astabilny zwiera do masy linię RST.

    W stosunku do oryginału wyrzuciłem stronę startową z napisami. Wyświetlacz SSH1106 wymaga zadeklarowania fontów, które zajmują dużo miejsca w pamięci. Aby oszczędzić pamięć wrzuciłem okrojone fonty (tylko cyferki) do wyświetlania wyników.
    Pierwsza modyfikacja to Squash. Polegała na przesunięciu prawej paletki do brzegu, zwiększeniu jej rozmiaru do 64 punktów, zlikwidowaniu środkowej linii i gotowe.
    Nieco więcej zabawy wymagała Piłka Nożna. Należało wprowadzić drugą parę paletek; zaimplementować „przepuszczanie” piłki przez napastników w kierunku bramki, zaimplementować odbijanie się piłeczki od pionowych ścianek. Nawet jakoś wyszło.

    W pracach artystycznych nigdy nie byłem mistrzem, więc pudełko wyszło, jak wyszło.

    Dodaje poniżej skrypt programu. Oryginalny do ściągnięcia z pierwszego linku.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    sanfran
    Poziom 39  
    Offline 
    Specjalizuje się w: sieci komputerowe zawodowo; mechanika prywatnie
    sanfran napisał 4720 postów o ocenie 789, pomógł 467 razy. Mieszka w mieście Aberdeen. Jest z nami od 2015 roku.
  • #3
    sanfran
    Poziom 39  
    Pobór prądu to 28mA. Wychodzi, że alkaliczna zasili to przez ok 20 godzin.
    Do samolotu wpuszczą, dlaczego nie. Przepuszczą przez rentgena, jak będą chcieli to przetrą papierkami i sprawdza na obecność podejrzanych chemikaliów.
  • #5
    Stanley_P
    Poziom 27  
    Witam
    Ehhhh, gdzie te czasy Radioamatora i Krótkofalowca bodaj 11/1978... Skleciłem toto (tzn. klona Ponga), wówczas jeszcze nie posiadając dowodu osobistego... ;-) Zawierało około 20 układów scalonych TTL, które niełatwo było wtedy zdobyć... Tak, tak, wiem, że to wręcz niewyobrażalne, ale kiedyś naprawdę były czasy, gdy nie istniały Alledrogo, TME, Aliexpress ;-)
    A jakaż była radość i duma gdy pajęczyna ruszyła (tzn. elektronika znajdowała się na kilku połączonych ze sobą modułach-płytkach, wykonanych wg. schematów i PCB w RiK). Potem jakaś zmajstrowana w naprędce a'la obudowa, chyba ze sklejki... i potencjometry bodaj w mydelniczkach. Całą klasą chodziło się w przerwach na świetlicę, podłączyć do szkolnego tv "grę telewizyjną" (tak się wtedy mówiło, nazwa Pong chyba była jeszcze powszechnie nieznana). Choć na ekranie wyświetlane były tylko dwie paletki i piłeczka, żadnych liczników punktów, itp. - zabawom i turniejom nie było końca ;-)
    Teraz jak widzę schemat niewiele bardziej skomplikowany od żelazka z bimetalem... Choć wiem, że elektronika (+software...) de facto na zupełnie innym, nieporównywalnym poziomie. Jednak jak wynika ze wstępu Autora, wypieki na twarzy u młodzieży żadne... :-|

    EDIT. Najważniejsze, zapomniałem (znów ten Niemiec na A. czy jakoś tak ;-) ). Ode mnie brawo dla Autora za chęci.
  • #6
    AdiGital
    Poziom 10  
    Ogólnie fajny projekcik. Mam tylko jedno „ale”
    sanfran napisał:
    Potencjometry 22k które miałem okazały się nieliniowe, co było bardzo uciążliwe, więc należało kupić liniowe.

    Cały projekt to głównie program. Nie byłoby prościej i wygodniej „zlinearyzować” potencjometry w programie?
  • #7
    sanfran
    Poziom 39  
    Zastanawiałem się nad tym i w gruncie rzeczy by to nie było trudne. Założyć wskazówkę na ośkę, oznaczyć ze 20 punktów na obwodzie, zmierzyć wartości, dobrać odpowiednią funkcję i niech komputer liczy.
    Ale zdecydowałem się na nowe potencjometry, bo stare trochę "trzeszczały" i żadne zabiegi rewitalizacyjne nie przynosiły zadowalających efektów.