Jak kontrolować roboty za pomocą kontrolera gier i Arduino

  • Michael Cain
  • 0
  • 1145
  • 1
Reklama

Arduinos i podobne kompatybilne tablice to jedno z wielu urządzeń majsterkowiczów na całym świecie. Niezależnie od tego, czy jesteś początkującym, który dopiero zaczyna pracę z Arduino, czy kimś, kto już je wykorzystuje w swoim życiu, stanowią platformę dla niezliczonych niesamowitych projektów.

Dzisiaj będziemy badać kreatywny sposób kontrolowania serwomechanizmu za pomocą Przetwarzania i kontrolera Xbox360. Jeśli jesteś już dość doświadczony w tworzeniu gier, być może zainteresuje Cię nasz samouczek Custom Game Controller, który wykorzystuje Unity.

Ten samouczek wymaga trochę wcześniejszej wiedzy. Jeśli jest to Twoja pierwsza próba gry na Arduino, może się przydać nasz przewodnik Arduino. Podobnie, jeśli używasz Javy po raz pierwszy, może to być nieco mylące. Podczas gdy Processing korzysta z uproszczonej wersji platformy, te koncepcje i wskazówki Java mogą nadal pomóc.

Czego potrzebujesz

  • 1 x Arduino. Dzisiaj korzystamy z UNO.
  • 1 x serwo hobby. Wszystko, co będzie działać z pinami Arduino.
  • 1 x przewodowy kontroler Xbox360. Chociaż technicznie będzie to działać z prawie każdym kontrolerem.
  • Kilka przewodów przyłączeniowych.

Oprócz tych rzeczy musisz także pobrać Processing i Arduino IDE z odpowiednich stron internetowych.

Przygotowanie Arduino

Najpierw musimy dołączyć nasze serwomechanizm. Kolory przewodów mogą się tutaj różnić, ale z zasady czerwony dołącza do 5v pin i brązowy lub czarny dołączyć do GND kołek. Linia danych, która zwykle jest żółty lub Pomarańczowy, dołącza się do pin 10.

Sprawdź okablowanie i podłącz Arduino do komputera. Otwórz Arduino IDE.

Otwórz szkic StandardFirmata znajdujący się pod adresem Plik> Przykłady> Firmata> StandardFirmata. Ten szkic przedstawia tablicę do zewnętrznej kontroli nad portem szeregowym i jest tym samym, którego użyliśmy w naszym artykule na temat sterowania Arduino za pomocą Pythona Jak programować i kontrolować Arduino za pomocą Pythona Jak programować i kontrolować Arduino za pomocą Pythona Niestety niemożliwe jest bezpośrednie zaprogramowanie Arduino w Pythonie, ale można sterować nim przez USB za pomocą programu Python. Oto jak. . Prześlij szkic na tablicę.

Jeśli przesyłanie się nie powiedzie, sprawdź, czy wybrałeś poprawne dane płyty i portu w Przybory menu.

Nasze Arduino jest gotowe do pracy!

Konfigurowanie przetwarzania

Otwórz przetwarzanie, zostaniesz przywitany pustym szkicem. Zanim cokolwiek tu zrobimy, będziemy musieli zainstalować kilka bibliotek. Udaj się do Naszkicować menu i wybierz Importuj bibliotekę> Dodaj bibliotekę. To wywoła Menedżer kontrybucji który będzie wyglądał znajomo dla wszystkich użytkowników Arduino.

Aby to zadziałało, musimy zainstalować trzy biblioteki. Najpierw jest Game Control Plus biblioteka. To pozwoli nam korzystać z naszego kontrolera gier z przetwarzaniem. Użyj okna wyszukiwania, aby je znaleźć, i kliknij zainstaluj w prawym dolnym rogu. Game Control Plus wymaga zainstalowania innej biblioteki do narzędzia konfiguracyjnego, więc zdobądźmy ją teraz. Wyszukaj G4P bibliotekę i zainstaluj ją.

Wreszcie potrzebujemy Arduino (firmata) biblioteka. Zgadłeś, wyszukaj i kliknij zainstaluj. Po zainstalowaniu tych rzeczy jesteśmy gotowi rozpocząć testowanie, czy wszystko będzie działać. Współpracujemy dziś z systemem Windows 10, ale przetwarzanie jest dostępne dla większości platform, w tym Raspberry Pi. Wyobraź sobie możliwości!

Testowanie Arduino

Zanim zagłębimy się w tworzenie niestandardowego szkicu, przetestujmy Arduino i Serwo z przetwarzaniem. otwarty Plik> Przykłady, i wybierz ArduinoServo z Wniesione biblioteki / Arduino (firmata) teczka. Użyjemy tego do przetestowania naszego serwomechanizmu, ale najpierw możemy potrzebować zmienić kilka rzeczy.

Przewiń szkic w dół i znajdź tę linię:

println (Arduino.list ());

Jeśli jest skomentowany, usuń wcześniej dwa ukośniki println (Arduino.list ());, i zapisz szkic. Uruchom go, klikając ikonę odtwarzania i miej oko na konsolę na dole. Spowoduje to wyświetlenie listy wszystkich załączników COM porty.

W moim przypadku moje Arduino było na COM 8, który był trzecim wymienionym tu portem. Jest to ważne, ponieważ kod w poniższym wierszu zawiera Szyk którego wartość określa, którego portu COM należy użyć.

Musimy to zmienić, aby odzwierciedlić nasz port COM. Dla mnie była to trzecia pozycja lub numer 2:

arduino = nowe Arduino (this, Arduino.list () [2], 57600);

Musimy wprowadzić kilka innych małych zmian w tym kodzie, aby go przetestować. Przewiń w dół do miejsca ustawienia pinów Arduino i skomentuj jedną z linii tutaj. Zmień drugi na Pin 10.

//arduino.pinMode(4, Arduino.SERVO); arduino.pinMode (10, Arduino.SERVO);

Musimy zrobić to samo w Rysować() metoda:

arduino.servoWrite (10, constrain (mouseX / 2, 0, 180)); // arduino.servoWrite (4, constrain (180 - mouseX / 2, 0, 180)); 

Zapisz szkic i uruchom go. Powinieneś być w stanie poruszać serwomechanizmem, przesuwając mysz tam i z powrotem w oknie generowanym przez program.

Jeśli to nie działa, sprawdź okablowanie serwomechanizmu i sprawdź, czy masz odpowiednią pozycję tablicy dla portu COM. Kiedy już wiesz, że Arduino ładnie rozmawia z Processing, czas przejść dalej.

Konfigurowanie kontrolera

Używana przez nas biblioteka Game Control Plus ma również rozbudowaną konfigurację. Upewnij się, że kontroler jest podłączony, otwórz Konfigurator przykładowy projekt i uruchom go. Otrzymasz takie menu:

Kliknij nazwę kontrolera, a pojawi się znacznie większe okno konfiguracji.

Może to wyglądać dość zniechęcająco, ale zostało zaprojektowane tak, aby było tak proste, jak to możliwe. Po lewej stronie wpisz pierwszy klucz z nazwą, którą chcesz jako zmienną. Ta zmienna będzie kontrolować pozycję serwomechanizmu, więc zamierzam to nazwać serwomechanizmy.

W polu obok możesz podać krótki opis tego, co robi. Teraz podnieś kontroler i przesuń drążek, którego chcesz używać z serwomechanizmem. Trochę eksperymentów pokazuje, że prawy drążek odpowiada polu Obrót X. Przeciągnij linię między serwomechanizmy zmienna i to pole.

Teraz musimy zapisać naszą konfigurację jako plik danych. W prawym górnym rogu okna wypełnij Rola urządzenia pole i Nazwa pliku pole.

Nazwa pliku jest ważna, ponieważ będziesz go używać w kodzie. Mówię to w prosty sposób xbs. Kliknij Zweryfikować następnie Zapisać. Spowoduje to zapisanie pliku z instrukcjami dla naszego kontrolera, z którego będziemy mogli później skorzystać.

Przygotowanie niestandardowego folderu szkicu

Skonfigurujmy nasz folder roboczy. Otwórz pusty szkic przetwarzania i zapisz go pod dowolną nazwą. Spowoduje to utworzenie dla niego katalogu w lokalizacji zapisu.

Teraz przejdź do Dokumenty / Przetwarzanie / biblioteki / GameControlPlus / przykłady / Konfigurator i skopiuj folder oznaczony dane. Ten folder zawiera właśnie utworzony plik konfiguracyjny. Przejdź do katalogu nowo zapisanego pustego szkicu i wklej folder danych.

Tworzenie własnego szkicu

Teraz wszystko jest na swoim miejscu i możemy zacząć szkicować za pomocą naszych dwóch bibliotek. Przejdziemy przez ten krok po kroku, ale możesz pobrać pełny folder ze szkicem i danymi, jeśli chcesz skoczyć do przodu. Pamiętaj, że nadal może być konieczne zmodyfikowanie kodu w celu odzwierciedlenia portów COM Arduino.

Rozpocznij od zaimportowania wszystkich potrzebnych bibliotek:

import processing.serial. *; import net.java.games.input. *; import org.gamecontrolplus. *; import org.gamecontrolplus.gui. *; import cc.arduino. *; import org.firmata. *;

Musimy także zadeklarować nasze ControlDevice, I / O, i Arduino, wraz z pływak aby zachować wartości z naszej kciuka:

ControlDevice cd; Kontrola ControlIO; Arduino arduino; pływak kciuk;

Nasz Ustawiać() Metoda tworzy małe okno, instancję kontrolera i dopasowuje urządzenie do naszego pliku konfiguracyjnego. W tym miejscu ważne jest, aby nazwa pliku naszego pliku danych konfiguracyjnych była poprawna:

void setup () size (360, 200); control = ControlIO.getInstance (this); cont = control.getMchedDevice („xbs”); if (cont == null) println („not not chump”); // napisz lepsze instrukcje wyjścia niż ja System.exit (-1);  // println (Arduino.list ()); arduino = nowe Arduino (this, Arduino.list () [2], 57600); arduino.pinMode (10, Arduino.SERVO); 

Sprawdzamy również, czy na tym etapie nie ma odpowiedniego kontrolera i w razie potrzeby rezygnujemy z programu. Podczas gdy okno utworzone za pomocą rozmiar() nie jest potrzebne, przekaże nam później informację zwrotną na temat tego, czy otrzymujemy przydatne wartości od naszego kontrolera. Inicjujemy również nasze Arduino i przypinamy tutaj, tak jak to zrobiliśmy podczas testów.

Teraz tworzymy małą metodę przechwytywania wartości wejściowej z naszego kontrolera i mapujemy ją na wartości, których nasze serwo będzie mogło używać:

public void getUserInput () thumb = map (cont.getSlider ("servoPos"). getValue (), -1, 1, 0, 180); 

Ten jeden wiersz kodu używa naszego pliku danych, aby uzyskać naszą nazwaną kontrolę serwomechanizmy, który jest powiązany z prawą drążkiem kontrolera i odczytuje z niego wartości. Następnie mapuje wartości i przechowuje wartość w naszym kciuk zmienna zmiennoprzecinkowa.

W tej chwili ten kod nigdy się nie wywołuje, naprawimy to teraz.

void draw () getUserInput (); tło (kciuk, 100,255); arduino.servoWrite (10, (int) thumb); 

The rysować() jest podobny do pętla() Metoda w Arduino IDE. Każda ramka nazywa getUserInput () metoda i aktualizuje kciuk wartość. Używa tej wartości do zmiany czerwonej wartości tło() dając nam wizualny wskaźnik zmiany wartości. Następnie zapisuje tę wartość do serwomechanizmu za pomocą arduino.servoWrite () funkcjonować. Pamiętaj, że musimy rzucać kciuk jako wartość całkowitą, ponieważ funkcja servoWrite przyjmuje za argument dwie liczby całkowite (numer pinu i kąt).

Sprawdź kod pod kątem błędów, zapisz go i kliknij uruchom. Po niewielkim opóźnieniu w celu zainicjowania Arduino powinno to wyglądać następująco:

Sterowanie za pomocą kontrolera gier i Arduino: zakończone!

Ten projekt był pod wieloma względami dość dogłębny dla niedoświadczonego programisty Ucz się z projektowaniem kodowania: 9 kursów Udemy dla początkującego programisty Ucz się z projektowaniem kodowania: 9 kursów Udemy dla początkującego programisty Prawdziwą trudnością jest znalezienie dobrych samouczków programowania i kursów, które nie tylko nauczyć cię niezbędnych umiejętności, ale rób to z praktycznymi projektami. Właśnie tam wkracza Udemy. Pomimo fantastycznych bibliotek, które mogą nam pomóc. To, co reprezentuje, to nowy sposób myślenia o sterowaniu robotami i dowolnymi innymi urządzeniami, które budujesz.

Ten projekt idealnie pasowałby do naszego przewodnika po budowie pewnej pewnej wieży z wieżyczką laserową! Jak zbudować wieżyczkę laserową z ławką Pew Arduino! Jak zbudować wieżyczkę laserową z Arduino Czy jesteś znudzony? Równie dobrze może zbudować wieżę laserową. , dając ci pełną kontrolę nad tym. Możesz ustawić brzęczyk Piezo jak w naszym prostym alarmie Arduino Jak zrobić prosty system alarmowy Arduino Jak zrobić prosty system alarmowy Arduino Wykryj ruch, a następnie przestraszyć intruza dzięki wysokim dźwiękom alarmu i migającym światłom. Czy to brzmi zabawnie? Oczywiście, że tak. Taki jest cel dzisiejszego projektu Arduino, odpowiedni… samouczek i użyj kontrolera, aby zmienić wysokość brzęczyka lub kolor świateł.

Możesz też zbudować masywnego robota i przejąć ziemię. Tak długo, jak masz wystarczająco długi kabel USB!




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.