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:
A tak wygląda w środku:
A tak schemat połączeń:
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.
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:
A tak wygląda w środku:
A tak schemat połączeń:
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 / C++
Fajne? Ranking DIY

Chociaż obudowa i sama koncepcja podoba mi się.