Daftar Isi:

Kubah LED Geodesik Interaktif: 15 Langkah (dengan Gambar)
Kubah LED Geodesik Interaktif: 15 Langkah (dengan Gambar)

Video: Kubah LED Geodesik Interaktif: 15 Langkah (dengan Gambar)

Video: Kubah LED Geodesik Interaktif: 15 Langkah (dengan Gambar)
Video: Fakta Unik Tentang Mumi #shorts #mumi #mesirkuno 2024, Juli
Anonim
Image
Image
Kubah LED Geodesik Intera-t.webp
Kubah LED Geodesik Intera-t.webp
Kubah LED Geodesik Intera-t.webp
Kubah LED Geodesik Intera-t.webp
Kubah LED Geodesik Intera-t.webp
Kubah LED Geodesik Intera-t.webp

Saya membangun kubah geodesik yang terdiri dari 120 segitiga dengan LED dan sensor di setiap segitiga. Setiap LED dapat ditangani secara individual dan setiap sensor disetel khusus untuk segitiga tunggal. Kubah diprogram dengan Arduino untuk menyala dan menghasilkan sinyal MIDI tergantung pada segitiga mana Anda meletakkan tangan Anda.

Saya mendesain kubahnya menjadi tampilan menyenangkan yang membuat orang tertarik pada cahaya, elektronik, dan suara. Karena kubah terbagi dengan baik menjadi lima bagian, saya merancang kubah untuk memiliki lima keluaran MIDI terpisah yang masing-masing dapat memiliki suara yang berbeda. Hal ini menjadikan kubah sebagai alat musik raksasa, ideal untuk memainkan musik dengan banyak orang secara bersamaan. Selain bermain musik, saya juga memprogram dome untuk pertunjukan cahaya dan memainkan rendition Simon dan Pong. Struktur akhir berdiameter sedikit lebih dari satu meter dan tinggi 70 cm, dan terutama dibangun dengan kayu, akrilik, dan bagian cetakan 3D.

Ada beberapa Instructables hebat pada tabel dan kubus LED yang mengilhami saya untuk memulai proyek ini. Namun, saya ingin mencoba mengatur LED dalam geometri yang berbeda. Saya tidak dapat memikirkan struktur proyek yang lebih baik daripada kubah geodesik, yang juga didokumentasikan dengan baik di Instructables. Jadi proyek ini adalah remix/mashup dari tabel LED dan kubah geodesik. Di bawah ini adalah tautan ke tabel LED dan instruksi kubah geodesik yang saya periksa di awal proyek.

Meja dan kubus LED:

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-…

Kubah geodesik:

www.instructables.com/id/Folding-Geodesic-D…

www.instructables.com/id/Geodesic-dome-kit/

Langkah 1: Daftar Pasokan

Daftar Pasokan
Daftar Pasokan
Daftar Pasokan
Daftar Pasokan
Daftar Pasokan
Daftar Pasokan

Bahan:

1. Kayu untuk penyangga kubah dan dasar kubah (jumlah tergantung jenis dan ukuran kubah)

2. Strip LED beralamat (16,4ft/5m Beralamat Warna LED Pixel Strip 160leds Ws2801 Dc5v)

3. Arduino Uno (Atmega328 - dirakit)

4. Papan prototipe (Prototipe PCB Dua Sisi Penta Angel Universal (7x9cm))

5. Akrilik untuk menyebarkan LED (Cast Acrylic Sheet, Clear, Ukuran 12" x 12" x 0,118")

6. Catu daya (Aiposen 110/220V ke DC12V 30A 360W Switch Power Supply Driver)

7. Konverter Buck untuk Arduino (RioRand LM2596 DC-DC Konverter Buck 1.23V-30V)

8. Konverter buck untuk LED dan sensor (DROK Mini Electric Buck Voltage Converter 15A)

9. 120 sensor IR (Modul Sensor Penghindaran Rintangan Inframerah)

10. Lima 16 channel multiplexer (Analog/Digital MUX Breakout - CD74HC4067)

11. Enam 8 channel multiplexer (Multiplexer Breakout - 8 Channel (74HC4051))

12. Lima multiplexer 2 saluran (MAX4544CPA+)

13. Kawat pembungkus kawat (PCB Solder 0.25mm Kabel Tembaga Berlapis Timah Dia Kawat Pembungkus Kawat 305M 30AWG Merah)

14. Kawat pengait (Inti Padat, 22 AWG)

15. Pin Header (Gikfun 1 x 40 Pin 2.54mm Single Row Breakaway Male Pin Header)

16. Lima jack MIDI (Jack MIDI yang cocok untuk papan tempat memotong roti (DIN 5-pin))

17. Sepuluh resistor 220ohm untuk jack MIDI

18. Spacer stand-off untuk memasang elektronik ke kubah (Stand-off Spacer Hex M3 Pria x M3 Wanita)

19. Adaptor ulir untuk menyambungkan penyangga ke kayu (E-Z Lok Threaded Insert, Brass, Knife Thread)

20. Epoxy atau Gorilla Superglue

21. Pita listrik

22. Solder

Peralatan:

1. Stasiun Solder

2. Bor listrik

3. Gergaji bundar

4. Pengamplas orbital

5. Gergaji Jig

6. Mata gergaji

7. Busur derajat

8. pencetak 3D

9. Pemotong kawat

10. Alat pembungkus kawat

11. Pemotong laser untuk memotong pelat LED (opsional)

12. Shopbot CNC untuk dasar kubah (opsional)

Langkah 2: Mendesain Kubah Geodesik

Merancang Kubah Geodesik
Merancang Kubah Geodesik
Merancang Kubah Geodesik
Merancang Kubah Geodesik

Seperti yang saya sebutkan di intro, ada beberapa sumber online untuk membangun kubah geodesik Anda sendiri. Situs-situs ini menyediakan kalkulator kubah yang menentukan panjang setiap sisi (yaitu penyangga) dan jumlah konektor yang diperlukan untuk jenis kubah apa pun yang ingin Anda buat. Kompleksitas kubah geodesik (yaitu kepadatan segitiga) ditentukan oleh kelasnya (1V, 2V, 3V, dan seterusnya), dengan kompleksitas yang lebih tinggi menjadi pendekatan yang lebih baik dari permukaan bola yang sempurna. Untuk membangun kubah Anda sendiri, Anda harus terlebih dahulu memilih diameter dan kelas kubah.

Saya menggunakan situs bernama Domerama untuk membantu saya mendesain kubah 4V yang dipotong menjadi 5/12 bola dengan radius 40cm. Untuk jenis kubah ini, ada enam struts panjang yang berbeda:

30 X “A” - 8.9cm

30 X "B" - 10.4cm

50 X "C" - 12.4cm

40 X "D" - 12,5cm

20 X "E" - 13,0cm

20 X "F" - 13.2cm

Itu adalah total 190 struts yang menambahkan hingga 2223cm (73 kaki) material. Saya menggunakan kayu pinus 1x3 (3/4" × 2-1/2") untuk penyangga di kubah ini. Untuk menghubungkan struts, saya merancang dan konektor cetak 3D menggunakan Autocad. File STL tersedia untuk diunduh di akhir langkah ini. Jumlah konektor untuk kubah 4V 5/12 adalah:

20 X 4-konektor

6 X 5-konektor

45 X 6-konektor

Pada langkah berikutnya, saya menjelaskan bagaimana kubah ini dibangun dengan penyangga kayu dan konektor cetak 3D yang saya rancang.

Langkah 3: Membangun Dome Dengan Struts dan Konektor

Membangun Dome Dengan Struts dan Konektor
Membangun Dome Dengan Struts dan Konektor
Membangun Dome Dengan Struts dan Konektor
Membangun Dome Dengan Struts dan Konektor
Membangun Dome Dengan Struts dan Konektor
Membangun Dome Dengan Struts dan Konektor
Membangun Dome Dengan Struts dan Konektor
Membangun Dome Dengan Struts dan Konektor

Menggunakan perhitungan dari Domerama untuk kubah 4V 5/12, saya memotong struts menggunakan gergaji bundar. 190 strut diberi label dan ditempatkan dalam kotak setelah dipotong. 71 konektor (20 empat konektor, 6 lima konektor, dan 45 enam konektor) dicetak 3D menggunakan Makerbot. Penopang kayu dimasukkan ke dalam konektor sesuai dengan diagram yang dibuat oleh Domerama. Saya memulai konstruksi dari atas dan bergerak secara radial ke luar.

Setelah semua struts terhubung, saya melepas strut satu per satu dan menambahkan epoksi ke kayu dan konektor. Konektor dirancang untuk memiliki fleksibilitas dalam cara menghubungkan struktur, jadi penting untuk memeriksa simetri kubah sebelum menambahkan epoksi apa pun.

Langkah 4: Pemotongan Laser dan Pemasangan Pelat Dasar

Pemotongan Laser dan Pemasangan Pelat Dasar
Pemotongan Laser dan Pemasangan Pelat Dasar
Pemotongan Laser dan Pemasangan Pelat Dasar
Pemotongan Laser dan Pemasangan Pelat Dasar
Pemotongan Laser dan Pemasangan Pelat Dasar
Pemotongan Laser dan Pemasangan Pelat Dasar
Pemotongan Laser dan Pemasangan Pelat Dasar
Pemotongan Laser dan Pemasangan Pelat Dasar

Sekarang kerangka kubah dibangun, sekarang saatnya untuk memotong pelat dasar segitiga. Pelat dasar ini melekat pada bagian bawah struts, dan digunakan untuk memasang LED ke kubah. Awalnya saya memotong pelat dasar dari kayu lapis setebal 5mm (3/16”) dengan mengukur lima segitiga berbeda yang ada di kubah: AAB (30 segitiga), BCC (25 segitiga), DDE (20 segitiga), CDF (40 segitiga),), dan EEE (5 segitiga). Dimensi setiap sisi dan bentuk segitiga ditentukan menggunakan kalkulator kubah (Domerama) dan beberapa geometri. Setelah memotong pelat dasar uji dengan gergaji ukir, saya menggambar desain segitiga menggunakan Coral Draw, dan memotong pelat dasar yang tersisa dengan pemotong laser (jauh lebih cepat!). Jika Anda tidak memiliki akses ke pemotong laser, Anda dapat menggambar pelat dasar ke kayu lapis menggunakan penggaris dan busur derajat dan memotong semuanya dengan gergaji ukir. Setelah pelat dasar dipotong, kubah dibalik dan pelat direkatkan ke kubah menggunakan lem kayu.

Langkah 5: Tinjauan Elektronik

Ikhtisar Elektronik
Ikhtisar Elektronik

Ditunjukkan pada gambar di atas adalah skema elektronik untuk kubah. Arduino Uno digunakan untuk menulis dan membaca sinyal untuk kubah. Untuk menerangi kubah, strip LED RGB dijalankan di atas kubah sehingga LED diposisikan pada masing-masing dari 120 segitiga. Untuk informasi tentang cara kerja strip LED, lihat instruksi ini. Setiap LED dapat dialamatkan secara terpisah menggunakan Arduino, yang menghasilkan data serial dan sinyal clock untuk strip (lihat pin A0 dan A1 dalam skema). Dengan strip dan dua sinyal ini saja, Anda dapat memiliki kubah menyala yang mengagumkan. Ada cara lain untuk menulis sinyal untuk banyak LED dari Arduino, seperti Charlieplexing dan register geser.

Untuk berinteraksi dengan kubah, saya memasang sensor IR di atas setiap LED. Sensor ini digunakan untuk mendeteksi ketika tangan seseorang berada dekat dengan segitiga di kubah. Karena setiap segitiga di kubah memiliki sensor IR sendiri dan ada 120 segitiga, Anda harus melakukan semacam multiplexing sebelum Arduino. Saya memutuskan untuk menggunakan lima multiplexer 24-channel (MUX) untuk 120 sensor pada kubah. Berikut adalah instruksi tentang multiplexing, jika Anda tidak terbiasa. MUX 24 saluran membutuhkan lima sinyal kontrol. Saya memilih pin 8-12 di Arduino, jadi saya bisa melakukan manipulasi port (lihat Langkah 10 untuk informasi lebih lanjut). Keluaran papan MUX dibaca menggunakan pin 3-7.

Saya juga menyertakan lima output MIDI pada dome sehingga dapat menghasilkan suara (Langkah 11). Dengan kata lain, lima orang dapat memainkan dome secara bersamaan dengan setiap output memainkan suara yang berbeda. Hanya ada satu pin TX di Arduino, jadi lima sinyal MIDI memerlukan demultiplexing. Karena output MIDI dihasilkan pada waktu yang berbeda dari pembacaan sensor IR, saya menggunakan sinyal kontrol yang sama.

Setelah semua input sensor IR dibaca ke Arduino, kubah dapat menyala dan memutar suara bagaimanapun Anda memprogram Arduino. Saya memiliki beberapa contoh di Langkah 14 dari instruksi ini.

Langkah 6: Memasang LED Ke Dome

Memasang LED Ke Dome
Memasang LED Ke Dome
Memasang LED Ke Dome
Memasang LED Ke Dome
Memasang LED Ke Dome
Memasang LED Ke Dome

Karena kubahnya sangat besar, strip LED perlu dipotong untuk menempatkan satu LED di setiap segitiga. Setiap LED direkatkan pada segitiga menggunakan lem super. Di kedua sisi LED, sebuah lubang dibor melalui pelat dasar untuk kabel yang akan dijalankan melalui kubah. Saya kemudian menyolder kabel hook-up pada setiap kontak pada LED (5V, ground, clock, sinyal) dan memberi makan kabel melalui baseplate. Kabel ini dipotong sehingga cukup panjang untuk mencapai LED berikutnya pada kubah. Kabel ditarik ke LED berikutnya, dan proses dilanjutkan. Saya menghubungkan LED dalam konfigurasi yang akan meminimalkan jumlah kabel yang diperlukan sambil tetap masuk akal untuk menangani LED menggunakan Arduino nanti. Kubah yang lebih kecil akan menghilangkan kebutuhan untuk memotong strip dan menghemat banyak waktu menyolder. Pilihan lainnya adalah menggunakan LED RGB terpisah dengan register geser.

Komunikasi serial ke strip dicapai dengan menggunakan dua pin (data dan pin jam) dari Arduino. Dengan kata lain, data untuk menerangi kubah dilewatkan dari satu LED ke LED berikutnya saat meninggalkan pin data. Berikut adalah contoh kode yang dimodifikasi dari forum Arduino ini:

// Buat seluruh kubah bertambah dan berkurang intensitas warna tunggal

#define numLeds 120 //Jumlah LED // OUTPUT PINS // int clockPin = A1; // tentukan pin jam int dataPin = A0; // tentukan pin data // VARIABEL // int merah[jumlahLeds]; // Inisialisasi array untuk strip LED int green[numLeds]; // Inisialisasi array untuk strip LED int blue[numLeds]; // Inisialisasi array untuk strip LED //Skala ganda CONSTANTA = {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}; // fraksi intensitas LED void setup() { pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); memset(merah, 0, numLeds); memset(hijau, 0, numLeds); memset(biru, 0, numLeds); } 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++) // loop untuk meningkatkan intensitas cahaya kubah { double scale = scaleA[p]; penundaan (20); for (int i = 0; i < numLeds; i++) // putar semua LED { red = 255 * scale; hijau = 80 * skala; biru = 0; } updatestring(merah, hijau, biru); // perbarui strip led } }

Langkah 7: Desain dan Implementasi Pemasangan Sensor

Desain dan Implementasi Pemasangan Sensor
Desain dan Implementasi Pemasangan Sensor
Desain dan Implementasi Pemasangan Sensor
Desain dan Implementasi Pemasangan Sensor
Desain dan Implementasi Pemasangan Sensor
Desain dan Implementasi Pemasangan Sensor

Saya memutuskan untuk menggunakan sensor IR untuk kubah. Sensor ini memiliki LED IR dan penerima. Ketika sebuah objek berada di depan sensor, beberapa radiasi IR dari LED IR dipantulkan ke penerima. Saya memulai proyek ini dengan membuat sensor IR saya sendiri, yang didasarkan pada instruksi Richardouvina. Semua penyolderan memakan waktu terlalu lama, jadi saya membeli 120 sensor IR dari eBay yang masing-masing menghasilkan keluaran digital. Ambang batas sensor diatur dengan potensiometer di papan sehingga outputnya tinggi hanya ketika tangan berada di dekat segitiga itu.

Setiap segitiga terdiri dari pelat dasar LED kayu lapis, lembaran akrilik difusif yang dipasang sekitar 2,5 cm di atas pelat LED, dan sensor IR. Sensor untuk setiap segitiga dipasang pada selembar kayu lapis tipis berbentuk segi lima atau segi enam tergantung pada posisi kubah (lihat gambar di atas). Saya mengebor lubang ke dasar sensor IR untuk memasang sensor IR, dan kemudian menghubungkan ground dan pin 5V dengan kawat pembungkus kawat dan alat pembungkus kawat (kabel merah dan hitam). Setelah menghubungkan ground dan 5V, saya membungkus kawat pembungkus panjang pada setiap output (kuning), ground, dan 5V untuk mengalir melalui kubah.

Dudukan sensor IR segi enam atau segi lima kemudian di-epoksi ke kubah, tepat di atas konektor cetak 3D, sehingga kabel dapat menembus kubah. Dengan memiliki sensor di atas konektor, saya juga dapat mengakses dan menyesuaikan potensiometer pada sensor IR yang mengontrol sensitivitas sensor. Pada langkah selanjutnya, saya akan menjelaskan bagaimana output dari sensor IR terhubung ke multiplexer dan dibaca ke Arduino.

Langkah 8: Output Sensor Multiplexing

Output Sensor Multipleks
Output Sensor Multipleks
Output Sensor Multipleks
Output Sensor Multipleks
Output Sensor Multiplexing
Output Sensor Multiplexing

Karena Arduino Uno hanya memiliki 14 pin I/O digital dan 6 pin input analog serta terdapat 120 sinyal sensor yang harus dibaca, maka dome membutuhkan multiplexer untuk membaca semua sinyal. Saya memilih untuk membangun lima multiplexer 24-channel, yang masing-masing membaca 24 sensor IR (lihat gambar ikhtisar elektronik). MUX 24 saluran terdiri dari papan breakout MUX 8 saluran, papan pelarian MUX 16 saluran, dan MUX 2 saluran. Header pin disolder ke setiap papan breakout sehingga dapat dihubungkan ke papan prototipe. Menggunakan alat pembungkus kawat, saya kemudian menghubungkan ground, 5V, dan pin sinyal kontrol dari papan breakout MUX.

MUX 24-channel membutuhkan lima sinyal kontrol, yang saya pilih untuk dihubungkan ke pin 8-12 di Arduino. Kelima MUX 24-channel menerima sinyal kontrol yang sama dari Arduino jadi saya menghubungkan kabel dari pin Arduino ke MUX 24-channel. Output digital dari sensor IR dihubungkan ke pin input MUX 24-channel sehingga dapat dibaca secara serial ke Arduino. Karena ada lima pin terpisah untuk membaca di semua 120 keluaran sensor, akan sangat membantu untuk membayangkan kubah dipecah menjadi lima bagian terpisah yang terdiri dari 24 segitiga (periksa warna kubah pada gambar).

Menggunakan manipulasi port Arduino, Anda dapat dengan cepat meningkatkan sinyal kontrol yang dikirim oleh pin 8-12 ke multiplexer. Saya telah melampirkan beberapa contoh kode untuk mengoperasikan multiplexer di sini:

int jumlahSaluran = 24;

// KELUARAN // int s0 = 8; // kontrol MUX 0 - PORTbD int s1 = 9; // kontrol MUX 1 - PORTb int s2 = 10; // kontrol MUX 2 - PORTb int s3 = 11; // kontrol MUX 3 - PORTb int s4 = 12; // kontrol MUX 4 - PORTb // INPUT // int m0 = 3; // masukan MUX 0 int m1 = 4; // masukan MUX 1 int m2 = 5; // masukan MUX 2 int m3 = 6; // masukan MUX 3 int m4 = 7; // masukan MUX 4 // VARIABEL // int arr0r; // pembacaan digital dari MUX0 int arr1r; // pembacaan digital dari MUX1 int arr2r; // pembacaan digital dari MUX2 int arr3r; // pembacaan digital dari MUX3 int arr4r; // pembacaan digital dari MUX4 void setup() { // letakkan kode setup Anda di sini, untuk dijalankan sekali: DDRB = B111111111; // menetapkan pin Arduino 8 hingga 13 sebagai input pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(s4, OUTPUT); pinMode(m0, INPUT); pinMode(m1, INPUT); pinMode(m2, INPUT); pinMode(m3, INPUT); pinMode(m4, INPUT); } void loop() { // letakkan kode utama Anda di sini, untuk dijalankan berulang kali: PORTB = B00000000; // SET pin kontrol untuk mux low for (int i = 0; i < numChannel; i++) { // Output pembacaan digital MUX0 - MUX4 untuk sensor IR i // Jika sensor IR adalah LO, segitiga sedang disentuh oleh pemain. arr0r = digitalRead(m0); // membaca dari Mux 0, sensor IR i arr1r = digitalRead(m1); // membaca dari Mux 1, sensor IR i arr2r = digitalRead(m2); // membaca dari Mux 2, sensor IR i arr3r = digitalRead(m3); // membaca dari Mux 3, sensor IR i arr4r = digitalRead(m4); // membaca dari Mux 4, sensor IR i // MELAKUKAN SESUATU DENGAN INPUT MUX ATAU MENYIMPAN DALAM ARRAY DI SINI // PORTB ++; // menambah sinyal kontrol untuk MUX } }

Langkah 9: Menyebarkan Cahaya Dengan Akrilik

Menyebarkan Cahaya Dengan Akrilik
Menyebarkan Cahaya Dengan Akrilik
Menyebarkan Cahaya Dengan Akrilik
Menyebarkan Cahaya Dengan Akrilik
Menyebarkan Cahaya Dengan Akrilik
Menyebarkan Cahaya Dengan Akrilik

Untuk menyebarkan cahaya dari LED, saya mengampelas akrilik transparan dengan orbital sander melingkar. Sander dipindahkan ke kedua sisi akrilik dengan gerakan angka-8. Saya menemukan metode ini jauh lebih baik daripada cat semprot "kaca buram".

Setelah mengampelas dan membersihkan akrilik, saya menggunakan pemotong laser untuk memotong segitiga agar pas di atas LED. Hal ini dimungkinkan untuk memotong akrilik menggunakan alat pemotong akrilik atau bahkan jigsaw jika akrilik tidak retak. Akrilik dipegang di atas LED dengan persegi panjang kayu lapis setebal 5mm yang juga dipotong dengan pemotong laser. Papan kecil ini direkatkan ke penyangga di kubah, dan segitiga akrilik diepoksi ke papan.

Langkah 10: Membuat Musik Dengan Dome Menggunakan MIDI

Membuat Musik Dengan Dome Menggunakan MIDI
Membuat Musik Dengan Dome Menggunakan MIDI
Membuat Musik Dengan Dome Menggunakan MIDI
Membuat Musik Dengan Dome Menggunakan MIDI
Membuat Musik Dengan Dome Menggunakan MIDI
Membuat Musik Dengan Dome Menggunakan MIDI

Saya ingin kubahnya mampu menghasilkan suara, jadi saya menyiapkan lima saluran MIDI, satu untuk setiap subset kubah. Anda harus terlebih dahulu membeli lima jack MIDI dan menghubungkannya seperti yang ditunjukkan pada skema (lihat tutorial ini dari dukungan Arduino untuk info lebih lanjut).

Karena hanya ada satu pin serial transmisi pada Arduino Uno (pin 2 diberi label sebagai pin TX), Anda perlu melakukan demultipleks sinyal yang dikirim ke lima jack MIDI. Saya menggunakan sinyal kontrol yang sama (pin 8-12), karena sinyal MIDI dikirim pada waktu yang berbeda dari saat sensor IR sedang dibaca ke Arduino. Sinyal kontrol ini dikirim ke demultiplexer 8 saluran sehingga Anda mengontrol jack MIDI mana yang menerima sinyal MIDI yang dibuat oleh Arduino. Sinyal MIDI dihasilkan oleh Arduino dengan perpustakaan sinyal MIDI hebat yang dibuat oleh Francois Best. Berikut adalah beberapa contoh kode untuk menghasilkan beberapa output MIDI ke jack MIDI yang berbeda dengan Arduino Uno:

#include // sertakan perpustakaan MIDI

#define numChannel 24 //Jumlah IR per Segitiga #define numSections 5 // jumlah bagian dalam kubah, jumlah 24channel MUX, jumlah jack MIDI // OUTPUT // int s0 = 8; // kontrol MUX 0 - PORTbD int s1 = 9; // kontrol MUX 1 - PORTb int s2 = 10; // kontrol MUX 2 - PORTb int s3 = 11; // kontrol MUX 3 - PORTb int s4 = 12; // kontrol MUX 4 - PORTb // INPUT // int m0 = 3; // masukan MUX 0 int m1 = 4; // masukan MUX 1 int m2 = 5; // masukan MUX 2 int m3 = 6; // masukan MUX 3 int m4 = 7; // masukan MUX 4 // VARIABEL // int arr0r; // pembacaan digital dari MUX0 int arr1r; // pembacaan digital dari MUX1 int arr2r; // pembacaan digital dari MUX2 int arr3r; // pembacaan digital dari MUX3 int arr4r; // pembacaan digital dari MUX4 int midArr[numSections]; // Menyimpan apakah sebuah not telah ditekan atau tidak oleh salah satu pemain int note2play[numSections]; // Menyimpan not yang akan dimainkan jika sensor disentuh int notes[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 jedaMidi = 4000; // jeda waktu antara sinyal midi MIDI_CREATE_DEFAULT_INSTANCE(); void setup() { // letakkan kode setup Anda di sini, untuk dijalankan sekali: DDRB = B111111111; // menetapkan pin Arduino 8 hingga 13 sebagai input MIDI.begin(MIDI_CHANNEL_OFF); pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(s4, OUTPUT); pinMode(m0, INPUT); pinMode(m1, INPUT); pinMode(m2, INPUT); pinMode(m3, INPUT); pinMode(m4, INPUT); } void loop() { // letakkan kode utama Anda di sini, untuk dijalankan berulang kali: PORTB = B00000000; // SET pin kontrol untuk mux low for (int i = 0; i < numChannel; i++) { // Output pembacaan digital MUX0 - MUX4 untuk sensor IR i // Jika sensor IR adalah LO, segitiga sedang disentuh oleh pemain. arr0r = digitalRead(m0); // membaca dari Mux 0, sensor IR i arr1r = digitalRead(m1); // membaca dari Mux 1, sensor IR i arr2r = digitalRead(m2); // membaca dari Mux 2, sensor IR i arr3r = digitalRead(m3); // membaca dari Mux 3, sensor IR i arr4r = digitalRead(m4); // membaca dari Mux 4, sensor IR i if (arr0r == 0)// Sensor pada bagian 0 diblokir { midArr[0] = 1; // Player 0 telah mencapai sebuah not, set HI sehingga ada output MIDI untuk player 0 note2play[0] = notes; // Catatan untuk dimainkan untuk Player 0 } jika (arr1r == 0)// Sensor pada bagian 1 diblokir { midArr[1] = 1; // Player 0 telah mencapai sebuah not, set HI sehingga ada output MIDI untuk player 0 note2play[1] = notes; // Catatan untuk dimainkan untuk Pemain 0 } jika (arr2r == 0)// Sensor pada bagian 2 diblokir { midArr[2] = 1; // Player 0 telah mencapai sebuah not, set HI sehingga ada output MIDI untuk player 0 note2play[2] = notes; // Catatan untuk dimainkan untuk Pemain 0 } jika (arr3r == 0)// Sensor pada bagian 3 diblokir { midArr[3] = 1; // Player 0 telah mencapai sebuah not, set HI sehingga terdapat output MIDI untuk player 0 note2play[3] = notes; // Catatan untuk dimainkan untuk Pemain 0 } jika (arr4r == 0)// Sensor pada bagian 4 diblokir { midArr[4] = 1; // Player 0 telah mencapai sebuah not, set HI sehingga ada output MIDI untuk player 0 note2play[4] = notes; // Catatan untuk dimainkan untuk Pemain 0 } PORTB ++; // menambah sinyal kontrol untuk MUX } updateMIDI(); } batal updateMIDI() { PORTB = B00000000; // SET pin kontrol untuk mux low if (midArr[0] == 1) // Player 0 MIDI output { MIDI.sendNoteOn(note2play[0], 127, 1); delayMicroseconds(jedaMidi); MIDI.sendNoteOff(note2play[0], 127, 1); delayMicroseconds(jedaMidi); } PORTB++; // menambah MUX if (midArr[1] == 1) // Pemain 1 keluaran MIDI { MIDI.sendNoteOn(note2play[1], 127, 1); delayMicroseconds(jedaMidi); MIDI.sendNoteOff(note2play[1], 127, 1); delayMicroseconds(jedaMidi); } PORTB++; // menambah MUX if (midArr[2] == 1) // Pemain 2 keluaran MIDI { MIDI.sendNoteOn(note2play[2], 127, 1); delayMicroseconds(jedaMidi); MIDI.sendNoteOff(note2play[2], 127, 1); delayMicroseconds(jedaMidi); } PORTB++; // menambah MUX if (midArr[3] == 1) // Pemain 3 keluaran MIDI { MIDI.sendNoteOn(note2play[3], 127, 1); delayMicroseconds(jedaMidi); MIDI.sendNoteOff(note2play[3], 127, 1); delayMicroseconds(jedaMidi); } PORTB++; // menambah MUX if (midArr[4] == 1) // Pemain 4 keluaran MIDI { MIDI.sendNoteOn(note2play[4], 127, 1); delayMicroseconds(jedaMidi); MIDI.sendNoteOff(note2play[4], 127, 1); delayMicroseconds(jedaMidi); } midArr[0] = 0; midArr[1] = 0; midArr[2] = 0; midArr[3] = 0; midArr[4] = 0; }

Langkah 11: Menghidupkan Dome

Menghidupkan Dome
Menghidupkan Dome
Menghidupkan Dome
Menghidupkan Dome
Menghidupkan Dome
Menghidupkan Dome
Menghidupkan Dome
Menghidupkan Dome

Ada beberapa komponen yang perlu diberi daya di kubah. Oleh karena itu, Anda perlu menghitung ampli yang diambil dari setiap komponen untuk menentukan catu daya yang perlu Anda beli.

Strip LED: Saya menggunakan strip LED Ws2801 sekitar 3,75 meter, yang menggunakan 6,4W/meter. Ini sesuai dengan 24W (3,75*6.4). Untuk mengubahnya menjadi amp, gunakan Daya = arus*volt (P=iV), di mana V adalah tegangan strip LED, dalam hal ini 5V. Oleh karena itu, arus yang diambil dari LED adalah 4,8A (24W/5V = 4,8A).

Sensor IR: Setiap sensor IR menarik sekitar 25mA, dengan total 3A untuk 120 sensor.

Arduino: 100mA, 9V

Multiplexer: Ada lima multiplexer 24 saluran yang masing-masing terdiri dari multiplexer 16 saluran dan multiplekser 8 saluran. 8 saluran dan 16 saluran MUX masing-masing mengkonsumsi sekitar 100mA. Oleh karena itu, konsumsi daya total semua MUX adalah 1A.

Menambahkan komponen ini, konsumsi daya total diperkirakan sekitar 9A. Strip LED, sensor IR, dan multiplexer memiliki tegangan input 5V, dan Arduino memiliki tegangan input 9V. Oleh karena itu, saya memilih catu daya 12V 15A, konverter buck 15A untuk mengubah 12V ke 5V, dan konverter buck 3A untuk mengubah 12V ke 9V untuk Arduino.

Langkah 12: Basis Kubah Melingkar

Basis Kubah Melingkar
Basis Kubah Melingkar
Basis Kubah Melingkar
Basis Kubah Melingkar
Basis Kubah Melingkar
Basis Kubah Melingkar

Kubah bersandar pada sepotong kayu melingkar dengan potongan segi lima di tengah untuk memudahkan akses ke elektronik. Untuk membuat alas melingkar ini, selembar kayu lapis berukuran 4x6’ dipotong menggunakan router CNC kayu. Jigsaw juga bisa digunakan untuk langkah ini. Setelah alasnya dipotong, kubah itu dipasang di atasnya menggunakan balok kayu kecil berukuran 2x3”.

Di atas alas, saya memasang catu daya dengan epoksi dan konverter MUX dan Buck dengan spacer stand-off PCB. Spacer dipasang ke kayu lapis menggunakan adaptor ulir E-Z Lok.

Langkah 13: Pangkalan Kubah Pentagon

Pangkalan Kubah Pentagon
Pangkalan Kubah Pentagon
Pangkalan Kubah Pentagon
Pangkalan Kubah Pentagon
Pangkalan Kubah Pentagon
Pangkalan Kubah Pentagon

Selain alas melingkar, saya juga membuat alas segi lima untuk kubah dengan jendela kaca di bagian bawah. Basis dan jendela tampak ini juga terbuat dari kayu lapis yang dipotong dengan router CNC kayu. Sisi segi lima terbuat dari papan kayu dengan satu sisi memiliki lubang di dalamnya untuk dilewati konektor. Menggunakan braket logam dan sambungan balok 2x3, papan kayu dipasang ke dasar segi lima. Sakelar daya, konektor MIDI, dan konektor USB terpasang ke panel depan yang saya buat menggunakan pemotong laser. Seluruh dasar pentagon disekrup ke dasar melingkar yang dijelaskan pada Langkah 12.

Saya memasang jendela ke bagian bawah kubah sehingga siapa pun dapat melihat ke dalam kubah untuk melihat elektronik. Kaca yang tampak terbuat dari potongan akrilik dengan pemotong laser dan diepoksi menjadi sepotong kayu lapis melingkar.

Langkah 14: Memprogram Dome

Ada kemungkinan tak terbatas untuk memprogram kubah. Setiap siklus kode mengambil sinyal dari sensor IR, yang menunjukkan segitiga yang telah disentuh oleh seseorang. Dengan informasi ini Anda dapat mewarnai kubah dengan warna RGB dan/atau menghasilkan sinyal MIDI. Berikut adalah beberapa contoh program yang saya tulis untuk kubah:

Warnai kubah: Setiap segitiga berputar melalui empat warna saat disentuh. Saat warna berubah, arpeggio dimainkan. Dengan program ini, Anda dapat mewarnai kubah dengan ribuan cara berbeda.

Musik kubah: Kubah diwarnai dengan lima warna, setiap bagian sesuai dengan output MIDI yang berbeda. Dalam program ini, Anda dapat memilih nada mana yang dimainkan setiap segitiga. Saya memilih untuk memulai di C tengah di bagian atas kubah, dan meningkatkan nada saat segitiga bergerak lebih dekat ke pangkalan. Karena ada lima output, program ini sangat ideal untuk membuat beberapa orang memainkan dome secara bersamaan. Menggunakan instrumen MIDI atau perangkat lunak MIDI, sinyal MIDI ini dapat dibuat agar terdengar seperti instrumen apa pun.

Simon: Saya menulis rendisi dari Simon, game menyalakan memori klasik. Serangkaian lampu secara acak diterangi satu per satu di seluruh kubah. Di setiap giliran, pemain harus menyalin urutannya. Jika pemain mencocokkan urutan dengan benar, lampu tambahan ditambahkan ke urutan. Skor tinggi disimpan di salah satu bagian kubah. Game ini juga sangat menyenangkan untuk dimainkan dengan banyak orang.

Pong: Mengapa tidak bermain pong di kubah? Sebuah bola merambat melintasi kubah sampai mengenai dayung. Ketika itu terjadi, sinyal MIDI dihasilkan, menunjukkan dayung memukul bola. Pemain lain kemudian harus mengarahkan dayung di sepanjang bagian bawah kubah sehingga memukul bola kembali.

Langkah 15: Foto Kubah Selesai

Foto Kubah Selesai
Foto Kubah Selesai
Foto Kubah Selesai
Foto Kubah Selesai
Foto Kubah Selesai
Foto Kubah Selesai
Foto Kubah Selesai
Foto Kubah Selesai
Kontes Arduino 2016
Kontes Arduino 2016
Kontes Arduino 2016
Kontes Arduino 2016

Hadiah Utama dalam Kontes Arduino 2016

Kontes Remix 2016
Kontes Remix 2016
Kontes Remix 2016
Kontes Remix 2016

Juara II Lomba Remix 2016

Kontes Make it Glow 2016
Kontes Make it Glow 2016
Kontes Make it Glow 2016
Kontes Make it Glow 2016

Juara Kedua Make it Glow Contest 2016

Direkomendasikan: