İçindekiler:
- Adım 1: Tedarik Listesi
- Adım 2: Jeodezik Kubbeyi Tasarlamak
- Adım 3: Dikmeler ve Konnektörlerle Kubbe İnşa Etme
- Adım 4: Lazer Kesim ve Taban Plakalarının Montajı
- Adım 5: Elektroniğe Genel Bakış
- Adım 6: LED'leri Kubbeye Monte Etme
- Adım 7: Sensör Montaj Tasarımı ve Uygulaması
- Adım 8: Çoğullama Sensör Çıkışı
- Adım 9: Akrilik ile Işığı Yaymak
- Adım 10: MIDI Kullanarak Dome ile Müzik Yapmak
- Adım 11: Kubbeye Güç Verme
- Adım 12: Dairesel Kubbe Tabanı
- Adım 13: Pentagon Kubbe Tabanı
- Adım 14: Kubbeyi Programlama
- Adım 15: Tamamlanan Kubbenin Fotoğrafları
Video: Etkileşimli Jeodezik LED Kubbe: 15 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Her üçgende LED'li ve sensörlü 120 üçgenden oluşan jeodezik bir kubbe inşa ettim. Her LED ayrı ayrı adreslenebilir ve her sensör tek bir üçgen için özel olarak ayarlanmıştır. Kubbe, elinizi hangi üçgene yerleştirdiğinize bağlı olarak yanacak ve bir MIDI sinyali üretecek şekilde bir Arduino ile programlanmıştır.
Kubbeyi, insanların ışık, elektronik ve ses ile ilgilenmesini sağlayan eğlenceli bir ekran olarak tasarladım. Kubbe güzel bir şekilde beş parçaya bölündüğü için kubbeyi, her biri farklı bir sese sahip olabilen beş ayrı MIDI çıkışına sahip olacak şekilde tasarladım. Bu, kubbeyi aynı anda birden fazla kişiyle müzik çalmak için ideal olan dev bir müzik aleti yapar. Müzik çalmaya ek olarak, kubbeyi ışık gösterileri ve Simon ve Pong'un bir yorumunu çalmak için de programladım. Nihai yapı, bir metreden biraz daha fazla çapa ve 70 cm yüksekliğe sahip ve öncelikle ahşap, akrilik ve 3D baskılı parçalardan oluşuyor.
Bu projeye başlamam için bana ilham veren LED tabloları ve küpleri üzerinde birkaç harika Instructables var. Ancak LED'leri farklı bir geometride düzenlemeyi denemek istedim. Proje için Instructables'ta da iyi belgelenmiş jeodezik bir kubbeden daha iyi bir yapı düşünemedim. Dolayısıyla bu proje, LED tabloların ve jeodezik kubbelerin bir remiksi/karıştırmasıdır. Aşağıda, projenin başında kontrol ettiğim LED tablosuna ve jeodezik kubbe Talimatlarına bağlantılar bulunmaktadır.
LED tablolar ve küpler:
www.instructables.com/id/RGB-LED-Pixel-Touc…
www.instructables.com/id/Touch-LED-Table-Re…
www.instructables.com/id/Led-Cube-8x8x8/
www.instructables.com/id/500-LED-Pixel-RGB-…
Jeodezik kubbe:
www.instructables.com/id/Folding-Geodesic-D…
www.instructables.com/id/Geodesic-dome-kit/
Adım 1: Tedarik Listesi
Malzemeler:
1. Kubbe payandaları ve kubbe kaidesi için ahşap (miktar kubbe tipine ve boyutuna bağlıdır)
2. Adreslenebilir LED şerit (16.4ft/5m Adreslenebilir Renkli LED Piksel Şerit 160leds Ws2801 Dc5v)
3. Arduino Uno (Atmega328 - monte edilmiş)
4. Prototip kartı (Penta Angel Çift Taraflı Prototip PCB Evrensel (7x9cm))
5. LED'leri yaymak için Akrilik (Dökme Akrilik Levha, Şeffaf, 12" x 12" x 0.118" Boyut)
6. Güç kaynağı (Aiposen 110/220V - DC12V 30A 360W Anahtarlı Güç Kaynağı Sürücüsü)
7. Arduino için Buck Dönüştürücü (RioRand LM2596 DC-DC Buck Dönüştürücü 1.23V-30V)
8. LED'ler ve sensörler için Buck dönüştürücü (DROK Mini Electric Buck Voltaj Dönüştürücü 15A)
9. 120 IR sensörü (Kızılötesi Engelden Kaçınma Sensörü Modülü)
10. Beş adet 16 kanallı çoklayıcı (Analog/Dijital MUX Breakout - CD74HC4067)
11. Altı adet 8 kanallı çoklayıcı (Multiplexer Breakout - 8 Kanal (74HC4051))
12. Beş adet 2 kanallı çoklayıcı (MAX4544CPA+)
13. Tel sarma teli (PCB Lehim 0.25mm Kalay Kaplı Bakır Kordon Çapı Tel Sarma Teli 305M 30AWG Kırmızı)
14. Bağlantı kablosu (Solid Core, 22 AWG)
15. Pin Başlıkları (Gikfun 1 x 40 Pin 2.54mm Tek Sıra Ayrılabilir Erkek Pin Başlığı)
16. Beş MIDI jakı (Breadboard dostu MIDI Jakı (5 pinli DIN))
17. MIDI jakları için on adet 220ohm direnç
18. Elektronikleri kubbeye monte etmek için bağımsız ara parçalar (Ayaklı Ara Parça Hex M3 Erkek x M3 Dişi)
19. Ayraçları ahşaba bağlamak için diş adaptörleri (E-Z Lok Dişli Ek Parça, Pirinç, Bıçak Dişi)
20. Epoksi veya Gorilla Süper Yapıştırıcı
21. Elektrik bandı
22. Lehim
Aletler:
1. Lehimleme İstasyonu
2. Elektrikli matkap
3. Daire testere
4. Yörünge zımparası
5. Dekupaj testeresi
6. Gönye testeresi
7. İletki
8. 3D yazıcı
9. Tel kesiciler
10. Tel sarma aracı
11. LED plakaları kesmek için lazer kesici (isteğe bağlı)
12. Kubbe tabanı için CNC shopbot (opsiyonel)
Adım 2: Jeodezik Kubbeyi Tasarlamak
Girişte bahsettiğim gibi, kendi jeodezik kubbenizi inşa etmek için birkaç çevrimiçi kaynak var. Bu siteler, inşa etmek istediğiniz kubbe türü için her bir tarafın uzunluğunu (yani payanda) ve gerekli konektör sayısını belirleyen kubbe hesaplayıcıları sağlar. Bir jeodezik kubbenin karmaşıklığı (yani üçgenlerin yoğunluğu), sınıfı (1V, 2V, 3V vb.) ile belirlenir ve daha yüksek karmaşıklık, mükemmel bir küresel yüzeyin daha iyi bir yaklaşımı haline gelir. Kendi kubbenizi inşa etmek için öncelikle bir kubbe çapı ve sınıfı seçmelisiniz.
40 cm yarıçaplı bir kürenin 5/12'si kadar kesilmiş bir 4V kubbe tasarlamama yardımcı olması için Domerama adlı bir site kullandım. Bu kubbe tipi için altı farklı uzunlukta payanda vardır:
30 X “A” - 8,9 cm
30 X "B" - 10.4cm
50 X “C” - 12.4cm
40 X "D" - 12,5 cm
20 X "E" - 13.0cm
20 X "K" - 13,2 cm
Bu, 2223 cm'ye (73 ft) kadar malzeme ekleyen toplam 190 payandadır. Bu kubbedeki payandalar için 1x3 (3/4" × 2-1 / 2") çam kereste kullandım. Destekleri bağlamak için Autocad kullanarak konektörler tasarladım ve 3D yazdırdım. STL dosyaları bu adımın sonunda indirilebilir. 4V 5/12 dome için konektör sayısı:
20 X 4-konnektör
6 X 5-konektör
45 X 6-konnektör
Bir sonraki adımda, ahşap dikmeler ve tasarladığım 3D baskılı bağlantı elemanları ile bu kubbenin nasıl yapıldığını anlatıyorum.
Adım 3: Dikmeler ve Konnektörlerle Kubbe İnşa Etme
4V 5/12 kubbe için Domerama'dan alınan hesaplamaları kullanarak, payandaları daire testere kullanarak kestim. 190 payanda etiketlendi ve kesildikten sonra bir kutuya yerleştirildi. 71 konektör (20 dört konektör, 6 beş konektör ve 45 altı konektör) Makerbot kullanılarak 3D yazdırıldı. Ahşap payandalar, Domerama tarafından oluşturulan şemaya göre konektörlere yerleştirildi. İnşaata tepeden başladım ve radyal olarak dışa doğru hareket ettim.
Tüm payandalar bağlandıktan sonra, her seferinde bir payandayı çıkardım ve ahşaba ve konektöre epoksi ekledim. Konektörler, yapıları nasıl bağladıkları konusunda esnekliğe sahip olacak şekilde tasarlandı, bu nedenle herhangi bir epoksi eklemeden önce kubbenin simetrisini kontrol etmek önemliydi.
Adım 4: Lazer Kesim ve Taban Plakalarının Montajı
Kubbenin iskeleti yapıldığına göre, sıra üçgen taban plakalarını kesmeye geldi. Bu taban plakaları, payandaların altına takılır ve LED'leri kubbeye monte etmek için kullanılır. Başlangıçta, kubbe üzerindeki beş farklı üçgeni ölçerek 5 mm (3/16”) kalınlığındaki kontrplaktan taban plakalarını kestim: AAB (30 üçgen), BCC (25 üçgen), DDE (20 üçgen), CDF (40 üçgen)) ve EEE (5 üçgen). Her bir kenarın boyutları ve üçgenlerin şekli, bir kubbe hesaplayıcısı (Domerama) ve biraz geometri kullanılarak belirlendi. Test taban plakalarını dekupaj testeresi ile kestikten sonra Coral Draw kullanarak üçgen tasarımı çizdim ve kalan taban plakalarını lazer kesici ile kestim (çok daha hızlı!). Bir lazer kesiciye erişiminiz yoksa, taban plakalarını bir cetvel ve iletki kullanarak kontrplak üzerine çizebilir ve hepsini bir dekupaj testeresi ile kesebilirsiniz. Taban plakaları kesildikten sonra kubbe ters çevrilir ve plakalar ahşap tutkalı kullanılarak kubbeye yapıştırılır.
Adım 5: Elektroniğe Genel Bakış
Yukarıdaki şekilde gösterilen kubbe elektroniğinin bir şemasıdır. Kubbe için sinyalleri yazmak ve okumak için bir Arduino Uno kullanılır. Kubbeyi aydınlatmak için kubbenin üzerine bir RGB LED şerit geçirilir, böylece 120 üçgenin her birine bir LED yerleştirilir. Bir LED şeridin nasıl çalıştığı hakkında bilgi için bu talimata bakın. Her LED, şerit için bir seri veri ve saat sinyali üreten Arduino kullanılarak ayrı ayrı adreslenebilir (şematikte A0 ve A1 pinine bakın). Sadece şerit ve bu iki sinyal ile harika bir ışıklı kubbeye sahip olabilirsiniz. Charlieplexing ve vardiya kayıtları gibi bir Arduino'dan çok sayıda LED için sinyal yazmanın başka yolları da var.
Kubbe ile etkileşime geçmek için her bir LED'in üzerine bir IR sensörü kurdum. Bu sensörler, birinin elinin kubbedeki bir üçgene yakın olduğunu algılamak için kullanılır. Kubbe üzerindeki her üçgenin kendi IR sensörü olduğundan ve 120 üçgen olduğundan, Arduino'dan önce bir çeşit çoğullama yapmanız gerekecektir. Kubbedeki 120 sensör için beş adet 24 kanallı çoklayıcı (MUX) kullanmaya karar verdim. Eğer aşina değilseniz, burada çoğullama hakkında bir talimat var. 24 kanallı bir MUX, beş kontrol sinyali gerektirir. Arduino'da 8-12 pinlerini seçtim, böylece port manipülasyonu yapabildim (daha fazla bilgi için Adım 10'a bakın). MUX kartlarının çıkışı, 3-7 pinleri kullanılarak okunur.
Ayrıca ses üretebilmesi için kubbeye beş MIDI çıkışı ekledim (Adım 11). Başka bir deyişle, beş kişi dome'u her biri farklı bir ses çıkararak aynı anda çalabilir. Arduino'da yalnızca bir TX pini vardır, bu nedenle beş MIDI sinyali çoğullamanın çözülmesini gerektirir. MIDI çıkışı IR sensör okumasından farklı bir zamanda üretildiği için aynı kontrol sinyallerini kullandım.
Tüm IR sensör girişleri Arduino'ya okunduktan sonra, Arduino'yu programladığınız şekilde kubbe yanabilir ve sesler çalabilir. Bu talimatın 14. Adımında birkaç örneğim var.
Adım 6: LED'leri Kubbeye Monte Etme
Kubbe çok büyük olduğundan, her üçgene bir LED yerleştirmek için LED şeridinin kesilmesi gerekiyor. Her LED, süper yapıştırıcı kullanılarak üçgene yapıştırılır. LED'in her iki tarafında, kabloların kubbeden geçmesi için taban plakasından bir delik açılır. Daha sonra LED (5V, toprak, saat, sinyal) üzerindeki her temasta bağlantı kablosunu lehimledim ve kabloları taban plakasından besledim. Bu teller, kubbe üzerindeki bir sonraki LED'e ulaşacak kadar uzun olacak şekilde kesilir. Kablolar bir sonraki LED'e çekilir ve işleme devam edilir. LED'leri, daha sonra Arduino kullanarak LED'leri adreslemek için hala mantıklı olurken, gereken kablo miktarını en aza indirecek bir konfigürasyonda bağladım. Daha küçük bir kubbe, şeridi kesme ihtiyacını ortadan kaldıracak ve lehimleme için çok zaman kazandıracaktır. Başka bir seçenek, kaydırma yazmaçlarıyla ayrı RGB LED'ler kullanmaktır.
Şeritle seri iletişim, Arduino'dan iki pin (bir veri ve saat pini) kullanılarak sağlanır. Başka bir deyişle, kubbeyi aydınlatmak için veriler, veri pininden çıkarken bir LED'den diğerine geçirilir. İşte bu Arduino forumundan değiştirilmiş örnek kod:
// Tüm kubbeyi tek rengin yoğunluğunu artırın ve azaltın
#define numLeds 120 //LED sayısı // ÇIKIŞ PİMLERİ // int saatPin = A1; // saat pinini tanımla int dataPin = A0; // veri pinini tanımla // DEĞİŞKENLER // int red[numLeds]; // LED şerit için diziyi başlat int green[numLeds]; // LED şeridi için diziyi başlat int blue[numLeds]; // LED şerit için diziyi başlat //SABİT çift ölçekA = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1}; // LED'lerin yoğunluk oranı void setup() { pinMode(clockPin, OUTPUT); pinMode(veriPin, ÇIKIŞ); memset(kırmızı, 0, numLed'ler); memset(yeşil, 0, numLed'ler); memset(mavi, 0, numLed'ler); } void updatestring(int redA[numLeds], int greenA[numLeds], int blueA[numLeds]) { for (int i = 0; i < numLeds; i++) { shiftOut(dataPin, clockPin, MSBFIRST, redA); shiftOut(dataPin, clockPin, MSBFIRST, greenA); shiftOut(dataPin, clockPin, MSBFIRST, blueA); } } void loop() { for (int p = 0; p < 20; p++) // kubbenin ışık yoğunluğunu arttırma döngüsü { double scale = scaleA[p]; gecikme(20); for (int i = 0; i < numLeds; i++) // tüm LED'ler arasında geçiş yap { red = 255 * ölçek; yeşil = 80 * ölçek; mavi = 0; } updatestring(kırmızı, yeşil, mavi); // led şeridi güncelle } }
Adım 7: Sensör Montaj Tasarımı ve Uygulaması
Kubbe için IR sensörleri kullanmaya karar verdim. Bu sensörlerin bir IR LED'i ve alıcısı vardır. Bir nesne sensörün önüne geçtiğinde, IR LED'inden gelen bir miktar IR radyasyonu alıcıya doğru yansıtılır. Bu projeye, Richardouvina'nın talimatına dayanan kendi IR sensörlerimi yaparak başladım. Tüm lehimleme çok uzun sürdü, bu yüzden eBay'den her biri dijital çıkış üreten 120 IR sensörü satın aldım. Sensörün eşiği, kart üzerinde bir potansiyometre ile ayarlanır, böylece çıkış sadece bir el o üçgene yakın olduğunda yüksek olur.
Her üçgen bir kontrplak LED taban plakasından, LED plakasının yaklaşık 2,5 cm yukarısına monte edilmiş bir yayıcı akrilik levhadan ve bir IR sensöründen oluşur. Her üçgen için sensör, kubbe üzerindeki konuma bağlı olarak beşgen veya altıgen şeklinde ince bir kontrplak levha üzerine monte edildi (yukarıdaki şekle bakın). IR sensörlerini monte etmek için IR sensör tabanına delikler açtım ve ardından toprak ve 5V pinleri tel sarma teli ve tel sarma aleti (kırmızı ve siyah teller) ile bağladım. Toprağı ve 5V'u bağladıktan sonra, kubbeden geçmek için her çıkışa (sarı), toprağa ve 5V'a uzun tel sarma teli sardım.
Altıgen veya beşgen IR sensör yuvaları daha sonra kubbeye, 3D baskılı konektörlerin hemen üzerine epoksi uygulandı, böylece kablo kubbe içinden geçebilirdi. Sensörleri konektörlerin üzerine yerleştirerek, sensörlerin hassasiyetini kontrol eden IR sensörleri üzerindeki potansiyometrelere de erişip ayarlayabildim. Bir sonraki adımda, IR sensörlerinin çıkışlarının çoklayıcılara nasıl bağlandığını ve Arduino'ya nasıl okunduğunu anlatacağım.
Adım 8: Çoğullama Sensör Çıkışı
Arduino Uno sadece 14 dijital I/O pinine ve 6 analog giriş pinine sahip olduğundan ve okunması gereken 120 sensör sinyali olduğundan, dome tüm sinyalleri okumak için çoklayıcılara ihtiyaç duyar. Her biri 24 IR sensörünü okuyan beş adet 24 kanallı çoklayıcı oluşturmayı seçtim (elektronik genel bakış şekline bakın). 24 kanallı MUX, 8 kanallı MUX devre kartı, 16 kanallı MUX devre kartı ve 2 kanallı MUX'tan oluşur. Pin başlıkları, prototip panosuna bağlanabilmeleri için her bir koparma panosuna lehimlenmiştir. Bir kablo sarma aracı kullanarak daha sonra MUX devre kartlarının toprak, 5V ve kontrol sinyali pinlerini bağladım.
24 kanallı bir MUX, Arduino'daki 8-12 pinine bağlamayı seçtiğim beş kontrol sinyali gerektirir. Beş 24 kanallı MUX'un tamamı Arduino'dan aynı kontrol sinyallerini alıyor, bu yüzden Arduino pinlerinden 24 kanallı MUX'a kablo bağladım. IR sensörlerinin dijital çıkışları, Arduino'ya seri olarak okunabilmeleri için 24 kanallı MUX'un giriş pinlerine bağlanmıştır. 120 sensör çıkışının tamamında okuma için beş ayrı pin bulunduğundan, dome'un 24 üçgenden oluşan beş ayrı bölüme ayrıldığını hayal etmek faydalı olacaktır (şekilde kubbenin renklerini kontrol edin).
Arduino port manipülasyonunu kullanarak, 8-12 pinleri tarafından çoklayıcılara gönderilen kontrol sinyallerini hızla artırabilirsiniz. Buraya çoklayıcıları çalıştırmak için bazı örnek kodlar ekledim:
int numChannel = 24;
// ÇIKIŞLAR // int s0 = 8; // MUX kontrolü 0 - PORTbD int s1 = 9; // MUX kontrolü 1 - PORTb int s2 = 10; // MUX kontrolü 2 - PORTb int s3 = 11; // MUX kontrolü 3 - PORTb int s4 = 12; // MUX kontrolü 4 - PORTb // GİRİŞLER // int m0 = 3; // MUX girişi 0 int m1 = 4; // MUX girişi 1 int m2 = 5; // MUX girişi 2 int m3 = 6; // MUX girişi 3 int m4 = 7; // MUX girişi 4 // DEĞİŞKENLER // int arr0r; // MUX0'dan dijital okuma int arr1r; // MUX1'den dijital okuma int arr2r; // MUX2'den dijital okuma int arr3r; // MUX3'ten dijital okuma int arr4r; // MUX4'ten dijital okuma void setup() { // bir kez çalıştırmak için kurulum kodunuzu buraya koyun: DDRB = B11111111; // Arduino pinlerini 8'den 13'e pinMode(s0, OUTPUT) girişleri olarak ayarlar; pinMode(s1, OUTPUT); pinMode(s2, ÇIKIŞ); pinMode(s3, ÇIKIŞ); pinMode(s4, OUTPUT); pinMode(m0, GİRİŞ); pinMode(m1, GİRİŞ); pinMode(m2, GİRİŞ); pinMode(m3, GİRİŞ); pinMode(m4, GİRİŞ); } void loop() { // tekrar tekrar çalıştırmak için ana kodunuzu buraya koyun: PORTB = B00000000; // mux low için kontrol pinlerini AYARLA for (int i = 0; i < numChannel; i++) { // IR sensörü için MUX0 - MUX4'ün dijital okuma çıkışı // IR sensörü LO ise, oyuncu üçgene dokunuyor. arr0r = dijitalOkuma(m0); // Mux 0'dan okuma, IR sensörü i arr1r = digitalRead(m1); // Mux 1'den okuma, IR sensörü i arr2r = digitalRead(m2); // Mux 2'den okuma, IR sensörü i arr3r = digitalRead(m3); // Mux 3'ten okuma, IR sensörü i arr4r = digitalRead(m4); // Mux 4'ten okuma, IR sensörü i // MUX GİRİŞLERİYLE BİR ŞEY YAPIN VEYA BURADA BİR DİZİDE DEPOLAYIN // PORTB ++; // MUX için kontrol sinyallerini artır } }
Adım 9: Akrilik ile Işığı Yaymak
LED'lerden gelen ışığı dağıtmak için şeffaf akriliği dairesel yörüngeli zımpara ile zımparaladım. Zımpara, akriliğin her iki tarafı üzerinde bir şekil-8 hareketiyle hareket ettirildi. Bu yöntemi “buzlu cam” sprey boyadan çok daha iyi buldum.
Akrilikleri zımparalayıp temizledikten sonra, LED'lerin üzerine sığacak üçgenleri kesmek için bir lazer kesici kullandım. Akrilik bir kesme aleti veya akrilik çatlamazsa bir dekupaj testeresi kullanarak akriliği kesmek mümkündür. Akrilik, yine lazer kesici ile kesilmiş 5 mm kalınlığında kontrplak dikdörtgenlerle LED'lerin üzerinde tutuldu. Bu küçük kalaslar kubbe üzerindeki payandalara yapıştırılmış ve akrilik üçgenler kalaslara epoksi uygulanmıştır.
Adım 10: MIDI Kullanarak Dome ile Müzik Yapmak
Kubbenin ses üretebilmesini istedim, bu yüzden kubbenin her alt kümesi için bir tane olmak üzere beş MIDI kanalı kurdum. İlk önce beş MIDI jakı satın almanız ve şemada gösterildiği gibi bağlamanız gerekir (daha fazla bilgi için Arduino desteğindeki bu eğiticiye bakın).
Arduino Uno'da sadece bir iletim seri pini olduğundan (pin 2 TX pini olarak etiketlenmiştir), beş MIDI jakına gönderilen sinyallerin çoklamalarını çözmeniz gerekir. Aynı kontrol sinyallerini kullandım (pin 8-12), çünkü MIDI sinyalleri, IR sensörlerinin Arduino'ya okunduğu zamandan farklı bir zamanda gönderiliyor. Bu kontrol sinyalleri, Arduino tarafından oluşturulan MIDI sinyalini hangi MIDI jakının alacağını kontrol edebilmeniz için 8 kanallı bir çoğullayıcıya gönderilir. MIDI sinyalleri, Francois Best tarafından oluşturulan müthiş MIDI sinyal kütüphanesi ile Arduino tarafından üretildi. Arduino Uno ile farklı MIDI jaklarına birden fazla MIDI çıkışı üretmek için bazı örnek kodlar:
#include // MIDI kitaplığını dahil et
#define numChannel 24 //Üçgen Başına IR Sayısı #define numSections 5 // dome'daki bölüm sayısı, 24 kanallı MUX sayısı, MIDI jak sayısı // OUTPUTS // int s0 = 8; // MUX kontrolü 0 - PORTbD int s1 = 9; // MUX kontrolü 1 - PORTb int s2 = 10; // MUX kontrolü 2 - PORTb int s3 = 11; // MUX kontrolü 3 - PORTb int s4 = 12; // MUX kontrolü 4 - PORTb // GİRİŞLER // int m0 = 3; // MUX girişi 0 int m1 = 4; // MUX girişi 1 int m2 = 5; // MUX girişi 2 int m3 = 6; // MUX girişi 3 int m4 = 7; // MUX girişi 4 // DEĞİŞKENLER // int arr0r; // MUX0'dan dijital okuma int arr1r; // MUX1'den dijital okuma int arr2r; // MUX2'den dijital okuma int arr3r; // MUX3'ten dijital okuma int arr4r; // MUX4'ten dijital okuma int midArr[numSections]; // Oyunculardan biri tarafından bir nota basılıp basılmadığını kaydet int note2play[numSections]; // Sensöre dokunulduğunda çalınacak notayı sakla int notalar[numChannel] = {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83}; int duraklamaMidi = 4000; // midi sinyalleri arasındaki süreyi duraklat MIDI_CREATE_DEFAULT_INSTANCE(); void setup() { // bir kez çalıştırmak için kurulum kodunuzu buraya yazın: DDRB = B11111111; // Arduino pinlerini 8 ila 13 giriş olarak ayarlar MIDI.begin(MIDI_CHANNEL_OFF); pinMode(s0, ÇIKIŞ); pinMode(s1, OUTPUT); pinMode(s2, ÇIKIŞ); pinMode(s3, ÇIKIŞ); pinMode(s4, OUTPUT); pinMode(m0, GİRİŞ); pinMode(m1, GİRİŞ); pinMode(m2, GİRİŞ); pinMode(m3, GİRİŞ); pinMode(m4, GİRİŞ); } void loop() { // tekrar tekrar çalıştırmak için ana kodunuzu buraya koyun: PORTB = B00000000; // mux low için kontrol pinlerini AYARLA for (int i = 0; i < numChannel; i++) { // IR sensörü için MUX0 - MUX4'ün dijital okuma çıkışı // IR sensörü LO ise, oyuncu üçgene dokunuyor. arr0r = dijitalOkuma(m0); // Mux 0'dan okuma, IR sensörü i arr1r = digitalRead(m1); // Mux 1'den okuma, IR sensörü i arr2r = digitalRead(m2); // Mux 2'den okuma, IR sensörü i arr3r = digitalRead(m3); // Mux 3'ten okuma, IR sensörü i arr4r = digitalRead(m4); // Mux 4'ten okuma, IR sensörü i if (arr0r == 0)// Bölüm 0'daki sensör engellendi { midArr[0] = 1; // Oyuncu 0 bir notaya bastı, HI'yı oyuncu 0 için MIDI çıkışı olacak şekilde ayarlayın note2play[0] = notlar; // Oyuncu 0 için oynamak için not } if (arr1r == 0)// Bölüm 1'deki sensör engellendi { midArr[1] = 1; // Oyuncu 0 bir notaya bastı, HI'yı oyuncu 0 için MIDI çıkışı olacak şekilde ayarlayın note2play[1] = notlar; // Oyuncu 0 için oynamak için not } if (arr2r == 0)// Bölüm 2'deki sensör engellendi { midArr[2] = 1; // Oyuncu 0 bir notaya bastı, HI'yı oyuncu 0 için MIDI çıkışı olacak şekilde ayarlayın note2play[2] = notlar; // Oyuncu 0 için oynamak için not } if (arr3r == 0)// Bölüm 3'teki sensör bloke edildi { midArr[3] = 1; // Oyuncu 0 bir notaya bastı, HI'yı oyuncu 0 için MIDI çıkışı olacak şekilde ayarlayın note2play[3] = notlar; // Oyuncu 0 için oynamak için not } if (arr4r == 0)// Bölüm 4'teki sensör bloke edilmiş {Arr mid[4] = 1; // Oyuncu 0 bir notaya bastı, HI'yı oyuncu 0 için MIDI çıkışı olacak şekilde ayarlayın note2play[4] = notlar; // Player 0 için oynamak için not } PORTB ++; // MUX için kontrol sinyallerini artır } updateMIDI(); } void updateMIDI() { PORTB = B00000000; // mux low için SET kontrol pinleri if (midArr[0] == 1) // Player 0 MIDI çıkışı { MIDI.sendNoteOn(note2play[0], 127, 1); gecikmeMikrosaniye(duraklatMidi); MIDI.sendNoteOff(note2play[0], 127, 1); gecikmeMikrosaniye(duraklatMidi); } PORTB++; // MUX'u artır if (midArr[1] == 1) // Oyuncu 1 MIDI çıkışı { MIDI.sendNoteOn(note2play[1], 127, 1); gecikmeMikrosaniye(duraklatMidi); MIDI.sendNoteOff(note2play[1], 127, 1); gecikmeMikrosaniye(duraklatMidi); } PORTB++; // MUX'u artır if (midArr[2] == 1) // Player 2 MIDI çıkışı { MIDI.sendNoteOn(note2play[2], 127, 1); gecikmeMikrosaniye(duraklatMidi); MIDI.sendNoteOff(note2play[2], 127, 1); gecikmeMikrosaniye(duraklatMidi); } PORTB++; // MUX'u artır if (midArr[3] == 1) // Oyuncu 3 MIDI çıkışı { MIDI.sendNoteOn(note2play[3], 127, 1); gecikmeMikrosaniye(duraklatMidi); MIDI.sendNoteOff(note2play[3], 127, 1); gecikmeMikrosaniye(duraklatMidi); } PORTB++; // MUX'u artır if (midArr[4] == 1) // Player 4 MIDI çıkışı { MIDI.sendNoteOn(note2play[4], 127, 1); gecikmeMikrosaniye(duraklatMidi); MIDI.sendNoteOff(note2play[4], 127, 1); gecikmeMikrosaniye(duraklatMidi); } midArr[0] = 0; midArr[1] = 0; midArr[2] = 0; midArr[3] = 0; midArr[4] = 0; }
Adım 11: Kubbeye Güç Verme
Kubbede güç verilmesi gereken birkaç bileşen vardır. Bu nedenle, satın almanız gereken güç kaynağını belirlemek için her bir bileşenden çekilen amperleri hesaplamanız gerekecektir.
LED şerit: 6,4 W/metre tüketen yaklaşık 3,75 metrelik Ws2801 LED şeridi kullandım. Bu, 24W'a (3.75*6.4) karşılık gelir. Bunu ampere dönüştürmek için, Güç = akım*volt (P=iV) kullanın; burada V, LED şeridinin voltajıdır, bu durumda 5V. Bu nedenle LED'lerden çekilen akım 4.8A'dır (24W/5V = 4.8A).
IR sensörleri: Her IR sensörü, 120 sensör için toplam 3A olmak üzere yaklaşık 25mA çeker.
Arduino: 100mA, 9V
Çoklayıcılar: Her biri 16 kanallı çoklayıcı ve 8 kanallı çoklayıcıdan oluşan beş 24 kanallı çoklayıcı vardır. 8 kanallı ve 16 kanallı MUX'un her biri yaklaşık 100mA tüketir. Bu nedenle, tüm MUX'lerin toplam güç tüketimi 1A'dır.
Bu bileşenleri toplayarak toplam güç tüketiminin 9A civarında olması bekleniyor. LED şerit, IR sensörleri ve çoklayıcılar 5V'da giriş voltajına ve Arduino'da 9V giriş voltajına sahiptir. Bu nedenle, 12V 15A güç kaynağı, 12V'yi 5V'a dönüştürmek için 15A dönüştürücü ve Arduino için 12V'yi 9V'a dönüştürmek için 3A dönüştürücü seçtim.
Adım 12: Dairesel Kubbe Tabanı
Kubbe, elektronik aksama kolay erişim için ortasından kesilmiş bir beşgen ile dairesel bir ahşap parçası üzerine oturmaktadır. Bu dairesel tabanı oluşturmak için, bir ahşap CNC yönlendirici kullanılarak 4x6'lık bir kontrplak levha kesildi. Bu adım için bir yapboz da kullanılabilir. Kaide kesildikten sonra kubbe, küçük 2x3” ahşap bloklar kullanılarak tutturulmuştur.
Tabanın üstüne, güç kaynağını epoksi ile ve MUX'leri ve Buck dönüştürücüleri PCB ayırıcı aralayıcılarla bağladım. Ara parçalar, E-Z Lok diş adaptörleri kullanılarak kontrplağa bağlandı.
Adım 13: Pentagon Kubbe Tabanı
Dairesel kaideye ek olarak, kubbe için altta aynalı bir pencere olan beşgen bir kaide oluşturdum. Bu taban ve görünümlü pencere de ahşap CNC router ile kesilmiş kontrplaktan yapılmıştır. Beşgenin kenarları, bir tarafında konektörlerin geçmesi için bir delik bulunan ahşap plakalardan yapılmıştır. Metal braketler ve 2x3 blok derzler kullanılarak ahşap plakalar beşgen tabana sabitlenir. Bir lazer kesici kullanarak oluşturduğum bir ön panele bir güç anahtarı, MIDI konektörleri ve USB konektörü takılı. Beşgen tabanın tamamı, Adım 12'de açıklanan dairesel tabana vidalanmıştır.
Kubbenin altına bir pencere yerleştirdim, böylece elektronik aksamı görmek için kubbeye bakabilirsiniz. Görünüm camı, lazer kesici ile kesilmiş akrilikten yapılmıştır ve dairesel bir kontrplak parçasına epoksilenmiştir.
Adım 14: Kubbeyi Programlama
Kubbeyi programlamak için sonsuz olasılık vardır. Kodun her döngüsü, birisinin dokunduğu üçgenleri gösteren IR sensörlerinden gelen sinyalleri alır. Bu bilgi ile kubbeyi herhangi bir RGB rengiyle renklendirebilir ve/veya bir MIDI sinyali üretebilirsiniz. Kubbe için yazdığım programlardan birkaç örnek:
Kubbeyi renklendirin: Dokunulduğunda her üçgen dört renk arasında geçiş yapar. Renkler değiştikçe bir arpej çalınır. Bu program ile kubbeyi binlerce farklı şekilde renklendirebilirsiniz.
Kubbe müziği: Kubbe, her biri farklı bir MIDI çıkışına karşılık gelen beş renkle renklendirilir. Programda, her üçgenin hangi notaları çalacağını seçebilirsiniz. Kubbenin tepesindeki orta C'den başlamayı ve üçgenler tabana yaklaştıkça perdeyi artırmayı seçtim. Beş çıkış olduğundan, bu program aynı anda birden fazla kişinin kubbeyi oynaması için idealdir. Bir MIDI enstrümanı veya MIDI yazılımı kullanılarak, bu MIDI sinyallerinin herhangi bir enstrüman gibi ses çıkarması sağlanabilir.
Simon: Klasik hafıza aydınlatma oyunu Simon'ın bir yorumunu yazdım. Tüm kubbe üzerinde rastgele bir ışık dizisi birer birer aydınlatılır. Her turda, oyuncu diziyi kopyalamalıdır. Oyuncu diziyle doğru şekilde eşleşirse diziye ek bir ışık eklenir. Yüksek puan, kubbenin bölümlerinden birinde saklanır. Bu oyun aynı zamanda birden fazla kişiyle oynamak çok eğlenceli.
Pong: Neden kubbede pong oynamıyorsunuz? Bir top, rakete çarpana kadar kubbe boyunca yayılır. Bunu yaptığında, raketin topa çarptığını gösteren bir MIDI sinyali üretilir. Diğer oyuncu daha sonra raketi kubbenin alt kısmı boyunca yönlendirmeli ve böylece topa geri çarpmalıdır.
Adım 15: Tamamlanan Kubbenin Fotoğrafları
Arduino Yarışması 2016'da Büyük Ödül
2016 Remix Yarışmasında İkincilik Ödülü
Make it Glow Yarışması 2016'da İkincilik Ödülü
Önerilen:
Etkileşimli LED Karo Duvar (Göründüğünden Daha Kolay): 7 Adım (Resimlerle)
Etkileşimli LED Karo Duvar (Göründüğünden Daha Kolay): Bu projede Arduino ve 3D baskılı parçalar kullanarak etkileşimli bir LED duvar ekranı oluşturdum. Bu proje için ilham kısmen Nanoleaf karolardan geldi. Sadece daha uygun fiyatlı değil, aynı zamanda daha uygun olan kendi versiyonumu bulmak istedim
Manyetik Jeodezik Planetaryum: 7 Adım (Resimlerle)
Manyetik Jeodezik Planetaryum: Herkese merhaba! Mıknatıslar ve işçilik telleriyle tutturulmuş jeodezik bir planetaryum yaratma sürecimde size yol göstermek istiyorum! Bu mıknatısların kullanılmasının nedeni, yağmurlu veya ideal hava koşullarından daha az olan zamanlarda kolayca çıkarılabilmesi içindir. Bu şekilde y
Autodesk Inventor'da Temcor Tarzı Jeodezik Kubbe Nasıl Oluşturulur: 8 Adım
Autodesk Inventor'da Temcor Tarzı Jeodezik Kubbe Nasıl Oluşturulur: Bu eğitim size sadece biraz matematik kullanarak Temcor tarzı bir kubbenin nasıl oluşturulacağını gösterecektir. Bu eğitimdeki bilgilerin çoğu, TaffGoch'un eski Amundsen-Scott Güney Kutbu İstasyonu'nun alt bölme yöntemi, s
DIY LED Kubbe Işık (9-15-09 güncellendi): 10 Adım
DIY LED Kubbe Işığı (9-15-09 güncellendi): Küçük Honda Del Sol'umun daha parlak bir kubbe ışığına ihtiyacı vardı. Normal ampulden üretilmiş bir LED değişimine, sonunda okuyabildiğim yüksek parlaklıkta bir ampule geçtim
Kağıttan (ve Çelikve Çimento) Kubbe İnşası: 6 Adım (Resimlerle)
Kağıttan Kubbe İnşa Etme (ve Çelik…ve Çimento…): Kız arkadaşım (Wendy Tremayne) ve ben güney New Mexico'ya geldiğimizde yaptığımız ilk şeylerden biri yerel bir inşaat malzemesi aramaktı. Kilin kazılması ve çekilmesi gerekecekti, saman balyası zaten pahalıydı ve yerel değildi, dostum