Inhoudsopgave:
- Stap 1: De bedieningsknoppen aansluiten op Arduino
- Stap 2: Coderen van de Arduino Leonardo:
- Stap 3:
- Stap 4:
- Stap 5:
- Stap 6:
- Stap 7:
- Stap 8: Beweging coderen in eenheid:
- Stap 9:
- Stap 10:
- Stap 11:
- Stap 12:
- Stap 13:
- Stap 14: Verlichting aansluiten op Arduino
- Stap 15: Coderen van de Arduino Uno
- Stap 16:
- Stap 17:
- Stap 18: Codering Lichten Unity Side:
- Stap 19:
- Stap 20:
- Stap 21:
- Stap 22:
- Stap 23:
- Stap 24:
Video: Arduino-gamecontroller met verlichting die reageert op uw Unity-spel:: 24 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Eerst schreef ik dit ding uit in woord. Dit is de eerste keer dat ik instructable gebruik, dus telkens wanneer ik zeg: schrijf code uit zoals dus weet dat ik verwijs naar de afbeelding bovenaan die stap.
In dit project gebruik ik 2 arduino's om 2 afzonderlijke stukjes code uit te voeren, omdat ik wat problemen had om het met slechts één te laten werken
Dit zijn de Uno en de Leonardo
in totaal is dit wat je nodig hebt om dit project te breadboarden.
· 7 drukknoppen
· 23 jumperdraden
· 1 arduino Leonardo + usb-kabel
· 4 weerstanden · 4 led’s
· 1 arduino uno + usb-kabel
· 2 broodplanken
Stap 1: De bedieningsknoppen aansluiten op Arduino
Wat je nodig hebt om dit onderdeel aan te sluiten:
· 7 drukknoppen
· 14 jumperdraden
· 1 arduino Leonardo + usb-kabel
· breadboard
De knoppen zijn vrij eenvoudig aan te sluiten, maar kunnen snel een puinhoop worden om in afbeeldingsvorm weer te geven.
· eerst plaats je de drukknoppen in de posities die ik op de afbeelding hierboven heb gemarkeerd.
· Ten tweede wil je een jumper aansluiten van de grondgleuf op de Arduino Leonardo in de min-rij van het breadboard.
· Nu haak je jumpers van overal op de min-rij aan op de rij die in lijn is met de rechter pin van je drukknop. dit zal er kracht aan geven.
· Vervolgens wil je een jumperdraad aansluiten van een rij die in lijn is met de linkerpin van je drukknop naar de digitale ingangssleuven van de Leonardo. Voor de knoppen hier gebruikte ik slot 2 - 3 – 4 – 5 - 6 - 7- 8
Ik heb alleen laten zien dat de draad naar ingang 8 op de afbeelding gaat, omdat het een erg rommelig beeld wordt om je alle draden te laten zien die elkaar kruisen.
Stap 2: Coderen van de Arduino Leonardo:
Dus om je te vertellen waarom ik Leonardo hiervoor gebruik. Het is omdat het een bepaalde chip heeft die de Uno niet heeft, waardoor de computer het herkent als een USB-invoerapparaat. Net zoals het een toetsenbord zou zijn. Wat ons in staat stelt iets te doen dat ons leven als programmeurs voor dit project een stuk makkelijker maakt. Toetsenbord emulatie. We gaan de computer voor de gek houden door te denken dat we bepaalde toetsen op het toetsenbord indrukken, terwijl we in feite op knoppen op onze controller drukken.
Nu ga ik je stap voor stap door de code laten lopen.
Allereerst helemaal bovenaan nemen we Keyboard.h op. Hierdoor kunnen we de toetsenbordfuncties gebruiken die we in onze code gaan gebruiken.
Stap 3:
Vervolgens moeten we de digitale ingangsslots definiëren die we gaan gebruiken op de
Leonardo voor elke knop.
Ik heb ze ook allemaal genoemd naar de sleutel die ik ga emuleren.
Stap 4:
Van daaruit komen we in de setup-functie. Dit vertelt de
arduino wat het doet bij het opstarten.
eerst schrijven we de Serial.begin die de seriële poort opent en de datasnelheid instelt op 9600 bps
en we definiëren dat alle pinnen worden genoemd als invoer.
Stap 5:
En tot slot schrijven we onze lusfunctie die zal controleren of
knoppen worden ingedrukt en vertel de arduino hoe hij daarop moet reageren.
Eerst schrijven we Keyboard.begin, wat arduino zal vertellen dat hij op ons moet letten met behulp van toetsenbordfuncties
Stap 6:
Vervolgens schrijven we voor elke knop een if/else-statement dat als volgt gaat:
Dus wat ik Arduino hier heb verteld, is: als mijn linkerknop op de controller wordt ingedrukt, laat de computer dan denken dat we op de "a" -toets drukken en als dat niet het geval is, laat hem dan denken dat we de toets hebben losgelaten.
In principe herhaal je dit codeblok voor elke knop op je controller. met wijzigingen voor elke variabele en de sleutels die de variabele moet emuleren
Stap 7:
De toetsen die we de computer hebben verteld om hier te raken, zijn W - A - S - D, wat:
zijn zo'n beetje de standaard voor beweging in pc-games en E - Q - en de spatiebalk die in deze code wordt herkend als ' ', wat de knoppen zijn die ik gebruik om op te halen - te negeren en te vuren in mijn spel. Voel je vrij om deze te veranderen in de toetsen waarvan je denkt dat ze beter werken voor je game/controller.
Ten slotte vertellen we de arduino om te stoppen met controleren welke Keyboard.end
Stap 8: Beweging coderen in eenheid:
Laat me je eerst vertellen dat ik dit voor een 2D-spel maak, dus
de voorbeelden die je gaat zien zijn daar voor gemaakt. Betekent vooral waar ik vector2's gebruik als je in 3d werkt, je vector3's zult gebruiken. omdat je je zorgen zou moeten maken over een extra dimensie van beweging in 3D.
De reden dat ik toetsenbordemulatie aan de arduino-kant heb gebruikt, is omdat Unity iets ingebouwd heeft om toetsen op het toetsenbord te herkennen die we kunnen gebruiken.
Als u uw project in één geheel opent, gaat u naar Bewerken -> Projectinstellingen -> Invoer. Je kunt in je inspecteur zien dat het de invoermanager opstart. Als je op Axes klikt, zie je een hele reeks invoernamen openen die normaal worden gebruikt voor pc-controllers zoals degene die we nu maken. De 2 ingangen die we gaan gebruiken zijn Horizontaal en Verticaal, wat controleren of je het al geraden hebt W-A-S-D.
Eerst wil je een object maken in de hiërarchie van je eenheidsscènes die je speler zal zijn. In mijn geval dit leuke ventje. Dit kan zijn wat je maar wilt, maar voor het doel van mijn spel heb ik deze man gemaakt.
Stap 9:
Je wilt deze speler 2 dingen geven. Een box-collider 2d en
een Rigidbody 2d en bewerk ze zodat ze zijn zoals de afbeelding hierboven.
Stap 10:
Dan wil je naar je projectenmap gaan en een
C#-script. Die ik PlayerMovement noemde.
In dit script ga je 2 variabelen definiëren. Een openbare praalwagen die ik moveSpeed noem. Die bepalen hoe snel je gaat. En een privé Rigidbody2D die ik RigidPlayer noem. Die zal kijken voor uw spelers rigidbody.
Vergeet niet om naar je unity-editor te gaan, klik op je speler om dit nieuwe script toe te voegen door het naar de inspecteur te slepen en een getalswaarde in te stellen voor moveSpeed.
Stap 11:
nu wil je in je Start() één ding doen en dat is
zorg ervoor dat uw RigidPlayer uw betaler rigidbody 2d kan vinden. Dat doe je met de volgende regel code:
Stap 12:
Dan gaan we verder met de update(). Hier gaan we heen
om de speler te laten bewegen.
we doen dat met een vrij eenvoudige if-verklaring die kijkt naar de negatieve en positieve sleutels van de horizontale (AD) en verticale (SW) en dat toepassen als een getal om te forceren, we gaan op onze rigidbody 2d zetten om onze speler naar binnen te duwen een richting. Dat aantal wordt vermenigvuldigd met de variabele moveSpeed.
Stap 13:
Ten slotte wilt u er zeker van zijn dat uw speler stopt met bewegen wanneer:
je drukt nergens op. Dit vind je zo leuk:
Als je nu je 3 andere knoppen voor iets wilt gebruiken, doe dat dan met dit if-statement: if(Input. GetKeyDown(Keycode. Space))
voor de spatiebalk en plaats in plaats van spatie de letter van de andere toetsen die u voor de andere toetsen hebt gekozen.
Stap 14: Verlichting aansluiten op Arduino
·
Wat je nodig hebt om dit onderdeel aan te sluiten:
· 9 jumperdraden
· 4 weerstanden
· 4 led's
· 1 arduino uno + usb-kabel
· breadboard
De aansluiting voor de verlichting gebeurt via de Uno.
Het zal er uiteindelijk uitzien als deze afbeelding hierboven:
Je sluit de weerstanden aan op de lange zijde van de LED's. En dan sluit je een jumper van een digitaal pinnummer op de uno aan op de weerstanden. in dit geval heb ik digitale pinsleuven 9 – 10 -11 -12 gebruikt. Deze nummers zullen relevant zijn als we bij de code voor de lichten komen.
Vanaf daar wil je een jumper aansluiten van de grondsleuf op je Arduino Uno naar de plek op je bord zoals te zien is met de zwarte draad op de afbeelding hierboven.
Dan wil je dat 4 jumpers allemaal naar het korte uiteinde van elke LED leiden
Stap 15: Coderen van de Arduino Uno
Oké, eerst gaan we onze variabelen opnieuw definiëren
Dus eerst welke digitale ingangen we gebruiken voor onze lampen. En we gaan een char maken genaamd myCol[20]
Stap 16:
Vervolgens willen we in de setup de Serial.begin opnieuw doen. Zet al onze LED's op Output en schakel ze allemaal uit bij het opstarten.
Stap 17:
En tot slot wil je je loop-functie schrijven.
Hierdoor zal de Arduino alle gegevens die via serie binnenkomen inlezen totdat een van de twee gebeurtenissen plaatsvindt. Er wordt ofwel een regelinvoerteken gedetecteerd; dit wordt geïdentificeerd door lf die is ingesteld op 10 en het eerste argument is of een bepaald aantal bytes is ingelezen. Dit is het derde argument en is voor dit voorbeeld ingesteld op slechts één byte. De gegevens worden opgeslagen in de variabele myCol, die is ingesteld op char en een limiet van 20. In readBytesTotdat dit het tweede argument is. Of een andere manier om het uit te leggen is Serial.readBytesUntil(terminatorCharacter, buffer, byteLimit);
En de if-statements zorgen ervoor dat bepaalde lampjes gaan branden als eenheid het signaal geeft. In dit geval heb ik 4 verschillende gekleurde lampjes, dus ik laat de eenheid g sturen om de groene LED aan te zetten, b om de blauwe LED aan te zetten, r om de rode LED aan te zetten en y om de gele LED aan te zetten.
Stap 18: Codering Lichten Unity Side:
Oke 2 dingen eerst voordat we hier op ingaan.
1. Ga in je Arduino-coderingsprogramma naar Tool -> Port -> en controleer voor mij op welke COM je uno staat. In mijn geval is het COM3 (dit zal belangrijk zijn in de code)
2.in unity Ga naar Bewerken -> Projectinstellingen -> Speler en klik in het infovenster op andere instellingen, ga naar Api-compatibiliteitsniveau en schakel het over van. NET 2.0-subnet naar alleen. NET 2.0
Oke dat is gedaan. Laten we erop ingaan.
Klik met de rechtermuisknop op uw hiërarchie en klik op Leeg maken.
Dit zal een leeg game-object zijn dat gewoon in je game zal bestaan om één script voor ons te bevatten. Ik heb dit object Init genoemd.
Stap 19:
Ga dan naar het tabblad Projecten en maak een nieuw C#-script aan
en noem het Verzenden.
Het eerste dat u doet, is deze naar regels schrijven in de gebruikende secties van uw code:
met behulp van System. IO. Ports;
met behulp van System. Threading;
dit zorgt ervoor dat we de SerialPort-variabele kunnen gebruiken
Stap 20:
in dit script gaan we de volgende variabelen maken. Houd er rekening mee dat ik COM3 heb, dit kan voor jou anders zijn, zoals we aan het begin van deze stap hebben besproken. Als dit het geval is, vervangt u de 3 door het nummer dat het voor u heeft gezegd.
Stap 21:
In het begin vertellen we dat het te gebruiken script OpenConnection is
functie die we zo gaan schrijven
de update is meer een test dan wat dan ook, maar als je het wilt opnemen, is het om berichten te testen die naar unity worden verzonden. Je zou het eerlijk kunnen negeren.
Stap 22:
Oke nu voor deze OpenConnection-functie. Dit is gewoon een grote
if / else-instructie die de verbinding open houdt, kopieer het gewoon zoals geschreven en het zou in orde moeten zijn.
Stap 23:
Onthoud nu van de arduino-code waar ik het op heb laten controleren
signalen die eenheid er naartoe gaat sturen.
nou dit is waar dat gebeurt. In mijn geval heb ik 4 lampen aangesloten, dus ik heb 4 functies geschreven die extreem eenvoudig zijn. Het enige wat ze doen is wanneer ze worden gebeld, ze een brief naar Arduino sturen. Wanneer Arduino die letter krijgt, licht het licht op dat overeenkomt met die letter.
Stap 24:
Je vraagt je misschien af hoe ik het zover krijg om dit te noemen
functie? Nou, je doet het met één simpele regel in een van je andere c#-scripts die je voor je spel gebruikt. Naamfunctie hier verzenden ();. Dus in mijn spel moet de speler bijvoorbeeld 4 gekleurde bollen verzamelen. Dus ik heb een klein script geschreven dat ervoor zorgt dat wanneer hij er dichtbij komt en op de juiste knop drukt, hij het oppakt en het signaal naar de arduino stuurt dat in dit geval de gele bol is opgepikt. Zodat het weet, oke, ik moet de gele LED aanzetten:
U kunt deze ene regel code overal plaatsen waar u maar wilt. Als je wilt dat het oplicht wanneer het spel begint, zet het dan in de startfunctie. Wil je dat het oplicht als hij sterft, zet het dan in jouw functie voor de dood van de speler. Experimenteer een beetje. Ik heb ervoor gekozen om van de lichten een soort ui-element te maken buiten het spel om bij te houden welke lichtbollen je moet verzamelen zonder het scherm vol te proppen.
Aanbevolen:
Slimme bureaulamp - Slimme verlichting met Arduino - Neopixels-werkruimte: 10 stappen (met afbeeldingen)
Slimme bureaulamp | Slimme verlichting met Arduino | Neopixels-werkruimte: tegenwoordig brengen we veel tijd thuis door, studeren en werken virtueel, dus waarom zouden we onze werkruimte niet groter maken met een aangepast en slim verlichtingssysteem op Arduino en Ws2812b-leds. Hier laat ik u zien hoe u uw Smart LED bureaulamp die
WiFi-gestuurde eenhoornpet? Met RGB-verlichting: 5 stappen (met afbeeldingen)
WiFi-gestuurde eenhoornpet? Met RGB-verlichting: Hallo allemaal. Mijn kleintje stootte me een tijdje aan over interessante draagbare DIY's met betrekking tot de eenhoorns. Dus ik heb mijn hoofd gekrabd en besloten om iets ongewoons en met een zeer laag budget te creëren. Voor dit project is geen app nodig om door te gaan
Neopixel Led Strip reageert op Myoware Muscle Sensor - Ajarnpa
Neopixel Led Strip Reagerend op Myoware Muscle Sensor: Het doel is om met behulp van Arduino een spiersensor te installeren en de binnenkomende data te verwerken met Adafruit IO en output op te halen met een trigger zodat het lampje een minuut lang van wit naar rood verandert. is een spiersensor De spiersensor
Lichtshowjack dat reageert op muziek - Ajarnpa
Lichtshowjack dat reageert op muziek: deze tutorial is gemaakt als onderdeel van mijn afstudeerproject voor mijn graad in muziektechnologie en toegepaste elektronica aan de Universiteit van York. Het is bedoeld voor muzikanten met interesse in elektronica. Het eindproduct wordt een LED-matri
DIY vlinderdas --- met verlichting !! 9 stappen (met afbeeldingen) - Ajarnpa
DIY vlinderdas --- met verlichting !!: deze zijn geweldig voor bruiloften, proms, speciale evenementen, avondjes uit en wanneer je de coolste persoon in de kamer wilt zijn! Waarom zou je geen oplichtende vlinderdas willen ? Wees ook niet verlegen meisjes, je kunt ook een oplichtende vlinderdas helemaal rocken :)Photo Cred