Spisu treści:

Gra zręcznościowa Stackers: 6 kroków (ze zdjęciami)
Gra zręcznościowa Stackers: 6 kroków (ze zdjęciami)

Wideo: Gra zręcznościowa Stackers: 6 kroków (ze zdjęciami)

Wideo: Gra zręcznościowa Stackers: 6 kroków (ze zdjęciami)
Wideo: Łakocie chciwej babci - Gra - Wykradnij Ciasteczka Babci! - Tomy 2024, Lipiec
Anonim
Układarki Gra Zręcznościowa
Układarki Gra Zręcznościowa

Cześć chłopaki, dzisiaj chcę podzielić się z wami tą niesamowitą grą arcade, którą można stworzyć za pomocą kilku diod LED Ws2812b i mikrokontrolera/FPGA. Behold Stack Overflow - nasza sprzętowa implementacja klasycznej gry zręcznościowej. To, co zaczęło się jako projekt szkolny, szybko stało się pracą z miłości, ponieważ zaczęliśmy spędzać coraz więcej czasu na rozwijaniu naszej gry i uczeniu się z niej więcej (oraz zaniedbując przy tym nasze studia xD). Ostatecznie nasza gra była tak dobrze zbudowana i dobrze przyjęta przez naszą szkołę, że została skonfiskowana (jako materiał demonstracyjny dla następnej partii uczniów). Cóż, zawsze możemy zbudować drugi. Zacznijmy!

Wersja online gry:

Krok 1: Czego potrzebujesz?

Czego potrzebujesz?
Czego potrzebujesz?
Czego potrzebujesz?
Czego potrzebujesz?
Czego potrzebujesz?
Czego potrzebujesz?
Czego potrzebujesz?
Czego potrzebujesz?

Materiały:

1. Mikrokontroler/Mikrokomputer/FPGA - FPGA służy do implementacji logiki naszej gry. Wybierz swoją płytkę, do naszego projektu musimy użyć płytki Mojo FPGA. Dla niewtajemniczonych jest to rodzaj płyty, która wykorzystuje sprzęt do realizacji swoich funkcji, a nie kody. Dlatego powiedziałbym, że jest to raczej niski poziom i zupełnie inny niż w przypadku korzystania z Arduino lub Pi. Jeśli używasz innych plansz, musisz napisać własny kod, ale ta gra jest dość łatwa do napisania i hej! Teraz Ty też możesz nauczyć się kodowania!

2. Diody LED Ws2812b - Tutaj używamy diod LED do budowy wyświetlacza dla naszej gry. Nie możesz być producentem, jeśli nie dotykałeś Ws2812b przed xD. Jest to pojedyncza adresowalna, co oznacza, że możesz odciąć pojedyncze diody LED i wkleić je w dowolną formację. A to RGB oznacza, że możesz wydrukować dowolny kolor. Ponadto FastLED - biblioteka Arduino do sterowania Ws2812b jest bardzo dobrze rozwinięta. Polecam ludziom używać Arduino zamiast FPGA, jeśli go nie masz. Diody LED można kupić w Taobao/Amazon, ale my kupiliśmy nasze z wieży Sim Lim w Singapurze.

3. Drewno - Na obudowę zewnętrzną zastosowaliśmy sklejkę o grubości 1 cm, a na matrycę LED sklejkę o grubości 0,3 cm. Znaleźliśmy nasz zapas drewna odpadowego z laboratorium naszej szkoły.

4. Akryl rozpraszający światło - Do naszego ekranu wypróbowaliśmy różne rodzaje akrylu i znaleźliśmy ten matowy akryl o nazwie PL-422, który jest naprawdę dobry do rozpraszania światła. Jeśli nie możesz znaleźć dokładnego modelu, spróbuj poszukać matowego akrylu. Naszą kupiliśmy w Dama Plastics w Singapurze.

5. Płyta piankowa - Aby oddzielić poszczególne piksele światła, potrzebowaliśmy struktury siatkowej, a ta pianka jest idealnym materiałem do tego. W naszej szkolnej księgarni kupiliśmy płytę piankową o grubości 0,5 cm.

6. Duży czerwony przycisk - Ok, nie musimy mieć tak dużego czerwonego przycisku, ale zawsze dobrze jest mieć przycisk, aby ludzie mogli trzaskać! xD Kupiliśmy go w wieży Sim Lim w Singapurze.

Narzędzia:

1. Klej do drewna

2. Lutownica

3. Lutowane

4. Przewody. Najlepiej, jeśli masz miękkie druty w porównaniu do sztywniejszych. I jednordzeniowy w porównaniu do wielordzeniowego.

5. Ściągacz izolacji

6. Przecinak do drutu

7. Wiertarka wiertłami 1 mm

8. Przewiń piła

9. Piła taśmowa

Debugowanie:

1. Zasilacz o zmiennej mocy

2. Oscyloskop

Krok 2: Szybkie prototypowanie

Szybkie prototypowanie
Szybkie prototypowanie
Szybkie prototypowanie
Szybkie prototypowanie
Szybkie prototypowanie
Szybkie prototypowanie
Szybkie prototypowanie
Szybkie prototypowanie

W naszym projekcie zastosowaliśmy szybkie prototypowanie przed zbudowaniem naszej matrycy LED i zaprogramowaniem naszej gry. Powodem tego jest to, że nie chcemy budować matrycy LED tylko po to, aby zdać sobie sprawę, że nasze kody nie działają lub nasza logika gry jest w jakiś sposób błędna.

Jeśli chodzi o sprzęt, na pierwszym etapie właśnie przetestowaliśmy naszą logikę przesuwania wzorów światła na naszej własnej prostej matrycy LED. Po przetestowaniu, czy logika działa dobrze, wyszliśmy, aby wyciąć paski 5 diod LED Ws2812b, aby przetestować naszą logikę gry z różnymi wierszami. Gdy to się uda, przystępujemy do produkcji matrycy LED na pełną skalę.

Przetestowaliśmy również różne próbki akryli z diodą LED, zanim zdecydowaliśmy się na PL-422 jako najlepszy dyfuzor światła. W przypadku konstrukcji separatora przetestowaliśmy również różne wysokości, aby dioda LED mogła w pełni rozproszyć. W końcu zrealizowaliśmy kwadrat 3cm*3cm o wysokości 4cm, który najlepiej nadaje się do dyfuzji. W oparciu o ten optymalny rozmiar zdecydowaliśmy również, jaki jest rozmiar sklejki potrzebnej do matrycy LED 5 x 11, pozostawiając 0,5 cm przerwy na piankę między kwadratami.

Po stronie oprogramowania staramy się być jak najbardziej modułowa – najpierw testujemy, czy diody LED mogą się świecić, zanim przejdziemy do dodania funkcji przesunięcia, a następnie inne. Wyniki mogą być katastrofalne, jeśli tego nie zrobisz. Nauczyliśmy się tego na własnej skórze, próbując zakodować całą grę w dużym kawałku, zanim zdaliśmy sobie sprawę, że nie możemy tego debugować. Auć!

Krok 3: Wykonanie obudowy

Wykonanie obudowy
Wykonanie obudowy
Wykonanie obudowy
Wykonanie obudowy
Wykonanie obudowy
Wykonanie obudowy
Wykonanie obudowy
Wykonanie obudowy

W przypadku naszej obudowy postawiliśmy na klasyczne odczucia i wygląd automatów arkadowych. Najpierw tniemy cienką sklejkę, aby szybko stworzyć prototyp kształtu, ponieważ łatwiej i szybciej jest ciąć cienką sklejkę i testować. Gdy byliśmy już zadowoleni z naszych wymiarów i kształtu, do budowy obudowy zaczęliśmy używać grubszej sklejki. Używaliśmy piły taśmowej do przecinania grubszej sklejki i piły do przewijania, aby przecinać cieńsze. Następnie użyliśmy kleju do drewna, aby je skleić.

W przypadku tylnej części sklejki chcieliśmy mieć łatwy dostęp do elektroniki wewnątrz, dlatego zrobiliśmy z niej blokadę na miejscu, którą można łatwo usunąć, kiedy tylko chcesz.

Aby przymocować przycisk, najpierw narysowaliśmy okrąg wielkości średnicy mikroprzełącznika przycisku (dolna długa część przycisku). Następnie wywierciliśmy otwór w pobliżu krawędzi i użyliśmy piły do przewijania, aby przeciąć okrąg. Następnie umieściliśmy przycisk i wkręciliśmy go.

Wycinamy również cienki kawałek sklejki jako podstawę naszej matrycy LED zgodnie z wymiarami, które wcześniej obliczyliśmy.

Uwaga: przepraszam za brak procesu krok po kroku. Nie udokumentowaliśmy wszystkich kroków i zanim zdaliśmy sobie sprawę, że musimy udokumentować kroki, obudowa była już gotowa. Schemat również nie jest ostatecznymi wymiarami.

Krok 4: Tworzenie matrycy LED

Tworzenie matrycy LED
Tworzenie matrycy LED
Tworzenie matrycy LED
Tworzenie matrycy LED

Za pomocą wyciętego wcześniej cienkiego kawałka zaznaczamy najpierw położenie każdej diody, rysując kwadrat na podstawie naszej piankowej struktury i rysując krzyż na środku kwadratu jako miejsce, w którym powinniśmy przykleić diodę. Następnie wiercimy również 3 małe otwory po każdej stronie diody LED, przez którą przechodzą przewody i przylutowujemy je do każdej diody LED.

Łączymy łańcuchowo każdy rząd diod LED za pomocą ich pinów Data In i Data Out i lutujemy każdy GND i VCC do wspólnego przewodu. Wiodący Data In wygeneruje wzory świetlne dla każdego rzędu i połączyliśmy go z pinoutem mikrokontrolera/FPGA. Możesz także przylutować ostatnie dane wychodzące z jednego wiersza do wiodącego wejścia danych w innym wierszu. Sposób działania diody Ws2812b polega na tym, że każda dioda LED zawiera układ scalony, który pobierze wymagane dane z przewodu i przekaże resztę w dół łańcucha. Oparliśmy naszą diodę LED na innych fantastycznych instrukcjach (w rzeczywistości skopiowaliśmy to dokładnie! xD)

W tym miejscu chcielibyśmy również podkreślić znaczenie używania miękkich drutów. Jeśli użyjesz sztywnych, twardych przewodów dla wiodącego pinu Data In, co się dzieje, za każdym razem, gdy pociągniesz za przewód, może to spowodować wyciągnięcie miedzianej wyściółki na twoim Ws2812b, co go zniszczy. W tym projekcie, zanim przeszliśmy na miękkie przewody, zniszczyliśmy łącznie 40 diod, co stanowi 1/3 diod potrzebnych do naszego projektu.

Instruktaż:

Krok 5: Pisanie kodów do gier i debugowanie sprzętu

Pisanie kodów do gier i debugowanie sprzętu
Pisanie kodów do gier i debugowanie sprzętu
Pisanie kodów do gier i debugowanie sprzętu
Pisanie kodów do gier i debugowanie sprzętu
Pisanie kodów do gier i debugowanie sprzętu
Pisanie kodów do gier i debugowanie sprzętu

Mojo działa na Lucid HDL, który nie jest najpopularniejszym językiem na świecie. W Lucid nie możemy znaleźć żadnych bibliotek LED Ws2812b, dlatego uciekliśmy się do napisania własnej biblioteki, co jest bardzo ciekawym doświadczeniem. Aby to zrobić, najpierw przeanalizowaliśmy sygnał, który jest przekazywany za pomocą biblioteki FastLED Arduino i napisaliśmy kody, które to powielają. Oto sztuczka sprzętowego debugowania, oscyloskop jest bardzo, bardzo przydatny do analizy sygnałów, czy to debugowania własnego sygnału, którego nie jesteś pewien, czy sprawdzania i kopiowania innych sygnałów.

Po napisaniu biblioteki dla Ws2812b, przechodzimy do kodu gry, użyliśmy funkcji przesunięcia bitowego, aby przesunąć każdy blok w lewo i w prawo oraz użyliśmy bitowego AND do AND kwadratów każdego wiersza do poprzedniego wiersza. Możesz też pomyśleć o zaimplementowaniu tego w Arduino, co nie powinno być takie trudne. Dla zabawy zakodowaliśmy nawet ekrany gier!

Nasza gra miała 2 poziomy, czyli w widoczne układanie (zielony) i niewidzialną grę w układanie drugiego poziomu (niebieski).

Nawet po tym, jak mieliśmy działające kody i działającą matrycę LED, czasami nadal napotykamy problemy, takie jak migotanie świateł lub zapalanie się świateł, gdy nie powinny. Problem jest zwykle spowodowany niewłaściwym uziemieniem, poziomem zasilania lub zakłóceniami. W tym miejscu będziesz potrzebować innych narzędzi do debugowania sprzętu, takich jak zasilacz o zmiennej mocy, aby sprawdzić, czy zasilanie Mojo/Arduino jest wystarczające lub zbyt wysokie. Z mojego doświadczenia wynika, że Ws2812b ma dość szeroki zakres napięć roboczych od 2,8 V do 5 V. Tutaj mam wideo, które pokazuje, że światła szaleją po zwiększeniu mocy.

Jednak dalsza kontrola wykazała, że mieliśmy niewłaściwy lut, po ponownym przylutowaniu nasz problem został rozwiązany. Może też pojawić się problem z zakłóceniami lub przesłuchami, ale na szczęście nigdy nie spotkaliśmy się z żadnym z nich.

Kody Github:

Arduino Bitwise Shift:

Arduino Bitwise I:

Krok 6: Składanie wszystkiego razem

Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem
Składanie wszystkiego razem

Masz obudowę i matrycę LED. Teraz nadszedł czas, aby wszystko poskładać. Najpierw umieszczamy piankę z przodu, a za nią matrycę LED i dostosowujemy pozycję. Ponieważ pianka ma bardzo duże tarcie, została po prostu zamontowana na wcisk, podczas gdy matryca LED jest przyklejana na gorąco. Następnie umieściliśmy ekran przed siatką. Następnie podłączyliśmy pin każdego rzędu do mikrokontrolera i zaczęliśmy grać!:D

Jedną z rzeczy, które podoba mi się w tym projekcie, jest jego elastyczność, zawsze możesz przeprogramować mikrokontroler, aby był częścią innej gry i spróbować czegoś takiego jak tworzenie animacji lub gry reakcji. Mam nadzieję, że spodoba wam się robienie tego i nauczycie się czegoś do robienia tego. GgEz!

Zalecana: