Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Met behulp van een Arduino wilde ik een constructie maken om het spel Snake op een ongebruikelijke manier te besturen, met behulp van ultrasone afstandssensoren. Dit is gemaakt voor een schoolproject genaamd If This Than That aan de Hogeschool voor de Kunsten Utrecht
Na veel experimenteren is dit het eindresultaat.
Er zijn nog wat bugs bij het besturen van Snake. (Nederlandse log is hier te vinden)
Benodigdheden
Vereisten:
- Arduino Uno (elke Arduino zou theoretisch werken)
- 2 ultrasone afstandssensoren (HC-SR04)
- 8 kabels om de afstandssensoren aan te sluiten op de Arduino. Bij voorkeur mannelijke naar vrouwelijke kabels
- Een behuizing van minimaal 300 mm x 300 mm x 40 mm. (breedte en hoogte zijn eenvoudig aan te passen. Diepte is 40mm omdat je ruimte nodig hebt voor de componenten binnenin)
- Eenheid
Om dit permanent te maken, heb je nodig:
- Soldeerbout
- Soldeer
- (heet) lijmpistool (of bevestigingen voor de afstandssensoren)
- Mannelijke naar mannelijke headers om aan te sluiten op de Arduino
- 8 kabels om de ultrasone afstandssensoren aan de mannelijke headers te solderen.
Stap 1: Circuit
De schakeling is heel eenvoudig.
- Je moet aarde verbinden met de grondpinnen van de ultrasone afstandssensoren.- De 5V (ik gebruik ook Vin, omdat ik USB-stroom gebruik) gaat op de Vcc-pinnen op de Arduino.- De Trig-pinnen gaan naar D8 (Arduino Digital pin 8) voor 1 sensor en D11 voor de andere sensor- De Echo-pinnen gaan naar D9 voor 1 sensor en D12 voor de andere
Voor experimenten is het gemakkelijk om mannelijke naar vrouwelijke draden te gebruiken.
Om een permanente oplossing te maken, is het het beste om draden naar de ultrasone sensoren en mannelijke naar mannelijke headers te solderen. Hierna kun je de male naar male header in de Arduino plaatsen om het te laten werken.
Stap 2: Arduino-code
Er zullen 2 delen code zijn voor dit project.
1. De afstand verkrijgen met behulp van de NewPing.h-bibliotheek en deze naar de Serial pushen.
2. Ervoor zorgen dat de serie zo is geformatteerd dat Unity deze goed kan lezen
Je kunt de code hier zien, met het juiste commentaar:https://pastebin.com/rFEyA6pd
Stap 3: Unity-code
Ik maakte een slang in eenheid. Er zijn enkele Open Source-bronnen die ik heb gebruikt.
Ten eerste: YouTube-tutorials over het maken van Snake in Unity door Code Monkeyhttps://www.youtube.com/playlist?list=PLzDRvYVwl53…
Ten tweede: WRMHL om het lezen van Serial in unity af te handelen.https://github.com/relativty/wrmhl
Ten derde: de hulp van UKL en zijn GitHub-project 'virtual rover'
Met alle vermelde bronnen, kan het Unity-projectbestand hier worden gedownload:https://drive.google.com/file/d/182uIo47AtkWRLGHic…
Ik maak sprites van foto's van de bovenkant van mensen en eten. Dit komt omdat ik de activa van andere mensen niet wilde gebruiken.
Stap 4: De behuizing maken
Deze stap is echt aan jou hoe je het wilt maken. Je kunt de doos heel gemakkelijk lasersnijden als je de middelen hebt. Ik heb net een groot stuk hout gehaald en het in de gewenste maten gezien.
Mijn afmetingen:- Onderkant: 450x450mm
- Upside: 450x450mm, met een kruisuitsparing. Deze is gecentreerd, 60 mm van de zijkanten en heeft een breedte van 20 mm
- Zijkanten: 2x 450x50mm en 2x 420x50mm (Dit komt omdat het hout anders zou overlappen) Het is slim om aan 1 kant een uitsparing te maken waar je de Arduino USB poort/kabel door kunt trekken voor gemakkelijke connectiviteit.
- Stok: 15 mm diameter (zorg ervoor dat deze minder is dan de breedte van de kruisuitsparing)
Ik heb het gewoon in elkaar gezet met spijkers. Het blad is verwijderbaar gemaakt door aan de onderkant 90 graden fittingen te schroeven, zodat je het verticaal omhoog kunt trekken, maar je kunt het niet bewegen tijdens het spelen.
Ik heb de Arduino erin geschroefd zodat hij niet kan bewegen.
De afstandssensoren zijn vastgelijmd met hete lijm. De kabels worden ook beheerd met behulp van hete lijm.
Ik schilderde alle effen zijkanten wit en schilderde 4 pijlen op de bovenkant om het comfortabeler in gebruik te maken.