Innehållsförteckning:

Portal 2 Turret - Master Turret Control: 9 steg (med bilder)
Portal 2 Turret - Master Turret Control: 9 steg (med bilder)

Video: Portal 2 Turret - Master Turret Control: 9 steg (med bilder)

Video: Portal 2 Turret - Master Turret Control: 9 steg (med bilder)
Video: Открытие заново утраченных легенд: еще 21 забытая ролевая игра 2024, Juli
Anonim
Image
Image

Detta projekt är en förlängning eller remix av min ursprungliga Portal Turret on Instructables (Portal-2-Turret-Gun). Den kan också användas som en billig kontroller för att styra allt som använder radiochipet nRF24L01. LCD -skärmen är särskilt användbar vid anpassning.

(Det visar sig vara ganska användbart att kontrollera när mina radioapparater upprättar och förlorar anslutningar till andra nRF24L01 på "nätverket". Jag kan gå runt och se på skärmen som visar radioens anslutningsstatus! Ganska användbart för att justera inställningar och verifiera räckvidd!)

Efter att jag hade slutfört Portal Turret såg jag ett kort videoklipp av Cara Mia operascenen i slutet av Portal 2. Jag tänkte, "hej, jag har byggt några torn nu. Jag kan göra det!" Tja, jag hade tornen, men för att få det att fungera måste de nu kommunicera med varandra eller med någon annan enhet. Efter att ha tänkt på det och tänkt att manuell kontroll också skulle vara cool, bestämde jag mig för att jag skulle bygga en Master Turret Controller eller en MTC.

Okej, så hur gör man? Tja, jag ville inte ändra tornen för mycket, så det var en begränsning. Jag hade några nRF24L01 radiochips som jag ännu inte hade använt och trodde att det skulle hålla i linje med mitt mål att använda billiga komponenter och förlita mig på mekanisk design och kod för att få detta att fungera. Jag skulle behöva bygga en styrenhet och började fundera över vad handkontrollen skulle innehålla och vad jag exakt kunde göra med tornen. Cara Mia stod redan på agendan, men vad mer?

Manuell kontroll: Så när vingarna är öppna skulle jag vilja styra tonhöjden och vridningen. 2 axlar = en joystick, så joystickstyrning och några tryckknappar. Tryckknapp 1 skulle skjuta torn, och kanske tryck på knapp 2 skulle få det att säga ett av dess ord. Låter bra! Enkelt nog…

Chat: Jag såg nyligen rutinen "Who's on First" - Abbott och Costello igen, och ett ljus släckte i mitt huvud! Jag skulle också göra en skisskomedi -rutin med alla ordspråk, med flera torn! Ok, den här var inte helt klar över, men jag är säker på att jag skulle få det sorterat när min byggnad var igång.

Jag ville också att denna MTC skulle vara trådlös, så jag valde ett enkelt 9V batteridrivet alternativ och utformade kontrollenheten för att drivas av mini-USB-kontakten via Nano på baksidan. Användbar för uppdatering också.

Steg 1: Inkorporera radion i tornen

Jag fick först radion att fungera med några nakna Nanos, för att se till att jag kunde få den att fungera och skicka information mellan flera enheter. När det väl var gjort gällde det att införliva radion i de befintliga tornen. Hmm, det var ganska enkelt att lägga till det fysiska kretskortet i tornet. Jag har precis ändrat chiphållaren för att inkludera nRF24L01, Nano och mp3 -chip. Ok. En fysisk del modifierad, med några ledningar.

Den modifierade chiphållaren är redan en del av tornets tryckta delar nu. Jag har precis tagit bort alternativet för icke-radio från de utskrivna delarna i den versionen. Det kommer inte att göra någon skillnad om någon vill bygga den icke-radiovarianten. Inkludera bara inte nRF24L01 radiochip.

Steg 2: (Om) kabeldragning av tornen

(Om) kabeldragning av tornen
(Om) kabeldragning av tornen
(Om) kabeldragning av tornen
(Om) kabeldragning av tornen
(Om) kabeldragning av tornen
(Om) kabeldragning av tornen
(Om) kabeldragning av tornen
(Om) kabeldragning av tornen

Hoppsan…

Det här såg inte bra ut. Jag behövde lägga till 5 anslutningar till Nano, och jag hade redan låga tillgängliga nålar. Efter att ha tittat lite på detta insåg jag vilka anslutningar som gick före och insåg att för att få detta att fungera måste jag göra om de flesta befintliga Nano -anslutningarna.

Till dem som vill göra en "Radio Turret" och redan har byggt föregående gen … Sorry …

Nu har jag gjort den här ändringen några gånger och det visar sig att processen inte är så dålig. Det innebär att gå in igen, men jag kunde ångra de befintliga anslutningarna till Nano och sedan återansluta till lämpliga stift utan för mycket sorg. Jag lade till de 7 ledningarna för radiochipet till nRF24L01 (5 kommandotrådar, 3v och GND) och kopplade sedan de andra ändarna till Nano.

Fler ledningar där inne nu, så det gör det mycket viktigare att hålla ordning och reda när kablarna dras.

VIKTIGT: När du monterar, se till att trådarna inte trycker på Nano reset -knappen på kortet !! Det hände mig på en och kastade mig för en onödig slinga!

Så tornets byggnad har nu två kopplingsscheman: det gamla äldre alternativet "icke-radio" och det reviderade alternativet "radiotorn". Om jag skulle bygga ett "icke-radio" torn idag skulle jag fortfarande använda radioschemat och koden. Ta bara bort eller kommentera radiodelarna om det är den valda rutten eller inte. Tornet ska fortfarande fungera på egen hand utan radion.

Steg 3: MTC elektriska komponenter

MTC elektriska komponenter
MTC elektriska komponenter
MTC elektriska komponenter
MTC elektriska komponenter
MTC elektriska komponenter
MTC elektriska komponenter

Efter att tornen var redda var det dags att göra en MTC.

MTC: vänta 2 veckor+ för att få tag på vad jag behövde innan jag kunde börja den mekaniska designen!)

  • Arduino Nano 0,96”LCD, (SSD1306) Jag använde den blå/gula versionen
  • Liten joystick (HW-504) 5V PS joystickmodul
  • Vippströmställare (dx-004) 22mm * 13mm
  • Radio - (nRF24L01)
  • 12 mm tryckknappar (CLT1088 för färgade knappar, PBS-33B för svart)
  • 2 mm skruvar (M2 självgängande skruvar Set, Cross Drive Pan Head sortiment)
  • 5 mm lysdioder som du väljer för indikatorer. (Använd inte ljusa lysdioder !!)
  • Generisk 9V batterikontakt med flätor
  • 9V batteri (använd ett bra, inte en av dollarbutikssorterna som inte alltid kan leverera tillräckligt med ström för dessa projekt!)
  • Jag använde silikonhöljetråd. Jag gillar att använda den för dessa projekt.

Jag använde ursprungligen några ljusa lysdioder, men tyckte att de var för bra. De förblindade mig! Jag slutade använda några gamla, svaga lysdioder, och det var mer meningsfullt för den här applikationen.

Steg 4: 3D -tryckta delar

3D -tryckta delar
3D -tryckta delar
3D -tryckta delar
3D -tryckta delar
3D -tryckta delar
3D -tryckta delar

Jag designade MTC med Fusion, ungefär som jag gjorde tornets design.

Den tryckta enheten kräver bara 3 delar:

  • Övre panel (version 1 eller 2)
  • Bottenhus
  • LCD -rem

NRF -chipet, Nano, 9V -batteriet, vippomkopplaren och lysdioderna är installerade i topplattan utan fästelement. Lysdioderna trycker bara in plattan och hålls på plats av flikar. De borde bara knäppa in, men överdriv inte. Topplattan är utformad för att snäppa fast Nano, och nRF-chipet ska gå försiktigt in. Var försiktig med den lilla nRF -fliken; den är liten och är böjd bakåt för att öppna och släppas för att fånga chipet. Även om resan är begränsad, var försiktig här.

Joysticken och LCD -skärmen behöver 2 mm skruvar (5 mm långa) för att hålla dem på topplattan. Joystick -kretskortet har stora hål, så jag kände att jag behövde små brickor för att se till att skruvarna inte drog igenom.

Jag har upptäckt att kretskortet på LCD -skärmarna varierar något dimensionellt från tillverkare till tillverkare, så jag valde att använda en enkel rem för att hålla den på plats istället för klossar eller krokar.

Observera att LCD -skärmen fysiskt kan installeras i topplattan på något sätt, men displayen visas bara helt genom öppningen i en orientering! Av denna anledning har jag inkluderat ett 2: a topplatta -alternativ när jag använder den delade gula/blå skärmen. Den ena versionen har den gula överst, och den andra visar den gula längst ner som visas på mina foton.

För enfärgsversionen LCD spelar det ingen roll vilken som används eftersom du kan vända skärmen med programvara.

Eftersom alla ledningar görs på topplattan, är botten faktiskt bara ett lock som hålls på topplattan med längre 2 mm skruvar (antal: 4).

Istället för ett "batteridörr" -alternativ har jag precis införlivat batteriet i topplattan. Detta innebär att du tar bort de fyra skruvarna som håller botten till toppen för att byta batteri, men eftersom det också kan drivas med USB -kabel, inte världens ände. Topplattan är tillverkad med ett 9V batterihållarsystem som ska vara tillräckligt robust för upprepad användning, inte är alltför komplicerat men förhindrar att batteriet rör sig.

Jag skrev ut den övre plattan i 2 färger som ses på bilderna. Jag använder en Prusa i3 Mk2 utan flerfärgsalternativet, men använder deras färgutskriftsverktyg (https://www.prusaprinters.org/color-print/) för att ändra färg halvvägs genom processen. Kontrollera det lager som texten stoppar och blir fast, och gör det till övergångsskiktet. Voila! Färgad text!

Jag skrev ut delarna på 0,35 mm lagerhöjd eftersom det inte behövs någon finare upplösning på dessa plana delar. Jag föredrar också hur det ser ut på denna upplösning. Åh, och det skrivs ut ganska snabbt också!

Steg 5: Elmontering

Elektrisk montering
Elektrisk montering
Elektrisk montering
Elektrisk montering
Elektrisk montering
Elektrisk montering
Elektrisk montering
Elektrisk montering

De elektriska komponenterna är alla installerade på undersidan av topplattan, och alla ledningar görs tillsammans. Tryckknappar och växel måste installeras först, och LCD-, Nano-, Joystick-, nRF-radion kan alla vara förkopplade innan de installeras i topplattan. Jag rekommenderar denna metod för att förkabla de enskilda komponenterna och sedan göra de sista anslutningarna till Nano i slutet. Jag rekommenderar också att du laddar upp skissen till en nano först innan du slutför kablarna.

Det finns inget mer tillfredsställande än att slå på enheten och se hur den kommer till liv som förväntat när den är klar!

Den enda elektriska förberedelsen som krävdes var att ta bort huvudstiften från joysticken så att den passar under topplattan. LCD -skärmen kan köpas med eller utan stift installerade och fungerar på båda sätten. Nano bör väljas utan rubrikstift.

Steg 6: Kod

Kod för MTC, rött torn, vit torn och blå torn nu uppe

Det här var en upplevelse av kodning! Jag fick tornet att arbeta självständigt, men att integrera radion var svårare än jag ursprungligen trodde! Jag hade också lite kul att få avsnittet "Chatt" att fungera som önskat (mer om det senare).

MTC -koden, när den väl var klar, började beskatta minnesgränserna för Nano! Jag var tvungen att göra justeringar och spara på koden för att bli mer minneseffektiv. Ännu en bra inlärningsupplevelse.

Jag har inkluderat motsvarande "Turret w radio option" -kod i denna byggnad, när de arbetar tillsammans. Genom att bygga radioalternativstornet per Turret -byggsidan blir det klart för användning med MTC, eller för din andra nRF24L01 -kontrollmetod.

Dessutom tog det lite tid att få ljuden att fungera med den här koden, och eftersom ljuden togs från andra offentligt tillgängliga webbplatser införlivade jag alla ljud när jag använde dem i ett par ZIP -filer; en för den vanliga torn, och en för defekt torn. Det som är bra för dig, kära läsare, är att du kan använda ljuden på dina SD -kort med koderna som skrivna och du är klar att gå!

Steg 7: MTC -meny - Navigation

MTC -meny - Navigation
MTC -meny - Navigation
MTC -meny - Navigation
MTC -meny - Navigation
MTC -meny - Navigation
MTC -meny - Navigation

MTC -koden startar med en anpassad Splash -skärm och kontrollerar sedan statusen för tornen. Om inga torn finns, kommer det bara att sitta där tills tornen ansluter!

Om minst ett torn är anslutet kommer huvudmenyn att visas och "Ready" -lampan tänds, såvida inte tornen avbryts eller är upptagna med att "träffa någon". Om de är upptagna visas en "Turrets are Busy screen" och "Busy" -lampan tänds.

Alla aktivt anslutna torn måste vara i "Ready Mode" innan MTC kan styra tornen.

Använd joysticken (upp och ner) för att bläddra igenom menyalternativen:

  • Aria
  • Chatt
  • Manuell

Välj önskat alternativ med knappen ‘X’, eller genom att trycka ned joysticken.

Aria Mode - om du väljer det här alternativet visas skärmen "Aria Mode" och får tornen att utföra Aria -scenen i slutet av Portal 2 -spelet. När de är klara stängs tornen och väntar på att ett kommando eller någon ska väcka dem.

Chattläge - Om du väljer det här alternativet visas skärmen "Chattläge" och chatsekvensen startas. När de är klara stängs tornen och väntar på att ett kommando eller någon ska väcka dem.

Manuellt läge - Om du väljer det här alternativet visas skärmen "Manuellt läge", lyser "Manuell" lysdiod och tillåter manuell drift av tornen. Joystickstyrning av tonhöjd och vridning. Genom att trycka på "X" -knappen aktiveras avfyrningssekvensen. Genom att trycka på "T" -knappen kommer de att "prata", där tornen talar ett slumpmässigt talesätt från deras bibliotek.

Om du trycker på knappen <eller bakåt avbryts dessa tre lägen, stänger tornen och återgår till huvudmenyn.

Om du vill se anslutningsstatus för din svärm av torn (för närvarande begränsad till 3), tryck på "T" -knappen i huvudmenyn. Du kommer till skärmen "tornstatus" där du kan se anslutningsstatus för varje torn.

I skärmen "tornstatus" ser du statusen för varje torn.

  • Redo - redo för kontroll
  • Upptagen - torn är upptagen med att "sköta" någon
  • Ej tillgängligt - MTC kan inte ansluta till detta torn

Tryck på knappen <för att återgå till huvudmenyn.

Steg 8: Anpassa koden

Anpassa koden
Anpassa koden

Skärmbilden som visas här visar vad jag stirrade på alldeles för länge … 4 skisser åt gången! Vem sa att felsökning inte är roligt!

Koden ger kontrollen och alternativen som visas ovan, men hur är det med att anpassa koden?

Självklart! Men det händer en hel del här, så här är några riktlinjer eller tips.

Tips 1 - Ändra”Chat” -sekvensen. Denna modifiering sker i tornkoden.

Jag försökte komma på ett sätt att få koden att fungera för mig var jag kunde. Att göra chatsekvensen mer redigerbar (Är det ett ord?) Så att jag kunde fokusera på historien tog mer arbete i förväg, men gör det lättare att anpassa efteråt.

Att ändra chatsekvensen med den angivna kodstrukturen kan göras på ett ganska enkelt sätt, förutsatt att du följer metoden som används i koden. Med de medföljande ljudfilerna från Portal 2 -spelet behöver du bara ändra tabellen (chatSayings ).

Välj ordspråket för antingen det vanliga torn eller defekta torn. Ordspråket är mp3 -filen som identifieras med “00XX -” följt av text som beskriver ordspråket. Det är siffran som är den viktiga delen. Turret # 1 skulle använda detta XX -värde i tabellen. Tornet # 2 skulle prefixa XX -värdet med ett "1" och torn # 3 skulle prefixa XX -värdet med ett "2". Så om du till exempel valde uttrycket "0040 - förlåt" och ville att torn # 3 skulle säga det, skulle du infoga "240" i tabellen i rätt ordning. Om torn # 1 skulle säga det skulle du sätta in "40" i bordet.

Gör samma sak för nästa uttryck, och så vidare. Det kan vara några uttryck mellan tornen, eller ganska många. (Jag är inte medveten om begränsningarna för denna metod, annat än minne).

Du skulle inte behöva ändra värdena för de andra tabellerna eftersom det är tidpunkterna som motsvarar ordspråket i tabellen. Den enda andra raden som ska ändras är runt rad 520.

if (i> = 43) {// slutet av sekvensen

Värdet på i här måste ställas in på antalet ord i tabellen chatSayings.

För att göra helt anpassade ord (där det riktigt roliga börjar!), Måste du ställa in uttrycken i numrerade filer och veta hur lång tid det tar att spela filen. Spara filen i mappen "mp3" i rotkatalogen på SD -kortet med fyrsiffriga metoden ("0001", "0002", etc.). Logga sedan in tiden i millisekunder som det tar för filen att spela. Sätt in dessa värden i lämplig tabell.

Så för ett uttryck sparat som "0037 - [ditt uttryck]", som tar 5400 millisekunder att spela, skulle du lägga "37" i tabellen chatSayings på lämplig plats (och lägga till prefixet beroende på vilket torn som säger it) och 5400 i tabellen NormaTimings på samma plats (t.ex. femte objektet i varje tabell).

Nu när värdet på 'i' ökas kommer koden att spela 0037 i 5400 millisekunder.

Observera att jag har lagt till en "timeadder" -variabel som ger lite extra tid till varje ordspråk när du spelar. Detta ger ett litet avstånd mellan ordspråken så att de inte verkar överlappa varandra.

Det fina med denna metod är att de färdiga borden är exakt samma i varje torn! Du behöver inte anpassa dessa bord för varje torn. Du behöver bara sortera ut en tabell, och koden räknar ut vad varje torn säger utifrån samma tabell.

Det betyder att du kan fokusera på manusskrivande istället för kodning!

Om någon har ett bättre sätt att göra detta, skulle jag gärna höra det !!

Steg 9: Sammanfattning

Sammanfattning
Sammanfattning

Så detta tog mer tid än jag trodde, men jag är ganska kittlad av resultatet. Några av chattrutinerna får mig fortfarande att skratta!

Jag skulle älska att höra andra metoder för att göra de saker jag gjorde inom min kod. Jag är säker på att det finns avsnitt som kan skrivas om och använda mindre minne, vilket möjliggör fler funktioner eller alternativ.

Jag skulle också vilja se andra idéer införlivade i MTC och kontroll av tornen!

Jag hoppas att jag har tillhandahållit en plattform för andra designers och kodare att använda / stjäla / lära av. Jag kunde se att detta används för att hjälpa människor att lära sig att koda. Ta bort en sektion från MTC och/eller torn, till exempel "Manuellt läge", och få eleverna att utveckla sitt eget sätt att införliva manuell styrning!

Jag har lärt mig mycket av denna gemenskap och den bredare webben i allmänhet. Jag är fortfarande förvånad över hur många människor som spenderar mycket tid på att ta reda på saker och dela dem med världen. Jag tycker att jag ska ta det jag har lärt mig, applicera det och sedan dela det med dig också!

Lycka till och ha kul att bygga din egen armé av torn!

Rekommenderad: