Cov txheej txheem:

Accelerometer Game Controller: 8 Kauj Ruam
Accelerometer Game Controller: 8 Kauj Ruam

Video: Accelerometer Game Controller: 8 Kauj Ruam

Video: Accelerometer Game Controller: 8 Kauj Ruam
Video: Wireless gamepad using websockets & accelerometer in GODOT 2024, Kaum ib hlis
Anonim
Accelerometer Game Controller
Accelerometer Game Controller

Voorlopige Text… nyeem ntxiv

Kauj ruam 1: MATERIAAL

Cov ntaub ntawv
Cov ntaub ntawv
  • Arduino Leonardo: een microcontroller-bord als brein van onze game controller.
  • Micro USB kabel: om onze game controller aan te sluiten aan een computer.
  • Breadboard: zo hoeven peb niet te solderen en blijft ons ontwerp makkelijk aanpasbaar.
  • Breadboard jumper xov hlau: txhua tus tivthaiv tau ntsib elkaar te verbinden.
  • MPU6050 tus ntsuas qhov ntsuas: een sensor tuag versnellingen hauv de verschillende richtingen kan lezen, zoals je vaak hauv smartphones, hoverboards en balancerende robots vindt.
  • Twee mini laub khawm: om knoppen te programmeren tuag los staan van onze accelerometer.

Kev xaiv

Breadboard en Arduino houder: om compact te kunnen werken

Kauj ruam 2: ARDUINO SOFTWARE

Txawm li cas los xij, peb tau pib aan de bouw- en programme txhais lus hebben peb de juiste software nodig om het brein van onze game controller, een Arduino Leonardo, te kunnen besturen. Yog tias koj tau teeb tsa, koj tuaj yeem ua haujlwm tau:

  • Ga via volgende link naar de downloadpagina van Arduino:
  • Kies voor de juiste software op paus van je ua haujlwm systeem.
  • Nyem rau download.
  • Je hebt nu een (.exe) bestand dat je uitvoert door er op te dubbel klikken om de installatie te vervolledigen.

!!! Wij hebben onze tswj gecreëerd ntsib het gedownloade programma. Hauv Windows App, koj tuaj yeem hloov pauv, tab sis koj tuaj yeem rub tawm cov ntawv hauv ib lub hlis twg.

  • Qhib de Arduino software.
  • Connecteer je Arduino Leonardo ntsib nrog micro USB kabel aan je lub computer, de Leonardo cov tsav tsheb lo lus automatisch geïnstalleerd (dit gebeurt enkel als het de eerst keer yog dat je de Arduino aansluit).

Als je nog niet zo vertrouwd bent ntsib Arduino software, ntawm je controleert graag eens ntawm je Arduino Leonardo foutloos verbinding maakt ntsib je computer, dan kan je dat makkelijk testen ntsib een voorbeeldprogramma:

  • Kies ntawm Bestand> Voorbeelden> 01. Basics> Blink om een voorbeeldprogramma te openen.
  • Vervolgens kies je bij Hulpmiddelen> Board> Arduino Leonardo om de software te laten weten welk type board wij gaan gebruiken.
  • Selecteer de juiste seriële poort door bij Hulpmiddelen> Poort> COMx (Arduino Leonardo te kiezen. Dit doe je om aan te geven via welke USB poort je Arduino communiceert.
  • Nyem rau ntawm qhov linkerbovenhoek op het pijltje symbool om het voorbeeldprogramma te uploaden.
  • Cov kab ntawv txuas ua ke zie je een indicatie tuag aantoont dat het programma aan het uploaden is, gevolgd door de boodschap 'uploaden voltooid' bij succes.

!!! Als het uploaden niet lukt en een rode foutmelding geeft thiab ligt dit vaak aan een fout hauv de code. Hauv dit geval gebruiken peb een foutloze voorbeeldcode, waardoor de fout bij de connectie tussen de Leonardo en je computer moet liggen.

Kauj Ruam 3: LIBRARY FOLDER

Arduino's zijn hauv staat om heel veel data te verwerken. Dit zorgt er voor dat er ook veel code nodig yog om deze cov ntaub ntawv raug te ua ke. Om deze code niet eindeloos lang en complex te schrijven, maken wij gebruik van Arduino Libraries, bibliotheken van code die bepaalde sensors gaan sturen en ons werk een stuk makkelijker maken. Ons project gebruik drie soortgelijke cov tsev qiv ntawv: Hlau, I2Cdev en MPU6050. De Arduino software heeft een goede foundation aan libraries ingebouwd, alsook onze eerste (Wire) bibliotheek, maar de twee andere dienen we zelf nog te installeren:

  • Volg deze link en klik op 'Clone or Download' en download de ZIP file
  • Nyem rau ntawm ZIP cov ntaub ntawv uas koj tuaj yeem ua tau los ntawm kev ua kom zoo tshaj plaws.
  • Hauv de bekomen daim ntawv qhia vind je ntawm i2cdevlib-master> Arduino de folders 'I2Cdev' en MPU6050.
  • Kopieer beide mappen naar de Arduino daim ntawv qhia C ntawm Program> Cov Ntaub Ntawv> Arduino> Cov Tsev Qhua.

!!! Cov neeg Isdias uas tsis yog cov neeg siv nruab ntawm lub software zelf een andere locatie opgegeven hebt dan, vind je de nodige mappen daar. Het is niet de bedoeling dat je zelf een map aanmaakt.

  • Sluit de Arduino software af en start ze opnieuw op om toegang tot de libraries te krijgen.
  • Ntawm Schets> Bibliotheek Gebruiken kan je controleren of nu ook I2Cdev en MPU6050 te vinden zijn.

Kauj Ruam 4: ACCELEROMETER - DE THEORIE

ACCELEROMETER - DE THEORIE
ACCELEROMETER - DE THEORIE

Een accelerometer werkt op paus van het piezoelectrisch effect. Stel je een kubusvormig doosje voor waar een klein balletje hauv zit (zoals in de bovenstaande illustratie) waar elke wand gemaakt yog uit piezoelektrische kristallen. Wanneer je de kubus kantelt verplaatst het balletje zich naargelang de zwaartekracht. Waar het balletje de kubus wanden raakt ontstaat er piezoelectrische stroom. De drie paar evenwijdige wanden van de kubus worden gekoppeld aan de dryingimensionale X, Y en Z assen. Afhankelijk van de piezoelectrische stroom geproduceerd langs deze wanden kunnen peb zo de versnelling hauv drie dimensies bepalen.

Tsis txhob hnov qab ua raws li cov hauv qab no: Hauv lub xov tooj smartphone zit tegenwoordig ook standaard een accelerometer. Deze zorgt er onder andere voor dat je scherm automatisch meedraait als je smartphone kantelt.

Kauj Ruam 5: ACCELEROMETER - DE PRAKTIJK

ACCELEROMETER - DE PRAKTIJK
ACCELEROMETER - DE PRAKTIJK

Peb tau ntub cov ntaub ntawv ntawm cov ntaub ntawv hauv X, Y en Z li kan meten, maar ntsib onze Arduino software kunnen peb tuag cov ntaub ntawv ook echt zien en opvolgen. Yog li koj tuaj yeem ua haujlwm ntau npaum li cas:

Sluit de accelerometer aan volgens bovenstaand schema en verbind de Arduino Leonardo ntsib kuv lub computer

!!! De accelerometer wordt voorzien van de nodige pinnen om makkelijk op een breadboard te prikken, maar deze pinnen dienen wel nog gesoldeerd te worden. Je krijgt de optie om die haaks op je breadboard te plaatsen (bespaart plaats) of evenwijdig zoals ins voorbeeld.

  • Rub tawm ons 'MPU6050_intro' zoo tshaj plaws thiab qhib qhib deze hauv de Arduino software.
  • Controleer ntawm je boardtype en poort nog steeds juist staan.
  • Nyem rau ntawm qhov linkerbovenhoek op het pijltje om het programma up te loaden.
  • Xaiv los ntawm Hulpmiddelen> Seriële Monitor
  • Een nieuw venster opent ntsib 3 kolommen ntsib getallen, dit zijn de versnellingen hauv de X, Y en Z assen.
  • Beweeg je accelerometer om de versnellingen in alle richtingen te zien.

Terwijl peb tsis txhob hnov qab ntau cov ntaub ntawv nyob rau hauv hebben kunnen peb tau ntsib hnub nyoog verkennend ua haujlwm doen voor onze onze game maub los. Leg de Arduino en accelerometer plat op de tafel en noteer gemiddelde X en Y waarde (mag een ruwe schatting zijn). Daim ntawv thov kev pab cuam hauv qab no:

  • Kantel de accelerometer 45 ° naar rechts en noteer de gemiddelde X waarde.
  • Kantel de accelerometer 45 ° naar links en noteer de gemiddelde X waarde.
  • Kantel de accelerometer 45 ° naar voor en noteer de gemiddelde Y waarde.
  • Kantel de accelerometer 45 ° naar achter en noteer de gemiddelde Y waarde.

Kauj Ruam 6: QHIA CONTROLLER

GAME CONTROLLER
GAME CONTROLLER

Ua tsaug ntau uas koj ua haujlwm! Peb gebruiken onze accelerometer samen ntsib twee drukknoppen om het brein van onze eigen game controller te worden. Koppel de Arduino en accelerometer los en bouw het geheel opnieuw op volgens bovenstaand schema.

!!! De mini laub khawm hebben vaak een buiging hauv hun beentjes. Druk tuag plat ntsib een punttang om ze makkelijker hauv je breadboard te krijgen.

  • Rub tawm ons 'MPU6050_gamecontroller' zoo tshaj plaws thiab qhib deze hauv de Arduino software.
  • Verbind je Arduino en klik in de linkerbovenhoek op het pijltje om het programma up te loaden.
  • De Arduino Leonardo stuurt nu cov ntaub ntawv tsis tu ncua qhov rooj naar je computer. Wil je de datavoer txawm pauzeren, koppel dan de dhia hlau op tus pin 12 txawm tias los, en verbind die opnieuw als je verder wilt gaan.
  • Proficiat! Je hebt nu een lub hauv paus tswj hwm gemaakt, sim het gerust eens uit op pacman.

Geen paniek als je controller niet metéén doet wat kuv muaj verwacht. Qhov zoo tshaj plaws gewoon dat peb nog calibratie ua haujlwm hebben om de tswj aan te passen naar onze noden. Daarvoor duiken peb hauv de Arduino code

Kauj Ruam 7: CODE - Siv LIBRARIES

CODE - SIV LIBRARIES
CODE - SIV LIBRARIES

Het leuke aan Arduino code yog dat deze snel aanpasbaar yog zonder dat je daarvoor een uitgebreide programmeerkennis moet hebben. Om je op weg te helpen overlopen peb kort waar je wat vindt, en wat je kan aanpassen om je controller kalibreren.

Hauv de 'MPU6050_gamecontroller' code vind je een heleboel lichtgrijze tekst. Dat yog tekst tuag geen invloed heeft op de code, maar tuag dient om de code wat te qauv. Ook tekst die na // komt, staat los van de code en dient als verduidelijking. De eerste echte code vinden we terug onder de titel 'Siv Cov Tsev Qiv Ntawv', daar herken je meteen de cov tsev qiv ntawv tuag peb nyob rau hauv qhov chaw drie geïnstalleerd hebben.

  • #suav nrog geeft aan dat peb de 'IC2dev' bibliotheek gaan gebruiken
  • const int ENABLE = 12 geeft aan dat peb pin 12 gebruiken als veiligheid. Yog deze pin niet verbonden thiab stopt ons programma automatisch.
  • const int A_BUTTON = 6 geeft aan dat onze Ib pob txha aangesloten yog op poort 5

!!! De code onder Setup zijn afspraken tussen je Arduino en je computer hla hoe deze communiceren, hauv ons geval laten peb dit deel code gewoon zoals ze yog.

Kauj Ruam 8: CODE: LOOP

CODE: LOJ
CODE: LOJ

Onder de titel 'Loop' vind je lijnen code die non stop draaien als onze Arduino Leonardo verbonden tau ntsib de computer en pin 12 yog aangesloten. Het is ook meteen het deel van de code waar we het meest kunnen aanpassen. De code onder 'khawm A' en 'khawm B' yog gekoppeld aan onze mini thawb cov nyees khawm uas yog aanpassen qhov rooj hauv de code Keyboard.release ('a') enKeyboard.release ('a') twee maal de ('a') te vervangen qhov rooj eender welke ander keyboard toets.

!!! Sommige keyboardtoetsen moet kan je niet rechtstreeks intypen maar hebben een code. Zo zou je de 'Rho tawm' knop moet ingeven als 'KEY_DELETE' ntawm als decimale waarde '212'. Een lijst van dit soort uitzonderingen binnen arduino vind je via deze link. Wil je nog meer info dan kijk je best eens naar de ASCII.

Nyob rau sab xis, sab laug, nce en down vind je vrij gelijkaardige code als bij de nyees khawm, het grote verschil zit hem in het if (accx <-20000) deel van de code. Dit verwijst naar de accelerometer: als de accelerometer naar rechts kantelt en een waarde kleiner dan -20000 leest dan lo lus de de rechter pijltoets (KEY_RIGHT_ARROW) ingeduwd. Kantel je opnieuw naar links en wordt de waarde groter dan -20000 dan laat hij de rechter pijltoets opnieuw los.

Hier komen de genoteerde waarden uit stap vijf van pas. Pas de waarden aan naargelang je noties om zo jou specifieke accelerometer te kalibreren. Kuv tuaj yeem tau txais daim ntawv tso cai los ntawm tus kws kho mob lossis tus kws kho mob.

Tenslotte vinden we helemaal onderaan de code ncua sijhawm (50). Dat stukje code vertraagt het aantal keyboard toetsen die je computer doorkrijgt. Merkje dat je controller te veel commando's doorgeeft dan verhoog je dit getal ntsib enkele tientallen. Reageert alles te traag thiab verklein je het getal wat.

Kev sim ib qho yuam kev yog de boodschap!

Pom zoo: