Sådan kontrolleres robotter med en spilkontroller og Arduino

  • Harry James
  • 0
  • 5044
  • 1396
Reklame

Arduinos og lignende kompatible plader er en af ​​gåene til enheder til DIY-tinkerere overalt. Uanset om du er en nybegynder, der lige er kommet i gang med Arduino eller nogen, der allerede har brugt dem til at bruge i dit liv, giver de en platform for utallige fantastiske projekter.

I dag skal vi udforske en kreativ måde at styre en servo ved hjælp af Processing og en Xbox360-controller. Hvis du allerede er smuk med spiludviklingen, er du måske interesseret i vores brugervejledning til brugerdefineret spilkontroller, der bruger Unity.

Denne tutorial vil antage lidt forkundskendskab, hvis dette er din første foray til Arduino fiddling, finder du måske vores Arduino-guide nyttig her. Tilsvarende kan det være lidt forvirrende, hvis dette er din første gang at bruge Java. Mens Processing bruger en forenklet version af platformen, kan disse Java-koncepter og tip muligvis stadig hjælpe.

Hvad du har brug for

  • 1 x Arduino. Vi bruger en UNO i dag.
  • 1 x hobby-servo. Alt, der fungerer med Arduino-stifterne.
  • 1 x kablet Xbox360-controller. Selvom dette teknisk vil fungere med næsten enhver controller.
  • Flere tilslutningsledninger.

Ud over disse ting skal du også downloade Processing og Arduino IDE fra deres respektive websteder.

Forberedelse af Arduino

Først skal vi vedhæfte vores servo. Kabelfarverne kan variere her, men som hovedregel rød fastgøres til 5v pin, og Brun eller sort fastgør til GND pin. Datalinjen, som normalt er gul eller orange, fastgøres til pin 10.

Kontroller dine ledninger, og tilslut Arduino til computeren. Åbn op til Arduino IDE.

Åbn StandardFirmata-skitsen, der ligger kl Fil> Eksempler> Firmata> StandardFirmata. Denne skit sætter tavlen til ekstern kontrol over den serielle port, og er den samme, som vi brugte i vores artikel om styring af Arduino med Python Sådan programmeres og styres en Arduino med Python Sådan programmeres og styres en Arduino med Python Desværre er det er umulig at direkte programmere en Arduino i Python, men du kan kontrollere den over USB ved hjælp af et Python-program. Sådan gør du. . Upload skitsen til brættet.

Hvis upload mislykkes, skal du kontrollere, at du har valgt dit korrekte kort og portoplysninger i Værktøj menu.

Vores Arduino er klar til at gå!

Opsætning af behandling

Åbn behandling, du vil blive mødt med en tom skitse. Inden vi gør noget her, bliver vi nødt til at installere et par biblioteker. Gå til Skitse menu og vælg Importer bibliotek> Tilføj bibliotek. Dette vil bringe op Bidragsadministrator hvilket vil se velkendt ud for alle Arduino-brugere derude.

Vi er nødt til at installere tre biblioteker for at gøre dette arbejde. Først op er Game Control Plus bibliotek. Dette er, hvad der giver os mulighed for at bruge vores spilcontroller med Processing. Brug søgevinduet til at finde det, og klik på installation i nederste højre hjørne. Game Control Plus har brug for et andet bibliotek installeret til sit konfigurationsværktøj, så lad os få det nu. Søg efter G4P bibliotek og installer det også.

Endelig har vi brug for Arduino (firmata) bibliotek. Du gættede det, søg efter det, og klik på installation. Med disse ting installeret er vi klar til at fortsætte med at teste, at alt fungerer. Vi arbejder med Windows 10 i dag, men behandling er tilgængelig for de fleste platforme, inklusive Raspberry Pi. Forestil dig mulighederne!

Test af Arduino

Før vi dykker ned i at oprette en brugerdefineret skitse, lad os teste Arduino og Servo med behandling. Åben Fil> Eksempler, og vælg ArduinoServo fra Bidragte biblioteker / Arduino (firmata) folder. Vi bruger dette til at teste vores servo, men først skal vi muligvis ændre et par ting.

Rul ned gennem skitsen og find denne linje:

println (Arduino.list ());

Hvis det kommenteres, skal du fjerne de to skråstreg før println (Arduino.list ());, og gem skitsen. Kør det ved at klikke på play-ikonet og hold øje med konsollen i bunden. Dette viser en liste over alt, der er knyttet til din KOM havne.

I mit tilfælde var min Arduino på COM 8, som var den tredje havn, der er anført her. Dette er vigtigt, da koden i nedenstående linje har en Array hvis værdi bestemmer, hvilken COM-port der skal bruges.

Vi er nødt til at ændre dette for at afspejle vores COM-port. For mig var det den tredje position eller indeks nummer 2:

arduino = ny Arduino (dette, Arduino.list () [2], 57600);

Vi er nødt til at foretage et par andre små ændringer af denne kode for at teste den. Rul ned til det sted, hvor Arduino-stifterne er sat op, og kommenter en af ​​linjerne her. Skift den anden til Pin 10.

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

Vi er nødt til at gøre det samme i EU Tegne() metode:

arduino.servoWrite (10, begrænsning (musX / 2, 0, 180)); // arduino.servoWrite (4, begrænsning (180 - musX / 2, 0, 180)); 

Gem skitsen, og kør den. Du skal være i stand til at flytte din servo ved at flytte musen frem og tilbage over det vindue, programmet genererer.

Hvis det ikke fungerer for dig, skal du kontrollere dine Servo-ledninger og kontrollere, at du har den rigtige array-position til din COM-port. Når du ved, at Arduino taler pænt med Processing, er det tid til at gå videre.

Konfiguration af controller

Game Control Plus-biblioteket, vi bruger, leveres også med en kraftig konfiguration. Sørg for, at din controller er tilsluttet, åbn Configurator eksempel projekt, og kør det. Du får en menu som denne:

Klik på dit controller-navn, og et meget større konfigurationsvindue vises.

Dette kan se temmelig skræmmende ud, men det er designet til at være så enkelt som muligt. På venstre side udfyldes den første nøgle med det ønskede navn som variabel. Denne variabel styrer servoens position, så jeg vil kalde den servoPos.

I boksen ved siden af ​​kan du give en kort beskrivelse af, hvad den gør. Nu skal du hente din controller og flytte den pind, du ønsker at bruge med din servo. En lille eksperimentering viser, at den højre tommestik svarer til X Rotation-boksen. Træk en linje mellem servoPos variabel, og denne boks.

Nu skal vi gemme vores konfiguration som en datafil. Udfyld øverste højre hjørne af vinduet Enhedsrolle felt og Filnavn Mark.

Filnavnet er vigtigt, da du bruger det i din kode. Jeg holder det enkelt ved at kalde det XBS. Klik Verificere derefter Gemme. Dette skriver en fil med instruktioner til vores controller, som vi kan bruge senere.

Forberedelse af den tilpassede sketch-mappe

Lad os opsætte vores arbejdsmappe. Åbn en tom forarbejdningsskitse, og gem den under det navn, du vil. Dette vil oprette et katalog til det på den gemte placering.

Naviger nu til Dokumenter / Forarbejdning / biblioteker / GameControlPlus / eksempler / Configurator og kopier mappen mærket data. Denne mappe indeholder konfigurationsfilen, vi lige har oprettet. Naviger til biblioteket for din nyligt gemte tomme skitse, og indsæt datamappen.

Oprettelse af den tilpassede skitse

Nu er alt på plads, og vi kan begynde at lave en skitse ved hjælp af vores to biblioteker. Vi gennemgår dette trin for trin, men du kan downloade den fulde skitse- og datamappe, hvis du vil hoppe foran. Bemærk, at du muligvis stadig er nødt til at ændre koden for at afspejle dine Arduino COM-porte.

Begynd med at importere alle de biblioteker, vi har brug for:

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

Vi er også nødt til at erklære vores ControlDevice, I / O, og Arduino, sammen med en flyde at holde værdier fra vores thumbstick:

ControlDevice fortsat; ControlIO kontrol; Arduino arduino; float thumb;

Vores Opsætning() metoden opretter et lille vindue, et eksempel på controlleren, og matcher enheden med vores konfigurationsfil. Det er her det er vigtigt at få filnavnet til vores konfigurationsdatafil korrekt:

tom opsætning () størrelse (360, 200); kontrol = ControlIO.getInstance (dette); cont = control.getMatchDevice ("xbs"); if (fortsat == null) println ("ikke i dag chump"); // skrive bedre exit-erklæringer end mig System.exit (-1);  // println (Arduino.list ()); arduino = ny Arduino (dette, Arduino.list () [2], 57600); arduino.pinMode (10, Arduino.SERVO); 

Vi kontrollerer også, om der ikke er nogen relevant controller på dette trin, og afslutter om nødvendigt programmet. Mens vinduet oprettes med størrelse() er ikke nødvendigt, det vil give os nogle feedback senere på, om vi får nyttige værdier fra vores controller. Vi initialiserer også vores Arduino og fastgør her, ligesom vi gjorde, mens vi testede.

Nu skaber vi en lille metode til at få fat i inputværdien fra vores controller og kortlægge den til værdier, som vores servo vil være i stand til at bruge:

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

Denne ene kodelinie bruger vores datafil til at få vores navngivne kontrol servoPos, som er knyttet til den højre tommestik på controlleren og læse værdier fra den. Det kortlægger derefter værdierne og gemmer værdien i vores tommelfinger flydende variabel.

Lige nu bliver denne kode aldrig kaldet, vi fikser det nu.

void draw () getUserInput (); baggrund (thumb, 100.255); arduino.servoWrite (10, (int) tommelfinger); 

Det tegne() svarer til loop () metode i Arduino IDE. Hver ramme kalder den getUserInput () metode og opdaterer tommelfinger værdi. Den bruger denne værdi til at ændre den røde værdi af baggrund() giver os en visuel indikator for ændringen i værdi. Den skriver derefter denne værdi til servoen ved hjælp af arduino.servoWrite () fungere. Bemærk, at vi er nødt til at støbe tommelfinger som en heltalværdi, da servoWrite-funktionen tager to heltal (pin-nummer og vinkel) som dens argumenter.

Kontroller din kode for fejl, gem den, og klik på Kør. Efter en lille forsinkelse med at initialisere Arduino, skal det se sådan ud:

Kontrol med spilkontroller og Arduino: færdig!

Dette projekt var på mange måder ganske dybtgående for den uerfarne koder Lær med kodningsprojekter: 9 Udemy-kurser til begynderprogrammøren Lær med kodningsprojekter: 9 Udemy-kurser til begynderprogrammereren Den virkelige vanskelighed er at finde gode programmeringsvejledninger og kurser, som ikke kun lærer dig de nødvendige færdigheder, men gør det med praktiske projekter. Det er her Udemy træder ind. På trods af de fantastiske biblioteker, der er tilgængelige for at hjælpe os. Hvad det repræsenterer er en ny måde at tænke på at kontrollere robotter og alle andre enheder, du bygger.

Dette projekt ville gå perfekt sammen med vores guide til opbygning af en laser turret Pew Pew! Sådan bygger du en lasertårn med en Arduino Pew Pew! Sådan bygger du en lasertårn med en Arduino Keder du dig? Kan også bygge en lasertårn. , hvilket giver dig fuld kontrol over det. Du kan indstille en Piezo-summer som i vores Simple Arduino Alarm Sådan oprettes et simpelt Arduino Alarm System Sådan oprettes et simpelt Arduino Alarm System Registrer bevægelse, og skræm derefter pokker ud af en ubuden gæst med en høj tonehøjde og blinkende lys. Lyder det sjovt? Selvfølgelig gør det det. Det er målet med dagens Arduino-projekt, passende… tutorial og brug din controller til at ændre tonehøjden på summeren eller farven på lysene.

Eller du kan godt bygge en massiv robot og overtage jorden. Så længe du havde en USB-ledning længe nok!




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.