Inhoudsopgave:

Versnellingsmeter gamecontroller - Ajarnpa
Versnellingsmeter gamecontroller - Ajarnpa

Video: Versnellingsmeter gamecontroller - Ajarnpa

Video: Versnellingsmeter gamecontroller - Ajarnpa
Video: BUGGATI CHIRON VS 1200HP GOLF MK2 0-300 KMPH ACCELERATION 2024, November
Anonim
Versnellingsmeter Game Controller
Versnellingsmeter Game Controller

Eerste tekst…

Stap 1: MATERIAAL

MATERIAAL
MATERIAAL
  • Arduino Leonardo: een microcontroller-bord als brein van onze gamecontroller.
  • Micro USB kabel: om onze gamecontroller aan te sluiten aan een computer.
  • Breadboard: zo hoeven we niet te solderen en blijft ons ontwerp makkelijk aanpasbaar.
  • Breadboard jumper wires: om alle componenten met elkaar te verbinden.
  • MPU6050 accelerometer: een sensor die versnellingen in de verschillende richtingen kan lezen, zoals je vaak in smartphones, hoverboards en balancerende robots vindt.
  • Twee minidrukknoppen: om knoppen te programmeren die los staan van onze accelerometer.

Optioneel:

Breadboard en Arduino houder: om compact te kunnen werken

Stap 2: ARDUINO-SOFTWARE

Voor we kunnen aan de bouw beginnen we de juiste software nodig om het brein van onze game controller, een Arduino Leonardo, te kunnen besturen. Om dit te installeren, ga je als volgt te werk:

  • Ga via volgende link naar de downloadpagina van Arduino:
  • Kies voor de juiste software op basis van je besturingssysteem.
  • Klik op downloaden.
  • Je hebt nu een installatie door er op te klikken om de installatie te vervolledigen.

!!! Wij hebben onze controller gemaakt met het gedownloade programma. De Windows App versie kan dit evengoed, maar kan kleine verschillen hebben in aanpak.

  • Open de Arduino-software.
  • Connecteer je Arduino Leonardo met je micro-USB-kabel aan je computer, de Leonardo-stuurprogramma's worden automatisch geïnstalleerd (dit gebeurt als het eerst wordt dat je de Arduino aansluit).

Als je nog niet zo bent met Arduino software, of je oprecht eens of je Arduino Leonardo foutloos verbinding maakt met je computer, dan kan je dat makkelijk testen met een voorbeeld:

  • Kies via Bestand > Voorbeelden > 01. Basis > 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 kiezen via welke USB poort je Arduino communiceren.
  • Klik in de linkerbovenhoek op het pijltje symbool om het voorbeeldprogramma te uploaden.
  • Links zie je een indicatie aantoont dat het programma aan het uploaden naar beneden is, gevolgd door de boodschap 'uploaden voltooid' bij succes.

!!! Als het uploaden niet lukt en een rode foutmelding geeft dan ligt dit vaak aan een fout in de code. In dit geval gebruiken we een foutloze voorbeeldcode, die de fout bij de verbinding tussen de Leonardo en je computer moet liggen.

Stap 3: BIBLIOTHEEKMAP

Arduino's zijn in staat om veel gegevens te verwerken. Dit zorgt voor dat er ook veel code nodig is om deze gegevens correct te compileren. Om deze code niet eindeloos lang en complex te schrijven, maken wij gebruik van Arduino Libraries, bibliothe van code die bepaalde sensoren gaan sturen en ons werk een stuk gemakkelijker maken. Ons project gebruik drie bibliotheken: Wire, I2Cdev en MPU6050. De Arduino heeft een goede basis aan bibliotheken, onze eerste (Wire andere dienen we zelf nog te installeren)

  • Volg deze link en klik op 'Clone or Download' en download het ZIP-bestand
  • Pak de ZIP-bestand uit om toegang te krijgen tot de bestanden.
  • In de gewenste map vind je via i2cdevlib-master > Arduino de mappen 'I2Cdev' en MPU6050.
  • Kopieer beide mappen naar de Arduino map via C >Program Files > Arduino > Libraries.

!!! Indien je de bij de installatie van de software zelf een andere locatie hebt dan, vind je de bestanden daar. Het is niet de bedoeling dat je zelf een kaart aanmaakt.

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

Stap 4: ACCELEROMETER - DE THEORIE

ACCELEROMETER - DE THEORIE
ACCELEROMETER - DE THEORIE

Een accelerometer werkt op basis van het piezoelectrisch effect. Stel je een kubusvormig doosje voor waar een klein balletje in zit (zoals in de bovenstaande illustratie) waar elke wand gemaakt is uit piëzoelektrische kristallen. Wanneer je de kubus verplaatst het balletje zich kantelen de zwaartekracht. Waar het balletje de kubus wanden ontstaat er piezoelectrische stroom. De drie paar evenwijdige wanden van de kubussen aan de driedimensionale X, Y en Z assen. afhankelijk van de piezoelectrische stroom geproduceerd langs deze wanden kunnen we zo de versnelling in drie dimensies bepalen.

Om een praktijkvoorbeeld te geven: In elke smartphone zit tegenwoordig ook standaard een accelerometer. Deze zorgt er onder andere voor dat je scherm automatisch meedraait als je smartphone kantelt.

Stap 5: VERSNELLER - DE PRAKTIJK

ACCELEROMETER - DE PRAKTIJK
ACCELEROMETER - DE PRAKTIJK

We weten nu dat accelerometer de versnelling in de X, Y en Z als kan meten, maar met onze Arduino software kunnen we die data ook echt zien en een uitgevoerd. Om dit te doen ga je als volgt te werk:

Sluit de accelerometer aan volgens bovenstaand schema en verbind de Arduino Leonardo met je computer

!!! De accelerometer wordt voorzien van de benodigde pinnen om makkelijk op een breadboard te prikken, maar deze pinnen kunnen nog gesoldeerd worden. Je krijgt de optie om die haaks op je breadboard te plaatsen van evenwijdig zoals in ons voorbeeld.

  • Download ons 'MPU6050_intro' bestand en open dit in de Arduino software.
  • Controleer of je boardtype en poort nog steeds juist staan.
  • Klik in de linkerbovenhoek op het pijltje om het programma te laden.
  • Selecteer via Hulpmiddelen > Seriële Monitor
  • Een nieuw venster opent met 3 kolommen met getallen, dit zijn de versnellingen in de X, Y en Z assen.
  • Beweeg je versnellingsmeter om de versnellingen in alle richtingen te zien.

Terwijl we onze versnellingsdata voor ons hebben kunnen we direct verkennend werk doen voor onze game controller. Leg de Arduino en de tafel en noteer gemiddelde X en Y waarde (mag een ruwe schatting zijn). Onderneem daarna volgende stappen:

  • Kantel de accelerometer 45° naar rechts en noteer de product 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.

Stap 6: SPELCONTROLLER

SPELCONTROLLER
SPELCONTROLLER

Klaar voor het echte werk! We gebruiken onze accelerometer samen met 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-drukknoppen hebben vaak een buiging in hun beentjes. Druk die plat met een punttang om ze gemakkelijk in je breadboard te krijgen.

  • Download ons 'MPU6050_gamecontroller' bestand en open dit in de Arduino software.
  • Verbind je Arduino en klik in de linkerbovenhoek op het pijltje om het programma te laden.
  • De Arduino Leonardo stuurt nu constante informatie door naar je computer. Wil je de datavoer even pauzeren, koppel dan de jump wire op pin 12 even los, en verbinder die opnieuw als je verder wilt gaan.
  • Proficiat! Je hebt nu een basiscontroller gemaakt, test het gerust eens uit op pacman.

Geen paniek als je controller niet metéén doet wat je had verwacht. Dat gewoon dat we nog calibratie werk hebben om de controller aan te passagiers naar onze noden. duiken we in de Arduino-code

Stap 7: CODE - GEBRUIKTE BIBLIOTHEKEN

CODE - GEBRUIKTE BIBLIOTHEKEN
CODE - GEBRUIKTE BIBLIOTHEKEN

Het leuke code is dat deze code is zonder dat je aan een uitgebreide programmeerkennis moet hebben. Om je op weg te helpen overlopen we kort waar je wat vindt, en wat je kan aanpassen om je controller te kalibreren.

In de 'MPU6050_gamecontroller' code vind je een echte lichtgrijze tekst. Dat is tekst die geen invloed heeft op de code, maar die dient om de code wat te structureren. Ook tekst die na // komt, staat los van de code en dient als verduidelijking. De eerste echte code vinden we terug onder de titel 'Gebruikte bibliotheken', daar herken je meteen de bibliotheken die we in stap drie hebben geïnstalleerd.

  • #erbij betrekken geeft aan dat we de 'IC2dev' bibliotheek gaan gebruiken
  • const int ENABLE = 12 geeft aan dat we pin 12 gebruiken als veiligheid. Is deze pin niet verbonden dan stopt ons programma automatisch.
  • const int A_BUTTON = 6 geeft aan dat onze Een knop is op poort 5

!!! De code onder Setup zijn afspraken tussen je Arduino en je computer over hoe deze communiceren, in ons geval laten we dit deel code gewoon zoals ze is.

Stap 8: CODE: LUS

CODE: LUS
CODE: LUS

Onder de titel 'Loop' vind je lijnen code die non stop draaien als onze Arduino Leonardo is verbonden met de computer en pin 12 is aangesloten. Het is ook meteen het deel van de code waar we het meest kunnen aanpassen. De code onder 'button A' en 'button B' is fundamenteel aan onze mini-drukknoppen die je kunt aanpassen door in de code Keyboard.release ('a') enKeyboard.release ('a') twee maal de ('a') te vervangen door eender welke ander toetsenbord toets.

!!! Sommige toetsenbordtoetsen kunnen niet rechtstreeks intypen maar hebben een code. Zo zou je de 'Delete' knop moeten invoeren als 'KEY_DELETE' of 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 naar de ASCII tabel.

Onder de rechts, links, boven en beneden vind je vrij gelijkaardige code als bij de knoppen, het grote verschil zit hem in het if (accx < -20000) deel van de code. Dit verwijst naar de accelerometer: de accelerometer naar rechts kantelt en een waarde kleiner dan -20000 leest dan wordt de rechter pijltoets (KEY_RIGHT_ARROW) ingedeuwd. 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 investerings je noties om zo jou specifieke accelerometer te kalibreren. Je kan deze waarden bijstellen je eigen speelstijl.

Als laatste vinden we helemaal onder de code delay (50). Dat stukje code vertraagt het aantal toetsenbord toetsen die je computer doorkrijgt. Merkje dat je controller te veel commando's doorgeeft dan verhoog je dit getal met enkele tientallen. Reageert alles te traag dan verklein je het getal wat.

Trial en error is de boodschap!

Aanbevolen: