- Przegląd:
- Wymagane składniki:
- Objaśnienie obwodu:
- Działanie akcelerometru:
- Programowanie Arduino:
- Programowanie Przetwarzanie:
- Testowanie:
Rozszerzona rzeczywistość i gry wirtualne stały się najnowszym trendem w branży gier. Czasy używania klawiatury / joysticka i myszy do grania w gry komputerowe już dawno minęły. Teraz każda konsola do gier jest wyposażona w kontroler wirtualny, który pomaga nam grać w grę za pomocą ruchów ciała i gestów, dzięki czemu wrażenia z gry znacznie wzrosły, a użytkownik czuje się bardziej zaangażowany w grę.
W tym projekcie spróbujmy się dobrze bawić, ucząc się poprzez projekt. Stwórzmy grę (tak, dobrze słyszałeś, mamy zamiar stworzyć grę) i zagrajmy w nią za pomocą ruchu dłoni. Tworzymy klasyczną grę w ping ponga za pomocą Arduino i akcelerometru.
Przegląd:
Obecnie dostępnych jest mnóstwo oprogramowania open source, które przyniosło mnóstwo szczęścia hobbystom, takim jak my, a przetwarzanie jest jednym z nich. Dzięki tej aplikacji opartej na JAVA możemy zbudować własne oprogramowanie (format.exe), a także aplikację na Androida (plik.apk). Więc zamierzamy użyć tego oprogramowania do zbudowania naszej gry, wcześniej używaliśmy Przetwarzania do tworzenia Arduino Chat Room.
Część sprzętowa będzie składać się z Arduino, które pobierze dane wejściowe z akcelerometru, aby przesłać je szeregowo do naszego komputera / laptopa.
Więc chodźmy na zakupy !!!!
Wymagane składniki:
- Arduino (dowolna wersja lub model)
- Akcelerometr
- Przewody łączące
- Odsetki (Lolz)
Akcelerometr i Arduino Nano
Objaśnienie obwodu:
Obwód Arduino Ping Pong Ball Game Project nie wymaga żadnych skomplikowanych połączeń. Użyłem Arduino Nano z akcelerometrem. Ale jest kilka rzeczy, którymi należy się zająć, jak wspomniano poniżej:
1. Akcelerometr nie radzi sobie z napięciem 5 V, więc zawsze podłączaj Vcc akcelerometru do pinu 3,3 V Arduino.
2. Każdy akcelerometr cierpi z powodu grawitacji, z którą trzeba sobie poradzić podczas programowania (po prostu używając filtra).
Mając to na uwadze, przyjrzyjmy się działaniu akcelerometru i sposobowi jego wykorzystania.
Działanie akcelerometru:
Przyspieszeniomierz jest urządzeniem, które można przekształcić przyspieszenia w każdym kierunku, odpowiadającym napięciu zmiennym. Odbywa się to za pomocą kondensatorów (patrz ilustracja), ponieważ Accel się porusza, kondensator obecny w nim również ulegnie zmianom (patrz ilustracja) w oparciu o ruch, ponieważ pojemność jest zmienna, można również uzyskać zmienne napięcie.
Tak więc, jak wspomniano powyżej, każdy akcelerometr boryka się z problemem efektu grawitacji. Bez względu na to, jak dokładny jest skalibrowany czujnik (nawet w telefonach Apple Accel.), Grawitacja będzie miała na niego wpływ. Bardziej techniczne wyjaśnienie tego problemu podano poniżej.
Teraz w Arduino możemy zredukować efekt grawitacji za pomocą prostego filtru. Ten filtr będzie składał się z dwóch tablic, z których jedna jest używana do przechowywania wartości próbek z czujnika, a druga do sortowania wartości próbek i wyszukiwania najczęściej powtarzanych wartości. Zaimplementujmy ten algorytm w naszym Arduino i przygotujmy nasz sprzęt.
Programowanie Arduino:
Program Arduino jest podany poniżej w sekcji Kod. Nie ma krytycznych danych, które trzeba modyfikować. Ale warto rozważyć następujące kwestie:
Zwiększ rozmiar próbki, jeśli Accel nadal pokazuje losowe wartości.
#define Samplesize 13 // filterSample number
Graj z szybkością 9600 bodów, aby zwiększyć prędkość komunikacji między Arduino a procesorem. Ale pamiętaj, aby zmienić je w obu programach (Programy).
void setup () {Serial.begin (9600); }
Mój akcelerometr na osi X daje 193 na lewym końcu i 280 na prawym końcu, zmierz je dla swojego Accel i zaktualizuj wartość.
toSend = map (smoothData1, 193, 280, 0, 255);
Wartości są mapowane na jeden bajt danych do komunikacji szeregowej.
Następnie zapoznaj się z komentarzami w podanym poniżej Kodeksie, aby dobrze go zrozumieć.
Programowanie Przetwarzanie:
Przetwarzanie jest oprogramowaniem open source, które jest używane przez artystów do projektowania grafiki. To oprogramowanie służy do tworzenia oprogramowania i aplikacji na Androida. Jest dość łatwy w tworzeniu i bardzo podobny do IDE Android Development. Dlatego skróciłem wyjaśnienie.
Kod przetwarzania gry w ping ponga jest podany tutaj:
- Przetwarzanie kodu do gry w ping ponga Arduino
Kliknij go prawym przyciskiem myszy i kliknij „Zapisz łącze jako…”, aby pobrać plik kodu. Następnie otwórz plik w programie „Przetwarzanie” i kliknij przycisk „Uruchom”, aby zagrać w Grę. Aby otworzyć pliki *.pde, musisz zainstalować oprogramowanie „Processing”. Sekcja komentarzy jest otwarta dla zapytań, a także sprawdź komentarze w Programie, aby lepiej go zrozumieć.
Poniższy wiersz w funkcji void setup () kodu Processing code jest ważny, ponieważ decyduje, z którego portu mają być przesyłane dane.
port = nowy Serial (this, Serial.list (), 9600); // Odczytuje czwarty PORT przy 9600 bodów
Tutaj odczytałem dane z 4 portu z mojego Arduino.
Więc na przykład, jeśli masz COM COM COM COM COM
Wtedy powyższy kod odczyta dane z COM.
Testowanie:
Teraz, gdy nasz szkic Przetwarzanie i Arduino jest gotowy, po prostu prześlij poniższy program do Arduino i podłącz Arduino do komputera użytkownika, aby dokładnie programować kabel i uruchom grę, uruchamiając plik kodu przetwarzania (.pde). Otóż to! Przesuń akcelerometr i zagraj w ping ponga. Wideo poprowadzi Cię przez kompletnego projektu.
Po zrozumieniu programu możesz tworzyć wiele podobnych gier i grać w nie za pomocą Arduino. Ponadto oś Y i oś Z mogą być również dołączone do gier.