İçindekiler:

Portal 2 Taret - Master Taret Kontrolü: 9 Adım (Resimlerle)
Portal 2 Taret - Master Taret Kontrolü: 9 Adım (Resimlerle)

Video: Portal 2 Taret - Master Taret Kontrolü: 9 Adım (Resimlerle)

Video: Portal 2 Taret - Master Taret Kontrolü: 9 Adım (Resimlerle)
Video: Dünyanın en zor zeka oyunu daha çözebilen yok 😳😳 2024, Temmuz
Anonim
Image
Image

Bu proje, Instructables'taki orijinal Portal Turret'imin (Portal-2-Taret-Gun) bir uzantısı veya remiksidir. Ayrıca nRF24L01 radyo çipini kullanan her şeyi kontrol etmek için ucuz bir kontrolör olarak da kullanılabilir. LCD ekran özellikle kişiselleştirme sırasında kullanışlıdır.

(Telsizlerimin "ağ" üzerindeki diğer nRF24L01'ler ile ne zaman bağlantı kurup bağlantılarını kaybettiğini kontrol etmede oldukça faydalı olduğu ortaya çıktı. Etrafta dolaşabilir ve telsizlerin bağlantı durumunu gösteren ekranı izleyebilirim! Ayarların yapılması ve doğrulama için oldukça yararlı Aralık!)

Portal Taret'i tamamladıktan sonra Portal 2'nin sonunda Cara Mia opera sahnesinin kısa bir video klibini gördüm. “Hey, şimdi birkaç kule yaptım. Bunu yapabilirim! Taretlerim vardı ama çalışması için artık birbirleriyle veya başka bir cihazla iletişim kurmaları gerekecekti. Biraz düşündükten ve manuel kontrolün de harika olacağını düşündükten sonra, Master Taret Kontrolörü veya MTC yapmaya karar verdim.

Tamam, bu konuda nasıl gidilir? Pekala, taretleri çok fazla değiştirmek istemedim, bu yüzden bu bir kısıtlamaydı. Henüz kullanmadığım bazı nRF24L01 radyo çiplerim vardı ve bunun ucuz bileşenler kullanma ve bu işi yapmak için mekanik tasarım ve koda güvenme hedefime uygun olacağını düşündüm. Bir kontrolör inşa etmem ve kontrolörün ne içereceğini ve taretlere tam olarak ne yapabileceğimi düşünmeye başladım. Cara Mia zaten gündemdeydi ama başka ne var?

Manuel kontrol: Kanatlar açıldığında, eğimi ve pivotu kontrol etmek istiyorum. 2 eksen = bir joystick, yani joystick kontrolü ve bazı butonlar. 1 numaralı düğme tareti ateşler ve belki 2 numaralı düğme de onun sözlerinden birini söylemesini sağlar. Kulağa iyi geliyor! Yeterince basit…

Sohbet: Geçenlerde "Kim İlk Başlıyor" - Abbott ve Costello rutinini tekrar gördüm ve kafamda bir ışık yandı! Ayrıca, birden fazla taret kullanarak tüm sözleri kullanarak bir skeç komedi rutini yapardım! Tamam, bu tam olarak çözülmedi, ancak inşam devam ederken sıralayacağımdan eminim.

Ayrıca bu MTC'nin kablosuz olmasını istedim, bu yüzden basit bir 9V pille çalışan seçeneği seçtim ve denetleyiciyi arkadaki Nano'dan mini USB fişiyle çalışacak şekilde tasarladım. Güncellemek için de kullanışlıdır.

Adım 1: Telsizi Kulelere Dahil Etme

Çalışmasını ve birden fazla cihaz arasında bilgi göndermesini sağlamak için önce radyoyu birkaç çıplak Nano ile çalıştırdım. Bu yapıldıktan sonra, telsizi mevcut taretlere dahil etme meselesiydi. Hmm, fiziksel PCB'yi tarete eklemek oldukça kolaydı. Çip tutucuyu nRF24L01, Nano ve mp3 çipini içerecek şekilde değiştirdim. Tamam. Bir fiziksel parça, biraz kablolama ile değiştirildi.

Değiştirilmiş çip tutucu artık taret baskılı parçaların bir parçası. Az önce bu yapıdaki basılı parçalardan radyo olmayan seçeneği sildim. Birisi radyo olmayan varyantı oluşturmak isterse, bir fark yaratmaz. Sadece nRF24L01 radyo çipini dahil etmeyin.

Adım 2: Kulelerin (Yeniden) kablolanması

Kulelerin (yeniden) kablolaması
Kulelerin (yeniden) kablolaması
Kulelerin (yeniden) kablolaması
Kulelerin (yeniden) kablolaması
Kulelerin (yeniden) kablolaması
Kulelerin (yeniden) kablolaması
Kulelerin (yeniden) kablolaması
Kulelerin (yeniden) kablolaması

ah ah…

Bu iyi görünmüyordu. Nano'ya 5 bağlantı eklemem gerekiyordu ve zaten mevcut pinlerim azdı. Bunu biraz inceledikten sonra, hangi bağlantıların öncelikli olduğunu anladım ve bu işi yapmak için mevcut Nano bağlantılarının çoğunu yeniden eşleştirmem gerektiğini anladım.

Bir “Radyo Tareti” yapmak isteyenlere ve bir önceki nesli inşa etmiş olanlara… Üzgünüm…

Şimdi, bu değişikliği birkaç kez yaptım ve sürecin çok da kötü olmadığı ortaya çıktı. Geri dönmeyi içeriyor, ancak Nano ile mevcut bağlantıları geri alabildim ve daha sonra çok fazla üzülmeden uygun pinlere yeniden bağlanabildim. Radyo çipi için 7 kabloyu nRF24L01'e (5 iletişim kablosu, 3v ve GND) ekledim, ardından diğer uçları Nano'ya bağladım.

Artık daha fazla kablo var, bu yüzden kabloları yönlendirirken işleri düzenli tutmak çok daha önemli hale geliyor.

ÖNEMLİ: Montaj sırasında kabloların kart üzerindeki Nano sıfırlama düğmesine basmadığından emin olun!! Bu bir kere başıma geldi ve beni gereksiz bir döngüye attı!

Böylece taret yapısında artık 2 kablo şeması var: eski "radyosuz" seçenek ve revize edilmiş "radyo Taret" seçeneği. Bugün “telsiz olmayan” bir taret inşa etseydim, yine de telsiz şemasını ve kodunu kullanırdım. Seçilen rota buysa veya değilse, radyo bölümlerini silin veya yorumlayın. Taret, telsiz olmadan da kendi kendine çalışmalıdır.

Adım 3: MTC Elektrik Bileşenleri

MTC Elektrik Bileşenleri
MTC Elektrik Bileşenleri
MTC Elektrik Bileşenleri
MTC Elektrik Bileşenleri
MTC Elektrik Bileşenleri
MTC Elektrik Bileşenleri

Kuleleri sıraladıktan sonra, bir MTC yapmanın zamanı gelmişti.

MTC, tümü Amazon veya Baggood veya Ali Express vb. aracılığıyla sağlanan aşağıdaki bileşenleri kullanır. Bu öğeler yaygın olarak bulunabildiğinden ve makul fiyatlı olduğundan (ve benim de gerekmediğinden) referans olması için referans verdiğim Amazon parça numaralarını gösteriyorum. mekanik tasarıma başlamadan önce ihtiyacım olanı almak için 2+ hafta bekleyin!)

  • Arduino Nano 0.96” LCD, (SSD1306) Mavi/Sarı versiyonunu kullandım
  • Küçük Joystick (HW-504) 5V PS joystick modülü
  • Geçiş anahtarı (dx-004) 22mm * 13mm
  • Radyo - (nRF24L01)
  • 12 mm basmalı düğmeler (renkli düğmeler için CLT1088, siyah için PBS-33B)
  • 2 mm vidalar (M2 Kendinden Vuran Vida Seti, Çapraz Tahrik Pan Başlı çeşitleri)
  • Göstergeler için seçtiğiniz 5 mm LED'ler. (Parlak LED'ler kullanmayın!!)
  • Pigtailler ile genel 9V pil konektörü
  • 9V pil (bu projeler için her zaman yeterli gücü sağlayamayan dolar mağaza çeşitlerinden değil, iyi bir tane kullanın!)
  • Silikon kılıflı tel kullandım. Bu projeler için kullanmayı seviyorum.

Başlangıçta bazı parlak LED'ler kullandım, ancak çok iyi olduklarını gördüm. Beni kör ediyorlardı! Sonunda bazı eski, zayıf LED'ler kullandım ve bu, bu uygulama için daha mantıklıydı.

Adım 4: 3D Basılı Parçalar

3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar

MTC'yi taret tasarımına benzer şekilde Fusion kullanarak tasarladım.

Basılı montaj yalnızca 3 parça gerektirir:

  • Üst panel (versiyon 1 veya 2)
  • Alt gövde
  • LCD kayış

nRF çipi, Nano, 9V pil, geçiş anahtarı ve LED'ler, bağlantı elemanları olmadan üst plakaya monte edilmiştir. LED'ler sadece plakaya bastırır ve tırnaklarla yerinde tutulur. Sadece geçmeliler, ama aşırıya kaçmayın. Üst plaka Nano'yu tutturmak için tasarlanmıştır ve nRF çipi yavaşça girmelidir. nRF küçük sekmesine dikkat edin; küçüktür ve açılmak üzere bükülür ve çipi yakalamak için serbest bırakılır. Seyahati sınırlı olsa da, burada nazik olun.

Joystick ve LCD, üst plakaya tutturmak için 2 mm vidaya (5 mm uzunluğunda) ihtiyaç duyar. Joystick PCB'de büyük delikler var, bu yüzden vidaların geçmediğinden emin olmak için küçük pullara ihtiyacım olduğunu hissettim.

LCD'lerin geldiği PCB'nin üreticiden üreticiye boyutsal olarak biraz değiştiğini buldum, bu yüzden onu yerinde tutmak için kilitler veya kancalar yerine basit bir kayış kullanmayı seçtim.

LCD'nin her iki şekilde de üst plakaya fiziksel olarak monte edilebileceğini unutmayın, ancak ekran yalnızca tek yönde açıklıktan tamamen görünür! Bu nedenle, bölünmüş sarı/mavi ekranı kullanırken 2. bir üst plaka seçeneği ekledim. Bir versiyonun üst kısmında sarı var, diğeri ise fotoğraflarımda gösterildiği gibi sarıyı altta gösterecek.

Tek renkli LCD versiyonu için, yazılımı kullanarak ekranı çevirebileceğiniz için hangisinin kullanıldığı önemli değildir.

Tüm kablolama üst plaka üzerinde yapıldığından, alt kısım etkili bir şekilde sadece 2 mm'lik daha uzun vidalarla üst plakaya tutulan bir kapaktır (adet:4).

Bir "pil kapağı" seçeneği yerine, pili üst plakaya yerleştirdim. Bu, bir pili değiştirmek için alttan üste tutan 4 vidayı çıkarmak anlamına gelir, ancak dünyanın sonu değil, aynı zamanda USB kablosuyla da çalıştırılabileceğinden. Üst plaka, tekrarlanan kullanım için yeterince sağlam olması gereken, aşırı karmaşık olmayan ancak pilin hareket etmesini engelleyen 9V pil tutucu sistemle yapılmıştır.

Üst tablayı fotoğraflarda görüldüğü gibi 2 renk olarak bastım. Çoklu renk seçeneği olmayan bir Prusa i3 Mk2 kullanıyorum, ancak süreç boyunca rengi değiştirmek için renkli yazdırma araçlarını (https://www.prusaprinters.org/color-print/) kullanıyorum. Metnin durduğu ve katılaştığı katmanı kontrol edin ve bunu geçiş katmanı yapın. İşte! Renkli metin!

Bu düz parçalarda daha ince çözünürlüğe gerek olmadığı için parçaları 0.35mm katman yüksekliğinde yazdırdım. Ben de bu çözünürlükte nasıl göründüğünü tercih ediyorum. Oh, ve oldukça hızlı yazdırıyor!

Adım 5: Elektrik Montajı

Elektrik Montajı
Elektrik Montajı
Elektrik Montajı
Elektrik Montajı
Elektrik Montajı
Elektrik Montajı
Elektrik Montajı
Elektrik Montajı

Elektrikli bileşenlerin tümü Üst plakanın alt tarafına monte edilmiştir ve tüm kablolama birlikte yapılır. Önce basmalı düğmeler ve açma/kapama düğmesi kurulmalıdır ve LCD, Nano, Joystick, nRF radyo, Üst plakaya takılmadan önce önceden kablolanabilir. Tek tek bileşenlerin ön kablolama yöntemini, ardından Nano'ya son bağlantıları en sonunda yapmak için bu yöntemi öneriyorum. Ayrıca kablolamayı tamamlamadan önce taslağı çıplak bir Nano'ya yüklemenizi tavsiye ederim.

Cihazı açıp bittiğinde beklendiği gibi hayata geçmesini izlemekten daha tatmin edici bir şey yoktur!

Gerekli olan tek elektrikli parça hazırlığı, üst plakanın altına sığdırmak için başlık pimlerini joystick'ten çıkarmaktı. LCD ekran, pim takılı veya takılı olmadan satın alınabilir ve her iki şekilde de çalışır. Nano, başlık pimleri olmadan seçilmelidir.

6. Adım: Kod

MTC, Red taret, White Taret ve Blue Taret için kod şimdi çıktı

Eh, bu bir kodlama deneyimiydi! Tareti bağımsız çalıştırdım, ancak telsizi dahil etmek düşündüğümden daha zordu! Ayrıca “Sohbet” bölümünün istendiği gibi çalışmasını sağlamakta biraz eğlendim (daha sonraları).

MTC kodu, bir kez tam olarak anlaşıldığında, Nano'nun bellek sınırlarını zorlamaya başladı! Hafızayı daha verimli kullanmak için ayarlamalar yapmak ve kodu ekonomik hale getirmek zorunda kaldım. Güzel bir öğrenme deneyimi daha.

Birlikte çalıştıkları için bu yapıya karşılık gelen "Taret w radyo seçeneği" kodunu ekledim. Telsiz seçeneği taretini Taret oluşturma sayfasına göre oluşturmak, onu MTC ile veya diğer nRF24L01 kontrol yönteminiz için kullanıma hazır hale getirecektir.

Ayrıca, seslerin bu kodla çalışması biraz zaman aldı ve sesler diğer herkesin erişebileceği web sitelerinden alındığından, tüm sesleri birkaç ZIP dosyasında kullandığım gibi dahil ettim; biri normal taret için, diğeri Arızalı taret için. Senin için iyi olan şey sevgili okuyucu, SD kartlarınızdaki sesleri yazılı olarak kodlarla kullanabilmeniz ve gitmeniz iyi olur!

7. Adım: MTC Menüsü - Navigasyon

MTC Menüsü - Navigasyon
MTC Menüsü - Navigasyon
MTC Menüsü - Navigasyon
MTC Menüsü - Navigasyon
MTC Menüsü - Navigasyon
MTC Menüsü - Navigasyon

MTC kodu, özel bir Açılış ekranıyla başlar ve ardından taretlerin durumunu kontrol eder. Hiçbir taret yoksa, taret bağlanana kadar orada duracaktır!

En az bir taret bağlıysa, taret kesintiye uğramadığı veya "biriyle uğraşmak" ile meşgul olmadığı sürece ana menü görüntülenecek ve "Hazır" LED'i yanacaktır. Meşgullerse, "Taret Meşgul ekranı" görüntülenecek ve "Meşgul" LED'i yanacaktır.

MTC'nin taretleri kontrol edebilmesi için aktif olarak bağlı tüm taretlerin "Hazır Modu"nda olması gerekir.

Menü seçenekleri arasında geçiş yapmak için joystick'i (yukarı ve aşağı) kullanın:

  • Arya
  • Sohbet etmek
  • Manuel

'X' düğmesini kullanarak veya joystick'e basarak istediğiniz seçeneği seçin.

Aria Modu - bu seçeneğin seçilmesi “Aria Modu” ekranını gösterecek ve taretlerin Portal 2 oyununun sonunda Aria sahnesini gerçekleştirmesini sağlayacaktır. Tamamlandığında, taretler kapanacak ve bir komut veya birinin onları uyandırmasını bekleyecektir.

Sohbet Modu - Bu seçeneğin seçilmesi “Sohbet Modu” ekranını görüntüleyecek ve Sohbet dizisini başlatacaktır. Tamamlandığında, taretler kapanacak ve bir komut veya birinin onları uyandırmasını bekleyecektir.

Manuel Mod - Bu seçeneğin seçilmesi “Manuel Mod” ekranını görüntüleyecek, “Manuel” LED'ini yakacak ve taretlerin manuel çalışmasına izin verecektir. Pitch ve pivot için joystick kontrolü. 'X' düğmesine basmak, ateşleme sırasını etkinleştirecektir. 'T' düğmesine basmak, kulelerin kitaplıklarından rastgele bir söz söylediği yerde onları "konuşturur".

'<' veya geri düğmesine basmak bu üç modu iptal edecek, taretleri kapatacak ve ana menüye dönecektir.

Taret sürünüzün (şu anda 3 ile sınırlı) bağlantı durumunu görmek istiyorsanız, ana menüdeyken 'T' düğmesine basın. Her bir kulenin bağlantı durumunu görebileceğiniz “taret durumu” ekranına yönlendirileceksiniz.

"Taret durumu" ekranındayken, her bir kulenin durumunu göreceksiniz.

  • Hazır - kontrole hazır
  • Meşgul - taret birine "ilişmekle" meşgul
  • Mevcut değil - MTC bu kuleye bağlanamıyor

Ana menüye dönmek için '<' düğmesine basın.

Adım 8: Kodu Özelleştirme

Kodu Özelleştirme
Kodu Özelleştirme

Burada gösterilen ekran görüntüsü, çok uzun süredir neye baktığımı gösteriyor… Bir seferde 4 çizim! Hata ayıklamanın eğlenceli olmadığını kim söyledi!

Kod, yukarıda gösterilen kontrol ve seçenekleri sağlar, ancak kodu özelleştirmeye ne dersiniz?

Tabii ki! Ancak burada oldukça fazla şey oluyor, bu yüzden işte bazı yönergeler veya ipuçları.

İpucu1 - “Sohbet” sırasını değiştirme. Bu değişiklik taret kodunda gerçekleşir.

Elimden geldiğince kodun benim için çalışmasını sağlamanın bir yolunu bulmaya çalıştım. Hikayeye odaklanabilmem için sohbet dizisini daha düzenlenebilir hale getirmek (Bu bir kelime mi?) Önde daha fazla çalışma gerektirdi, ancak daha sonra özelleştirmeyi kolaylaştırdı.

Sağlanan kodlama yapısını kullanarak Sohbet sırasını değiştirmek, kodda kullanılan yöntemi izlemeniz koşuluyla oldukça basit bir şekilde yapılabilir. Portal 2 oyunundan sağlanan ses dosyalarını kullanarak, yalnızca (chatSayings) tablosunu değiştirmeniz gerekir.

Normal taret veya kusurlu taret için deyimi seçin. Deyiş, “00XX -” ile tanımlanan mp3 dosyası ve ardından deyimi açıklayan metindir. Önemli olan sayıdır. Taret #1, tablodaki bu XX değerini kullanır. 2 numaralı taret, XX değerinin önüne '1' ve 3 numaralı taret, XX değerinin önüne '2' ekler. Örneğin, “0040 - pardon” ifadesini seçiyor ve taret # 3'ün bunu söylemesini istiyorsanız, tabloya “240”ı doğru sırayla eklersiniz. 1 numaralı taret söyleseydi, masaya “40” eklerdiniz.

Bir sonraki ifade için de aynısını yapın, vb. Kuleler arasında birkaç ifade veya birkaç tane olabilir. (Bu yöntemin bellek dışındaki sınırlamalarının farkında değilim).

Tablodaki söze karşılık gelen zamanlamalar olduğundan diğer tabloların değerlerini değiştirmenize gerek yoktur. Değiştirilecek diğer tek satır 520 satırı civarındadır.

if (i >= 43) { // dizinin sonu

Buradaki i değeri, chatSayings tablosundaki sözlerin sayısına ayarlanmalıdır.

Tamamen özelleştirilmiş sözler yapmak için (gerçek eğlencenin başladığı yer!), ifadeleri numaralı dosyalarda ayarlamanız ve dosyayı oynatmak için gereken süreyi bilmeniz gerekir. Dosyayı dört basamaklı yöntemi (“0001”, “0002” vb.) kullanarak SD kartın kök dizinindeki “mp3” klasörüne kaydedin. Ardından, o dosyanın oynatılması için geçen süreyi milisaniye cinsinden kaydedin. Bu değerleri uygun tabloya yerleştirin.

Bu nedenle, oynaması 5400 milisaniye süren “0037 - [ifadeniz]” olarak kaydedilen bir ifade için, chatSayings tablosunda uygun yere '37' koyarsınız (ve hangi taretin söylediğine bağlı olarak öneki eklersiniz). it) ve aynı konumdaki NormaTimings tablosunda 5400 (her tablodaki 5. öğe gibi).

Şimdi 'i' değeri artırıldığında, kod 0037'yi 5400 milisaniye boyunca çalacaktır.

Oynarken her söze biraz fazladan zaman ekleyen bir "timeadder" değişkeni eklediğimi unutmayın. Bu, sözler arasında biraz mesafe bırakır, böylece örtüşüyor gibi görünmezler.

Bu yöntemin güzelliği, tamamlanan tabloların her kulede tamamen aynı olmasıdır! Bu tabloları her taret için özelleştirmeye gerek yok. Yalnızca bir tabloyu sıralamanız gerekir ve kod, aynı tabloya dayalı olarak her bir taretin ne söylediğini bulur.

Bu, kodlama yerine komut dosyası yazmaya odaklanabileceğiniz anlamına gelir!

Birinin bunu yapmanın daha iyi bir yolu varsa, bunu duymayı çok isterim!!

9. Adım: Özet

Özet
Özet

Bu düşündüğümden daha fazla zaman aldı, ama sonuçtan daha çok gıdıklandım. Sohbet rutinlerinden bazıları hala beni güldürüyor!

Kodumda yaptığım şeyleri yapmanın diğer yöntemlerini duymayı çok isterim. Yeniden yazılabilecek ve daha az bellek kullanan, daha fazla özellik veya seçeneğe izin veren bölümler olduğundan eminim.

Ayrıca MTC'ye dahil edilen diğer fikirleri ve taretlerin kontrolünü görmeyi çok isterim!

Umarım diğer tasarımcıların ve kodlayıcıların kullanması/çalması/öğrenmesi için bir platform sunmuşumdur. Bunun insanların kodlamayı öğrenmelerine yardımcı olmak için kullanıldığını görebiliyordum. Örneğin, MTC ve/veya kuleden "Manuel mod" gibi bir bölümü kaldırın ve öğrencilerin manuel kontrolü dahil etmek için kendi yollarını geliştirmelerini sağlayın!

Bu topluluktan ve genel olarak daha geniş web'den çok şey öğrendim. Hala kaç kişinin bir şeyleri anlamak ve dünyayla paylaşmak için çok fazla zaman harcadığına şaşırıyorum. Öğrendiklerimi almalı, uygulamalı ve sonra sizinle de paylaşmalıyım diye düşündüm!

İyi şanslar ve kendi kule ordunuzu kurarken iyi eğlenceler!

Önerilen: