Innholdsfortegnelse:

Arduino spillkontroller med lys som reagerer på ditt enhetsspill :: 24 trinn
Arduino spillkontroller med lys som reagerer på ditt enhetsspill :: 24 trinn

Video: Arduino spillkontroller med lys som reagerer på ditt enhetsspill :: 24 trinn

Video: Arduino spillkontroller med lys som reagerer på ditt enhetsspill :: 24 trinn
Video: ie pixel stair controller #arduino #motionsensorlight #homelighting #motion #electeic #stairlights 2024, November
Anonim
Arduino spillkontroller med lys som reagerer på ditt enhetsspill
Arduino spillkontroller med lys som reagerer på ditt enhetsspill

Først skrev jeg dette ut i word. Dette er første gang jeg bruker instruerbar, så når jeg sier: skriv ut koden som så vet at jeg refererer til bildet øverst på det trinnet.

I dette prosjektet bruker jeg 2 arduinoer til å kjøre 2 separate kodebiter siden jeg hadde problemer med å få det til å fungere med bare en

Dette er Uno og Leonardo

totalt er dette det du trenger for å planlegge dette prosjektet.

· 7 trykknapper

· 23 hoppetråder

· 1 arduino Leonardo + usb -kabel

· 4 motstander · 4 lysdioder

· 1 arduino uno + usb -kabel

· 2 brødbrett

Trinn 1: Koble til kontrollknappene til Arduino

Koble til kontrollknappene til Arduino
Koble til kontrollknappene til Arduino

Hva du trenger for å koble denne delen til:

· 7 trykknapper

· 14 hoppetråder

· 1 arduino Leonardo + usb -kabel

· Brødbrett

Knappene er ganske enkle å koble til, men kan raskt bli et rot å vise i bildeform.

· Først av deg plasserer du trykknappene i posisjonene jeg markerte på bildet ovenfor.

· For det andre vil du koble en jumper fra bakkesporet på arduino Leonardo til minus -raden på brødbrettet.

· Nå kobler du til hoppere hvor som helst på minus -raden til raden som er på linje med den høyre knappen på knappen du trykker på. dette vil gi strøm til det.

· Deretter vil du koble til en startkabel fra en rad som er i tråd med venstre pinne på trykknappen til Leonardos digitale inngangsspor. For knappene her brukte jeg spor 2 - 3 - 4 - 5 - 6 - 7- 8

Jeg viste bare ledningen til inngang 8 på bildet fordi det blir et veldig rotete bilde for å vise deg alle ledningene som krysser hverandre.

Trinn 2: Koding av Arduino Leonardo:

Koding av Arduino Leonardo
Koding av Arduino Leonardo

Så for å fortelle deg hvorfor jeg bruker Leonardo til dette. Det er fordi den har en bestemt brikke som Uno ikke gjør, noe som gjør at datamaskinen gjenkjenner den som en usb -inngangsenhet. Mye som Det ville ha et tastatur. Noe som gjør at vi kan gjøre noe som gjør livet vårt som programmerere for dette prosjektet mye lettere. Tastaturemulering. Vi kommer til å lure datamaskinen til å tro at vi trykker på bestemte taster på tastaturet når vi faktisk trykker på knappene på kontrolleren vår.

Nå skal jeg gå, du tenkte koden trinn for trinn.

Først helt på toppen inkluderer vi Keyboard. H. Dette vil tillate oss å bruke tastaturfunksjonene vi skal bruke i koden vår.

Trinn 3:

Bilde
Bilde

Deretter må vi definere de digitale inngangssporene vi skal bruke på

Leonardo for hver knapp.

Jeg har også navngitt dem alle etter nøkkelen jeg skal etterligne.

Trinn 4:

Bilde
Bilde

Derfra kommer vi inn i oppsettfunksjonen. Dette forteller

arduino hva det gjør ved oppstart.

først skriver vi Serial.begin som åpner serieporten og setter datahastigheten til 9600 bps

og vi definerer at alle heter pins for å være input.

Trinn 5:

Bilde
Bilde

Og til slutt skriver vi loop -funksjonen som vil sjekke om

knappene blir trykket ned og fortell arduinoen hvordan du reagerer på det.

Først skriver vi Keyboard.begin som vil fortelle arduino at han må passe på oss ved å bruke tastaturfunksjoner

Trinn 6:

Bilde
Bilde
Bilde
Bilde
Bilde
Bilde

Så for hver knapp skriver vi en if/else -setning som går slik

Så det jeg fortalte til arduino her er: Hvis min venstre knapp trykkes på kontrolleren, får datamaskinen til å tro at vi trykker på "a" -tasten, og hvis det ikke er tilfelle, får den til å tro at vi har sluppet nøkkelen.

Du gjentar i utgangspunktet denne blokkblokken for hver knapp på kontrolleren. med endringer for hver variabel og nøklene som variabelen må etterligne

Trinn 7:

Bilde
Bilde

Nøklene vi ba datamaskinen om å treffe her er W - A - S - D som

er stort sett standarden for bevegelse i PC-spill og E-Q-og mellomromstasten som i denne koden er gjenkjent som ‘’ som er knappene jeg bruker til å plukke opp-avfeire og skyte i spillet mitt. Du er velkommen til å endre disse til de tastene du synes fungerer bedre for spillet/kontrolleren din.

Så til slutt forteller vi arduinoen å stoppe sjekken som Keyboard.end

Trinn 8: Kodingsbevegelse i enhet:

Kodingsbevegelse i enhet
Kodingsbevegelse i enhet

La meg først fortelle deg at jeg lager dette for et 2d -spill

eksemplene du kommer til å se er bygget for det. Betyr hovedsakelig hvor jeg bruker vektor2 hvis du jobber i 3d, vil du bruke vektor3. fordi du trenger å bekymre deg for en ekstra dimensjon av bevegelse i 3d.

Nå er grunnen til at jeg brukte tastaturemulering på arduino -siden fordi Unity har noe innebygd for å gjenkjenne tastene på tastaturet som vi kan bruke.

Hvis du åpner prosjektet ditt i enhet, gå til Rediger -> Prosjektinnstillinger -> Inndata. Du kan se på inspektøren at den starter opp inngangshåndteringen. Hvor hvis du klikker på Axes, kan du se en hel haug med inndatanavn som vanligvis brukes til PC -kontrollere som de vi lager nå. De to inngangene vi skal bruke er Horisontal og Vertikal som sjekker om du gjettet det W-A-S-D.

Først vil du lage et objekt I dine enhetsscenerhierarki som blir din spiller. I mitt tilfelle er denne morsomme lille fyren. Dette kan være hva du trenger det, men for formålet med spillet mitt laget jeg denne fyren.

Trinn 9:

Bilde
Bilde

Du vil gi denne spilleren 2 ting. En bokskollider 2d og

a Rigidbody 2d og rediger dem slik at de er som bildet ovenfor.

Trinn 10:

Bilde
Bilde

Deretter vil du gå inn i prosjektmappen og opprette en

C# skript. Som jeg kalte PlayerMovement.

I dette skriptet kommer du til å definere 2 variabler. En offentlig flottør som jeg kaller moveSpeed. Som vil avgjøre hvor fort du går. Og en privat Rigidbody2D som jeg kaller RigidPlayer. Som vil se etter spillerne dine stive kroppen.

Ikke glem å komme til enhetsredaktøren, klikk på spilleren din og legg til dette nye skriptet ved å dra det til inspektøren og angi en tallverdi for moveSpeed.

Trinn 11:

Bilde
Bilde

nå i Start () vil du gjøre en ting, og det er å

sørg for at RigidPlayer finner betaleren rigidbody 2d. Du gjør det med følgende kodelinje:

Trinn 12:

Bilde
Bilde

Deretter går vi videre til oppdateringen (). Her er det vi skal

å få spilleren til å bevege seg.

vi gjør det med en ganske enkel if -setning som vil se på de negative og positive nøklene fra Horisontal (AD) og Vertikal (SW) og bruke det som et tall for å tvinge oss til å sette på vår stive kropp 2d for å skyve spilleren inn en retning. Dette tallet vil bli multiplisert med moveSpeed -variabelen.

Trinn 13:

Bilde
Bilde

Til slutt vil du sørge for at spilleren slutter å bevege seg når

du trykker ikke på noe. Dette liker du sånn:

Hvis du vil bruke de tre andre knappene dine til noe, gjør du det med denne if -setningen: if (Input. GetKeyDown (Keycode. Space))

for mellomromstasten og i stedet for mellomrom, legg bokstaven til de andre tastene du valgte å bruke for de andre tastene.

Trinn 14: Tilkobling av lys til Arduino

Tilkobling av lys til Arduino
Tilkobling av lys til Arduino

·

Hva du trenger for å koble denne delen til:

· 9 hoppetråder

· 4 motstander

· 4 led

· 1 arduino uno + usb -kabel

· Brødbrett

Tilkoblingen til lysene gjøres gjennom Uno.

Det vil ende med å se ut som dette bildet ovenfor:

Du kobler motstandene til langsiden av lysdiodene. Og så kobler du til en genser fra et digitalt pin -nummer på unoen til motstandene. i dette tilfellet brukte jeg digitale pin -spor 9 -10 -11 -12, disse tallene vil være relevante når vi kommer til koden for lysene.

Derfra vil du koble en jumper fra bakkesporet på din arduino Uno til stedet på brettet ditt, sett med den svarte ledningen på bildet ovenfor.

Da vil du ha 4 hoppere som alle leder inn i den korte enden av hver LED

Trinn 15: Koding av Arduino Uno

Koding av Arduino Uno
Koding av Arduino Uno

OK, først skal vi definere variablene våre igjen

Så først hvilke digitale innganger vi bruker til lysene våre. Og vi skal lage en røye som heter myCol [20]

Trinn 16:

Bilde
Bilde

Så i oppsettet vil vi gjøre Serial.begin igjen. Sett alle våre LED -er på Output og slå dem alle av ved oppstart.

Trinn 17:

Bilde
Bilde

Og til slutt vil du skrive loop -funksjonen din.

Dette vil føre til at Arduino leser inn alle data som kommer inn gjennom serie til en av to hendelser skjer. Enten det oppdages et linjeformet tegn; dette identifiseres med lf som er satt til 10 og er det første argumentet eller en viss mengde byte er lest inn. Dette er det tredje argumentet og for dette eksemplet er det satt til bare en byte. Dataene lagres i variabelen myCol, som er satt til char og en grense på 20. I readBytesUntil er dette det andre argumentet. Eller en annen måte å forklare det på er Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Og if -setningene vil sørge for at visse lys tennes når enhet gir signal. I dette tilfellet fikk jeg 4 forskjellige fargede lys, så jeg får enhet til å sende g for at den grønne lysdioden skal slås på, b for at den blå lysdioden skal slås på, r for at den røde lysdioden skal slås på og y for at den gule lysdioden skal slås på.

Trinn 18: Kodingslys Enhetsside:

Kodelys Enhetsside
Kodelys Enhetsside

Ok 2 ting først før vi går inn på dette.

1. i ditt arduino -kodingsprogram, gå til Tool -> Port -> og sjekk for meg hvilken COM din uno er på. I mitt tilfelle er det COM3 (dette vil være viktig i koden)

2. i enhet Gå til Rediger -> Prosjektinnstillinger -> Spiller, klikk deretter på andre innstillinger i inspektøren til Api -kompatibilitetsnivå og bytt det fra. NET 2.0 -undernett til bare. NET 2.0

Ok det er gjort. La oss gå inn på det.

Høyreklikk på hierarkiet ditt og klikk på Opprett tomt.

Dette vil være et tomt spillobjekt som bare vil eksistere i spillet ditt for å inneholde ett skript for oss. Jeg har kalt dette objektet Init.

Trinn 19:

Bilde
Bilde

Gå deretter til kategorien Prosjekter og opprett et nytt C# -skript

og kall det Send.

Det første du gjør er å skrive disse til linjene i delene av koden du bruker:

bruker System. IO. Ports;

bruker System. Threading;

Dette gjør det slik at vi kan bruke variabelen SerialPort

Trinn 20:

Bilde
Bilde

i dette skriptet skal vi lage følgende variabler. Vær oppmerksom på at jeg har COM3 der, dette kan være annerledes for deg som vi diskuterte i begynnelsen av dette trinnet. Hvis det er, erstatt 3 med nummeret det sa for deg.

Trinn 21:

Bilde
Bilde

I begynnelsen forteller vi at skriptet som skal brukes er OpenConnection

funksjon som vi skal skrive om litt

oppdateringen er mer en test enn alt annet, men hvis du vil inkludere den, er det å teste meldinger som sendes til enhet. Du kan ignorere det ærlig.

Trinn 22:

Bilde
Bilde

Ok nå for denne OpenConnection -funksjonen. Dette er bare en stor

Hvis/ellers -setning som holder forbindelsen åpen, bare kopier den som skrevet, og du skal ha det bra.

Trinn 23:

Bilde
Bilde

Husk nå fra arduino -koden som jeg fikk den til å se etter

signaliserer at enhet kommer til å sende det.

vel, det er her det skjer. I mitt tilfelle fikk jeg 4 lys tilkoblet, så jeg skrev 4 funksjoner som er ekstremt enkle. Alt de gjør er når de blir ringt, sender de et brev til arduino. Når arduino får den bokstaven, tennes lyset som tilsvarer bokstaven.

Trinn 24:

Bilde
Bilde

Du lurer kanskje på hvordan jeg får det til å kalle dette

funksjon? Vel, du gjør det med en enkel linje i noen av de andre c# -skriptene du bruker til spillet ditt. Sending. NameFunctionhere ();. Så for eksempel i spillet mitt får spilleren i oppgave å samle 4 fargede kuler. Så jeg skrev et lite manus som sørger for at når han kommer nær en og trykker på den høyre knappen, plukker han den opp, og den sender signalet til arduinoen om at i dette tilfellet er den gule kulen blitt plukket opp. For at den skal vite, må jeg slå på den gule LED -en:

Du kan sette denne koderaden hvor du vil. Hvis du vil at det skal lyse opp når spillet starter, legg det i startfunksjonen. Vil at det skal lyse når han dør, legg det i din funksjon for spillernes død. Eksperimenter litt. Jeg velger å gjøre lysene til et slags ui -element utenfor spillet for å holde oversikt over kulene du må samle uten å rote opp skjermen.

Anbefalt: