Mundarija:
- 1 -qadam: ta'minot ro'yxati
- 2 -qadam: Geodezik gumbazni loyihalash
- 3 -qadam: Struts va ulagichlar bilan gumbaz qurish
- 4 -qadam: Lazerli kesish va o'rnatish plitalari
- 5 -qadam: Elektronika haqida umumiy ma'lumot
- 6 -qadam: LEDlarni gumbazga o'rnatish
- 7 -qadam: Sensorli tog'ni loyihalash va amalga oshirish
- 8 -qadam: Multiplexing Sensor Chiqish
- 9 -qadam: nurni akril bilan yoyish
- 10 -qadam: MIDI yordamida gumbaz bilan musiqa yaratish
- 11 -qadam: Gumbazni quvvatlantirish
- 12 -qadam: Dumaloq gumbaz bazasi
- 13 -qadam: Pentagon gumbazi bazasi
- 14 -qadam: Gumbazni dasturlash
- 15 -qadam: To'ldirilgan gumbazning fotosuratlari
Video: Interaktiv geodezik LED gumbaz: 15 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Men har bir uchburchakda LED va sensorli 120 uchburchakdan iborat geodezik gumbaz qurdim. Har bir LEDga alohida -alohida murojaat qilish mumkin va har bir sensor bitta uchburchak uchun maxsus sozlangan. Qubba sizning qo'lingizni qaysi uchburchakka qo'yganingizga qarab MIDI signalini yoqish va ishlab chiqarish uchun Arduino bilan dasturlashtirilgan.
Men gumbazni odamlarni yorug'lik, elektronika va tovushga qiziqtiradigan qiziqarli ekran qilib yaratdim. Gumbaz chiroyli tarzda besh qismga bo'linganligi sababli, men gumbazni har biri boshqa ovozga ega bo'lishi mumkin bo'lgan beshta alohida MIDI chiqishiga ega qilib yaratdim. Bu gumbazni bir vaqtning o'zida bir nechta odam bilan musiqa ijro etish uchun ideal bo'lgan ulkan musiqa asbobiga aylantiradi. Musiqa ijro etishdan tashqari, men gumbazni yorug'lik shoulari uchun dasturlashtirdim va Simon va Pongning ijrosini o'ynadim. Yakuniy tuzilish diametri bir metrdan bir oz ko'proq va balandligi 70 sm bo'lib, asosan yog'och, akril va 3D bosma qismlardan qurilgan.
Menga bu loyihani boshlashga ilhom bergan LED -jadvallar va kublar bo'yicha bir nechta buyuk ko'rsatmalar mavjud. Biroq, men LEDlarni boshqa geometriyada joylashtirishga harakat qilmoqchi edim. Men loyiha uchun Geodezik gumbazdan yaxshiroq tuzilma haqida o'ylay olmadim, u ham Instructables -da yaxshi hujjatlashtirilgan. Shunday qilib, bu loyiha LED jadvallar va geodezik gumbazlarning remixi/mashupi. Quyida men loyihaning boshida ko'rib chiqqan LED stol va Geodezik gumbaz Instructables havolalari.
LED stol va kublar:
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-…
Geodezik gumbaz:
www.instructables.com/id/Folding-Geodesic-D…
www.instructables.com/id/Geodesic-dome-kit/
1 -qadam: ta'minot ro'yxati
Materiallar:
1. Gumbaz va gumbaz tagliklari uchun yog'och (miqdori gumbazning turi va hajmiga bog'liq)
2. Adresli LED tasmasi (16,4 fut/5 m manzilli rangli LED pikselli chiziqli 160 ls Ws2801 Dc5v)
3. Arduino Uno (Atmega328 - yig'ilgan)
4. Prototip taxtasi (Penta Angel ikki tomonlama PCB prototipi universal (7x9 sm))
5. LEDlarni tarqatish uchun akril (quyma akril varaq, tiniq, 12 "x 12" x 0.118 "o'lchami)
6. Quvvat manbai (Aiposen 110/220V - DC12V 30A 360W - quvvat manbai drayveri)
7. Arduino uchun buck konvertori (RioRand LM2596 DC-DC Buck Converter 1.23V-30V)
8. LED va sensorlar uchun konvertor (DROK Mini Electric Buck Voltaj Converter 15A)
9. 120 ta IQ sensori (Infraqizil to'siqlardan qochish sensori moduli)
10. Beshta 16 kanalli multipleksor (analog/raqamli MUX uzilishi - CD74HC4067)
11. Oltita 8 kanalli multipleksor (Multiplexer Breakout - 8 Channel (74HC4051))
12. Beshta 2 kanalli multipleksor (MAX4544CPA+)
13. Tel o'tkazgichli sim (PCB lehim 0,25 mm qalay bilan qoplangan mis simli Dia 305M 30AWG qizil simli)
14. O'rnatish simlari (qattiq yadro, 22 AWG)
15. Pin sarlavhalari (Gikfun 1 x 40 pinli 2,54 mm bitta qatorli erkak pinli sarlavha)
16. Beshta MIDI uyasi (Breadboard uchun qulay MIDI Jek (5-pinli DIN))
17. MIDI raz'emlari uchun o'nta 220 ohmli rezistorlar
18. Elektronni gumbazga o'rnatish uchun to'xtash joylari (Stand-off Spacer Hex M3 Erkak x M3 Ayol)
19. Yog'ochga tayanchlarni ulash uchun ipli adapterlar (E-Z Lok Threaded Insert, Brass, Pichoq Thread)
20. Epoksi yoki Gorilla Superglue
21. Elektr tasmasi
22. Lehim
Asboblar:
1. Lehimlash stantsiyasi
2. Quvvat matkapi
3. Dumaloq arra
4. Orbital zımpara
5. Jig arra
6. Miter arra
7. Uzatuvchi
8. 3D printer
9. Tel kesgichlar
10. Simlarni o'rash vositasi
11. LED plitalarini kesish uchun lazer to'sar (ixtiyoriy)
12. Gumbaz poydevori uchun CNC ustaxonasi (ixtiyoriy)
2 -qadam: Geodezik gumbazni loyihalash
Kirish qismida aytib o'tganimdek, o'zingizning geodezik gumbazingizni qurish uchun bir nechta onlayn manbalar mavjud. Bu saytlar gumbazli hisoblagichlarni taqdim etadi, ular har bir tomonning uzunligini (ya'ni strut) va siz qurmoqchi bo'lgan gumbaz turiga kerakli ulagichlar sonini aniqlaydi. Geodezik gumbazning murakkabligi (ya'ni uchburchaklar zichligi) uning klassi bilan belgilanadi (1V, 2V, 3V va boshqalar), murakkabligi esa mukammal sferik sirtni yaxshiroq yaqinlashishiga aylanadi. O'z gumbazini qurish uchun avval gumbaz diametri va sinfini tanlash kerak.
Men Domerama deb nomlangan saytdan foydalanib, radiusi 40 sm bo'lgan sferaning 5/12 qismiga kesilgan 4V gumbazni loyihalashda yordam berdim. Ushbu turdagi gumbaz uchun oltita uzunlikdagi ustunlar mavjud:
30 X "A" - 8,9 sm
30 X "B" - 10,4 sm
50 X "S" - 12,4 sm
40 X "D" - 12,5 sm
20 X "E" - 13,0 sm
20 X "F" - 13,2 sm
Bu 2223 sm (73 fut) gacha material qo'shadigan jami 190 ta ustun. Men bu gumbazdagi ustunlar uchun 1x3 (3/4 "× 2-1/2") qarag'ay yog'ochidan foydalanardim. Strutsni ulash uchun men Autocad yordamida 3D bosma ulagichlarni ishlab chiqdim. Ushbu qadam oxirida STL fayllarini yuklab olish mumkin. 4V 5/12 gumbaz uchun ulagichlar soni:
20 X 4 ulagich
6 X 5 ulagich
45 X 6-ulagich
Keyingi bosqichda men bu gumbazning yog'och ustunlar va men ishlab chiqargan 3D bosma ulagichlar yordamida qanday qurilganligini tasvirlab beraman.
3 -qadam: Struts va ulagichlar bilan gumbaz qurish
Domeramadan 4V 5/12 gumbaz uchun hisob -kitoblardan foydalanib, dumaloq arra yordamida ustunlarni kesib tashladim. Kesilganidan keyin 190 tirgak etiketlanadi va qutiga solinadi. 71 ta ulagich (20 ta to'rtta ulagich, 6 ta beshta ulagich va 45 ta oltita ulagich) Makerbot yordamida 3D bosilgan. Yog'och ustunlar ulagichlarga Domerama tomonidan tuzilgan sxema bo'yicha joylashtirilgan. Men qurilishni tepadan boshladim va radial ravishda tashqariga qarab harakat qildim.
Barcha ustunlar ulangandan so'ng, men birma -bir tayanchni olib tashladim va yog'och va ulagichga epoksi qo'shdim. Ulagichlar konstruktsiyalarni ulashda moslashuvchan bo'lishi uchun yaratilgan, shuning uchun epoksi qo'shishdan oldin gumbaz simmetriyasini tekshirish muhim edi.
4 -qadam: Lazerli kesish va o'rnatish plitalari
Endi gumbazning skeleti qurildi, uchburchak tagliklarni kesish vaqti keldi. Ushbu taglik plitalari ustunlarning pastki qismiga biriktirilgan va LEDlarni gumbazga o'rnatish uchun ishlatiladi. Men dastlab 5 mm (3/16 dyuym) qalinlikdagi kontrplakdan gumbazdagi beshta turli uchburchakni o'lchab, taglik plitalarini kesib oldim: AAB (30 uchburchak), BCC (25 uchburchak), DDE (20 uchburchak), CDF (40 uchburchak)) va EEE (5 ta uchburchak). Ikkala tomonning o'lchamlari va uchburchaklar shakli gumbaz kalkulyatori (Domerama) va ba'zi geometriya yordamida aniqlandi. Jigsaw yordamida test tagliklarini kesib bo'lgach, men Coral Draw yordamida uchburchakning chizilgan chizig'ini chizdim va qolgan taglik plitalarini lazer to'sar bilan kesib oldim (ancha tezroq!). Agar sizda lazerli kesgichga kirish imkoni bo'lmasa, siz chizg'ich va o'lchagich yordamida kontrplak ustiga tayanch plitalarini chizishingiz va barchasini jigsa bilan kesishingiz mumkin. Asosiy plitalar kesilgach, gumbaz ag'dariladi va plitalar yog'och elim yordamida gumbazga yopishtiriladi.
5 -qadam: Elektronika haqida umumiy ma'lumot
Yuqoridagi rasmda gumbaz uchun elektronikaning sxemasi ko'rsatilgan. Arduino Uno gumbaz signallarini yozish va o'qish uchun ishlatiladi. Gumbazni yoritish uchun gumbaz ustida RGB LED chizig'i o'tkaziladi, shunda 120 ta uchburchakning har birida LED joylashadi. LED tasmasi qanday ishlashi haqida ma'lumot olish uchun ushbu ko'rsatmaga qarang. Har bir LEDni ketma -ket ma'lumot va chiziq uchun soat signalini ishlab chiqaradigan Arduino yordamida alohida hal qilish mumkin (sxemada A0 va A1 piniga qarang). Faqat chiziq va bu ikkita signal yordamida siz ajoyib gumbazga ega bo'lishingiz mumkin. Arduino -dan Charlieplexing va shift registrlari kabi ko'plab LEDlar uchun signallarni yozishning boshqa usullari mavjud.
Gumbaz bilan ishlash uchun men har bir LEDning yuqori qismida IQ sensori o'rnatdim. Bu sensorlar kimning qo'li gumbazdagi uchburchakka yaqinligini aniqlash uchun ishlatiladi. Gumbazdagi har bir uchburchakda IQ sensori bor va 120 ta uchburchak bor, shuning uchun siz Arduino oldidan qandaydir multipleksatsiyani bajarishingiz kerak bo'ladi. Men gumbazdagi 120 ta sensorlar uchun beshta 24 kanalli multipleksorlardan (MUX) foydalanishga qaror qildim. Mana, agar siz notanish bo'lsangiz, multiplekslashtirish bo'yicha ko'rsatma. 24 kanalli MUX beshta nazorat signalini talab qiladi. Men Arduino-da 8-12-pinlarni tanladim, shuning uchun men port manipulyatsiyasini qila olardim (qo'shimcha ma'lumot uchun 10-qadamga qarang). MUX plitalarining chiqishi 3-7-pinlar yordamida o'qiladi.
Men gumbazga tovush chiqarishi uchun beshta MIDI chiqishini ham qo'shdim (11 -qadam). Boshqacha qilib aytganda, besh kishi gumbazni bir vaqtning o'zida o'ynashi mumkin, har bir chiqish boshqa tovushni chiqaradi. Arduino -da faqat bitta TX pin bor, shuning uchun beshta MIDI signallari demultiplekslashni talab qiladi. MIDI chiqishi IQ sensori o'qishidan boshqa vaqtda ishlab chiqarilgani uchun men bir xil nazorat signallarini ishlatardim.
Arduino -ga barcha IQ sensori kirishi o'qilgandan so'ng, gumbaz yonadi va siz Arduino -ni dasturlayotganda tovushlarni o'ynata olasiz. Menda 14 -qadamda ko'rsatma beradigan bir nechta misollar bor.
6 -qadam: LEDlarni gumbazga o'rnatish
Gumbaz juda katta bo'lgani uchun, har bir uchburchakda bitta LEDni qo'yish uchun LED tasmasini kesish kerak. Har bir LED super elim yordamida uchburchakka yopishtirilgan. LEDning har ikki tomonida gumbaz orqali kabellarni o'tkazish uchun taglik plitasi orqali teshik ochiladi. Keyin men LEDning har bir kontaktiga (5V, er, soat, signal) ulangan simni lehimladim va simlarni taglik plitasi orqali uzatdim. Bu simlar gumbazdagi keyingi LEDga yetadigan darajada uzun bo'ladigan qilib kesilgan. Simlar keyingi LEDga o'tkaziladi va jarayon davom etadi. Men LEDlarni kerakli sim miqdorini kamaytiradigan konfiguratsiyada uladim, shu bilan birga LEDlarni keyinchalik Arduino yordamida hal qilish mantiqiy edi. Kichikroq gumbaz chiziqni kesish zaruratini yo'q qiladi va lehimlashda ko'p vaqtni tejaydi. Boshqa variant - smenali registrli alohida RGB LEDlarini ishlatish.
Ip bilan ketma -ket aloqa Arduino -dan ikkita pim (ma'lumotlar va soat pinlari) yordamida amalga oshiriladi. Boshqacha qilib aytganda, gumbazni yoritish uchun ma'lumotlar bitta pindan ikkinchisiga uzatiladi, chunki u ma'lumot pinidan chiqadi. Bu Arduino forumidan o'zgartirilgan misol kodi:
// Butun gumbazni bitta rangning intensivligini oshiring va kamaytiring
#define numLeds 120 // LEDlar soni // Chiqish PIN -kodlari // int clockPin = A1; // soat pinini belgilang int dataPin = A0; // ma'lumotlar pinini aniqlash // VARIABLES // int red [numLeds]; // yashil chiziqli LED chiziq uchun qatorni boshlang [numLeds]; // ko'k chiziqli LED tasmasi uchun qatorni ishga tushiring [numLeds]; // LED chizig'i uchun massivni ishga tushiring // CONSTANT er -xotin o'lchovli A = {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}; // LEDlar intensivligining ulushi bekor sozlamalari () {pinMode (clockPin, OUTPUT); pinMod (dataPin, OUTPUT); memset (qizil, 0, numLeds); memset (yashil, 0, numLeds); memset (ko'k, 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 ++) // gumbazning yorug'lik intensivligini oshirish uchun pastadir {ikki o'lchovli = miqyosiA [p]; kechikish (20); uchun (int i = 0; i <numLeds; i ++) // barcha LEDlar orqali aylanish {qizil = 255 * shkalasi; yashil = 80 * shkalasi; ko'k = 0; } updatestring (qizil, yashil, ko'k); // LED tasmasini yangilang}}
7 -qadam: Sensorli tog'ni loyihalash va amalga oshirish
Gumbaz uchun IQ sensorlaridan foydalanishga qaror qildim. Ushbu sensorlar IR LED va qabul qilgichga ega. Sensor oldiga ob'ekt tushganda, IQ LEDning bir qancha IQ nurlari qabul qilgich tomon aks etadi. Men bu loyihani Richardouvinaning ko'rsatmalari asosida ishlab chiqilgan shaxsiy IR sensorlarini yasashdan boshladim. Barcha lehim juda uzoq davom etdi, shuning uchun men eBay -dan har biri raqamli chiqish ishlab chiqaradigan 120 ta IQ sensori sotib oldim. Sensor ostonasi taxtada potansiyometr bilan o'rnatiladi, shunda qo'l faqat shu uchburchak yonida bo'lsa, chiqish baland bo'ladi.
Har bir uchburchak LED-plastinka kontrplakdan, LED plastinkasidan taxminan 2,5 sm balandlikda o'rnatilgan diffuz akril varaqdan va IQ sensoridan iborat. Har bir uchburchakning sensori gumbazdagi holatiga qarab beshburchak yoki olti burchakli yupqa kontrplak varagiga o'rnatildi (yuqoridagi rasmga qarang). Men IQ sensorlarini o'rnatish uchun IQ sensori poydevoriga teshiklar qildim, so'ngra sim va o'rash asboblari (qizil va qora simlar) bilan er va 5V pimlarni uladim. Topraklama va 5V ni ulab bo'lgandan so'ng, men gumbazdan o'tishi uchun har bir chiqish (sariq), er va 5V uzun simli o'rash simini o'rab oldim.
Olti burchakli yoki beshburchakli IQ sensori o'rnatgichlari gumbazga epoksi qilingan, 3D bosilgan ulagichlarning tepasida, sim gumbazdan o'tishi uchun. Sensorlarning ulagichlar ustida joylashganligi tufayli men sensorlar sezuvchanligini boshqaruvchi IQ sensorlaridagi potentsiometrlarga kirish va sozlash imkoniyatiga ega bo'ldim. Keyingi bosqichda men IR sensorlarining chiqishlari multipleksorlarga qanday ulanganligini va Arduino -ga o'qilishini tasvirlab beraman.
8 -qadam: Multiplexing Sensor Chiqish
Arduino Uno -da faqat 14 ta raqamli kirish -chiqish pimi va 6 ta analog kirish pimi borligi va o'qilishi kerak bo'lgan 120 ta sensorli signal borligi uchun gumbaz barcha signallarda o'qish uchun multipleksorlarni talab qiladi. Men beshta 24 kanalli multipleksorlarni qurishni tanladim, ularning har biri 24 ta IQ sensori o'qiydi (elektronika umumiy rasmiga qarang). 24 kanalli MUX 8 kanalli MUX uzilish taxtasi, 16 kanalli MUX uzilish taxtasi va 2 kanalli MUXdan iborat. Pin sarlavhalari prototip taxtasiga ulanishi uchun har bir bo'lakka lehimlangan. Keyin simni o'rash asbobidan foydalanib, men MUX uzilish platalarining topraklama, 5V va boshqaruv signal pimlarini uladim.
24 kanalli MUX beshta boshqaruv signalini talab qiladi, men ularni Arduino-dagi 8-12-pinlarga ulashni tanladim. Hamma beshta 24 kanalli MUX Arduino-dan bir xil boshqaruv signallarini oladi, shuning uchun men Arduino pinlaridan 24 kanalli MUXga simni uladim. IQ sensorlarining raqamli chiqishlari 24 kanalli MUX kirish pimlariga ulangan, shuning uchun ularni ketma-ket Arduino-ga o'qish mumkin. Sensorning 120 ta chiqishida o'qish uchun beshta alohida pim borligi sababli, gumbazni 24 uchburchakdan iborat beshta alohida qismga bo'linishini tasavvur qilish foydali bo'ladi (rasmdagi gumbaz ranglarini tekshiring).
Arduino port manipulyatsiyasidan foydalanib, siz 8-12-pinlar tomonidan yuborilgan nazorat signallarini multipleksorlarga tezda oshirishingiz mumkin. Men bu erda multipleksorlarni ishlatish uchun misol kodini qo'shdim:
int numChannel = 24;
// Chiqish // int s0 = 8; // MUX nazorati 0 - PORTbD int s1 = 9; // MUX boshqaruvi 1 - PORTb int s2 = 10; // MUX nazorati 2 - PORTb int s3 = 11; // MUX boshqaruvi 3 - PORTb int s4 = 12; // MUX boshqaruvi 4 - PORTb // INPUTS // int m0 = 3; // MUX kirish 0 int m1 = 4; // MUX kirish 1 int m2 = 5; // MUX kirish 2 int m3 = 6; // MUX kirish 3 int m4 = 7; // MUX kiritish 4 // VARIABLES // int arr0r; // MUX0 int arr1r dan raqamli o'qish; // MUX1 int arr2r dan raqamli o'qish; // MUX2 int arr3r dan raqamli o'qish; // MUX3 int arr4r dan raqamli o'qish; // raqamli o'qish MUX4 void setup () {// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying: DDRB = B11111111; // Arduino pinlarini 8 dan 13 gacha pinMode (s0, OUTPUT) kirish sifatida o'rnatadi; pinMode (s1, OUTPUT); pinMode (s2, OUTPUT); pinMode (s3, OUTPUT); pinMode (s4, OUTPUT); pinMode (m0, INPUT); pinMode (m1, INPUT); pinMod (m2, Kirish); pinMod (m3, Kirish); pinMode (m4, INPUT); } void loop () {// qayta -qayta ishga tushirish uchun asosiy kodingizni bu erga qo'ying: PORTB = B00000000; // (int i = 0; i <numChannel; i ++) {// muxr uchun SET boshqaruv pimi. arr0r = digitalRead (m0); // Mux 0 dan o'qish, IQ sensori i arr1r = digitalRead (m1); // Mux 1 dan o'qish, IQ sensori i arr2r = digitalRead (m2); // Mux 2 dan o'qish, IQ sensori i arr3r = digitalRead (m3); // Mux 3 dan o'qish, IR sensori i arr4r = digitalRead (m4); // Mux 4, IR sensori i dan o'qish // MUX KIRISHLAR BILAN QANDAY QILISHI VA MA'LUMOT BU YERDA // PORTB ++; // MUX uchun qo'shimcha nazorat signallari}}
9 -qadam: nurni akril bilan yoyish
Yorug'likni LEDlardan tarqatish uchun men shaffof akrilni dumaloq orbital silliqlash mashinasi bilan silliqladim. Zımpara akrilning har ikki tomoniga 8-rasmda siljitildi. Men bu usulni "muzli shisha" buzadigan amallar bo'yoqidan ancha yaxshi deb topdim.
Akrilni silliqlash va tozalashdan so'ng, men uchburchaklarni svetodiodli yoritgichlar bilan kesish uchun lazerni ishlatardim. Agar akril yorilmasa, akrilni kesish uchun asbob yoki hatto pichoq yordamida kesish mumkin. Akril svetodiodlar ustida 5 mm qalinlikdagi kontrplak to'rtburchaklar yordamida ushlab turilgan, shuningdek, lazer bilan kesilgan. Bu kichik taxtalar gumbaz ustidagi ustunlarga yopishtirilgan va akril uchburchaklar taxtalarga epoksi qilingan.
10 -qadam: MIDI yordamida gumbaz bilan musiqa yaratish
Men gumbaz tovush chiqarishga qodir bo'lishini xohlardim, shuning uchun gumbazning har bir bo'lagi uchun beshta MIDI kanalini o'rnatdim. Avval siz beshta MIDI uyasini sotib olishingiz va uni sxemada ko'rsatilgandek ulashingiz kerak (qo'shimcha ma'lumot olish uchun Arduino qo'llab -quvvatlashining ushbu qo'llanmasiga qarang).
Arduino Uno-da bitta uzatuvchi ketma-ket pin borligi uchun (pin 2 TX pin deb belgilangan), beshta MIDI uyasiga yuboriladigan signallarni ko'paytirish kerak. Men bir xil boshqaruv signallarini ishlatardim (8-12-pin), chunki MIDI signallari Arduino-ga IQ sensorlar o'qilganidan ko'ra boshqa vaqtda yuboriladi. Bu boshqaruv signallari 8 kanalli demultiplexerga yuboriladi, shunda siz qaysi MIDI uyasi Arduino tomonidan yaratilgan MIDI signalini qabul qilishini boshqarasiz. MIDI signallari Arduino tomonidan Fransua Best tomonidan yaratilgan dahshatli MIDI signal kutubxonasi bilan yaratilgan. Mana, Arduino Uno yordamida turli xil MIDI raz'emlariga bir nechta MIDI chiqishlarini ishlab chiqarish uchun misol kodi:
#include // MIDI kutubxonasini o'z ichiga oladi
#define numChannel 24 // Uchburchak boshiga IR soni #5 sonli bo'limlarni aniqlang // gumbazdagi bo'limlar soni, 24 kanalli MUX, MIDI raz'emlari soni // OUTPUTS // int s0 = 8; // MUX nazorati 0 - PORTbD int s1 = 9; // MUX boshqaruvi 1 - PORTb int s2 = 10; // MUX nazorati 2 - PORTb int s3 = 11; // MUX boshqaruvi 3 - PORTb int s4 = 12; // MUX boshqaruvi 4 - PORTb // INPUTS // int m0 = 3; // MUX kirish 0 int m1 = 4; // MUX kirish 1 int m2 = 5; // MUX kirish 2 int m3 = 6; // MUX kirish 3 int m4 = 7; // MUX kiritish 4 // VARIABLES // int arr0r; // MUX0 int arr1r dan raqamli o'qish; // MUX1 int arr2r dan raqamli o'qish; // MUX2 int arr3r dan raqamli o'qish; // MUX3 int arr4r dan raqamli o'qish; // MUX4 int midArr [numSections] dan raqamli o'qish; // int note2play [numSections] o'yinchilardan biri eslatmani bosgan yoki bosmaganligini saqlang; // Sensorga tegilsa, ijro etiladigan yozuvni saqlang [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 pauseMidi = 4000; // MIDI_CREATE_DEFAULT_INSTANCE midi signallari orasidagi pauza vaqti (); void setup () {// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying: DDRB = B11111111; // Arduino pinlarini 8 dan 13 gacha MIDI.begin (MIDI_CHANNEL_OFF) kirish sifatida o'rnatadi; pinMode (s0, OUTPUT); pinMode (s1, OUTPUT); pinMode (s2, OUTPUT); pinMode (s3, OUTPUT); pinMode (s4, OUTPUT); pinMode (m0, INPUT); pinMode (m1, INPUT); pinMod (m2, Kirish); pinMod (m3, Kirish); pinMode (m4, INPUT); } void loop () {// qayta -qayta ishga tushirish uchun asosiy kodingizni bu erga qo'ying: PORTB = B00000000; // (int i = 0; i <numChannel; i ++) {// muxr uchun SET boshqaruv pimi. arr0r = digitalRead (m0); // Mux 0 dan o'qish, IQ sensori i arr1r = digitalRead (m1); // Mux 1 dan o'qish, IQ sensori i arr2r = digitalRead (m2); // Mux 2 dan o'qish, IQ sensori i arr3r = digitalRead (m3); // Mux 3 dan o'qish, IR sensori i arr4r = digitalRead (m4); // Mux 4 dan o'qish, IR sensori i if (arr0r == 0) // 0 bo'limidagi sensor bloklangan {midArr [0] = 1; // 0 -o'yinchi notaga tushdi, HI -ni 0 -o'yinchi uchun MIDI chiqishi bo'lishi uchun sozlang 0 note2play [0] = eslatmalar ; // 0 -o'yinchi uchun o'ynash uchun eslatma, agar (arr1r == 0) // 1 -bo'limda sensor bloklangan bo'lsa {midArr [1] = 1; // 0 -o'yinchi eslatmani oldi, HI -ni 0 -o'yinchi uchun MIDI chiqishi bo'lishi uchun sozlang2 note2play [1] = eslatmalar ; // 0 -o'yinchi uchun o'ynash uchun eslatma, agar (arr2r == 0) // 2 -qismdagi sensor bloklangan bo'lsa {midArr [2] = 1; // 0 -o'yinchi notaga urdi, HI -ni 0 -o'yinchi uchun MIDI chiqishi bo'lishi uchun sozlang 2 note2play [2] = eslatmalar ; // 0 -o'yinchi uchun o'ynash uchun eslatma, agar (arr3r == 0) // 3 -bo'limda sensor bloklangan bo'lsa, {midArr [3] = 1; // 0 -o'yinchi notaga urdi, HI -ni 0 -o'yinchi uchun MIDI chiqishi bo'lishi uchun sozlang2 note2play [3] = eslatmalar ; // 0 -o'yinchi uchun o'ynash uchun eslatma, agar (arr4r == 0) // 4 -bo'limdagi sensor bloklangan bo'lsa {midArr [4] = 1; // 0 -o'yinchi notaga urdi, HI -ni 0 -o'yinchi uchun MIDI chiqishi bo'lishi uchun sozlang2 note2play [4] = eslatmalar ; // 0} PORTB ++ pleyerida o'ynash uchun eslatma; // MUX} increment nazorat signallari} updateMIDI (); } bekor qilingan updateMIDI () {PORTB = B00000000; // mux pastligi uchun SET boshqaruv pinlari if (midArr [0] == 1) // Player 0 MIDI chiqishi {MIDI.sendNoteOn (note2play [0], 127, 1); kechikish mikrosaniyalari (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); kechikish mikrosaniyalari (pauseMidi); } PORTB ++; // ortishi MUX agar (midArr [1] == 1) // 1 -o'yinchi MIDI chiqishi {MIDI.sendNoteOn (note2play [1], 127, 1); kechikish mikrosaniyalari (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); kechikish mikrosaniyalari (pauseMidi); } PORTB ++; // ortishi MUX agar (midArr [2] == 1) // 2 -o'yinchi MIDI chiqishi {MIDI.sendNoteOn (note2play [2], 127, 1); kechikish mikrosaniyalari (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); kechikish mikrosaniyalari (pauseMidi); } PORTB ++; // ortishi MUX agar (midArr [3] == 1) // 3 -o'yinchi MIDI chiqishi {MIDI.sendNoteOn (note2play [3], 127, 1); kechikish mikrosaniyalari (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); kechikish mikrosaniyalari (pauseMidi); } PORTB ++; // ortishi MUX agar (midArr [4] == 1) // 4 -o'yinchi MIDI chiqishi {MIDI.sendNoteOn (note2play [4], 127, 1); kechikish mikrosaniyalari (pauseMidi); MIDI.sendNoteOff (note2play [4], 127, 1); kechikish mikrosaniyalari (pauseMidi); } midArr [0] = 0; midArr [1] = 0; midArr [2] = 0; midArr [3] = 0; midArr [4] = 0; }
11 -qadam: Gumbazni quvvatlantirish
Gumbazda quvvatlanishi kerak bo'lgan bir nechta komponentlar mavjud. Shuning uchun siz sotib olishingiz kerak bo'lgan elektr ta'minotini aniqlash uchun har bir komponentdan olingan amperlarni hisoblashingiz kerak bo'ladi.
LED tasmasi: Men Ws2801 LED tasmasining taxminan 3,75 metrini ishlatardim, u 6,4 Vt/metr sarflaydi. Bu 24W (3.75*6.4) ga to'g'ri keladi. Buni amperga aylantirish uchun Power = current*volts (P = iV) dan foydalaning, bu erda V - LED chizig'ining kuchlanishi, bu holda 5V. Shuning uchun, LEDlardan olingan oqim 4,8A (24W/5V = 4,8A) dir.
IQ sensori: Har bir IQ sensori taxminan 25mA, 120 sensori uchun 3A ni tashkil qiladi.
Arduino: 100mA, 9V
Multiplexerlar: har biri 16 kanalli va 8 kanalli multipleksorlardan iborat beshta 24 kanalli multipleksorlar mavjud. 8 kanalli va 16 kanalli MUX har biri taxminan 100mA sarflaydi. Shunday qilib, barcha MUXning umumiy quvvat sarfi 1A.
Ushbu komponentlarni qo'shganda, umumiy quvvat sarfi 9A atrofida bo'lishi kutilmoqda. LED chizig'i, IQ sensori va multipleksorlari kirish voltajiga 5V, Arduino esa 9V kirish voltajiga ega. Shuning uchun men 12V 15A quvvat manbaini, 12Vni 5V ga o'tkazish uchun 15A buck konvertorini va Arduino uchun 12Vni 9V ga o'zgartirish uchun 3A buck konvertorini tanladim.
12 -qadam: Dumaloq gumbaz bazasi
Gumbaz elektronikaga oson kirish uchun o'rtasidan beshburchak kesilgan dumaloq yog'och bo'lakda yotadi. Ushbu dumaloq asosni yaratish uchun yog'och CNC router yordamida 4x6 dyuymli kontrplak varag'i kesilgan. Ushbu qadam uchun jigsaw ham ishlatilishi mumkin. Baza kesilgandan so'ng, gumbaz unga 2x3 dyuymli kichik yog'och bloklar yordamida biriktirilgan.
Baza ustiga, men epoksi bilan quvvat manbaini va tenglikni ajratish moslamalari bilan MUX va Buck konvertorlarini uladim. Aralashgichlar kontrplakga E-Z Lok ipli adapterlari yordamida biriktirilgan.
13 -qadam: Pentagon gumbazi bazasi
Dumaloq poydevordan tashqari, men gumbaz uchun beshburchak poydevor ham qurdim, uning tagida oynali oynasi bor. Bu taglik va ko'rinadigan oyna, shuningdek, yog'och CNC router bilan kesilgan kontrplakdan qilingan. Beshburchakning yon tomonlari yog'och taxtalardan yasalgan bo'lib, bir tomoni ulagichlar o'tishi uchun teshikka ega. Metall qavslar va 2x3 blokli bo'g'inlar yordamida yog'och taxtalar beshburchak asosga biriktiriladi. Quvvat kaliti, MIDI ulagichlari va USB ulagichi men old panelga lazerli kesuvchi yordamida ulangan. Butun beshburchak taglik 12 -qadamda tasvirlangan dumaloq asosga vidalanadi.
Men gumbazning pastki qismiga deraza o'rnatdim, shunda hamma gumbazga qarab, elektronikani ko'radi. Ko'zoynak akril bilan kesilgan va lazerli kesgich bilan qoplangan va dumaloq kontrplak bo'lagiga epoksiyalangan.
14 -qadam: Gumbazni dasturlash
Gumbazni dasturlash uchun cheksiz imkoniyatlar mavjud. Kodning har bir tsikli IQ sensorlaridagi signallarni qabul qiladi, ular kimdir tegib ketgan uchburchaklarni bildiradi. Ushbu ma'lumot yordamida siz gumbazni har qanday RGB rang bilan bo'yashingiz va/yoki MIDI signalini chiqarishingiz mumkin. Mana men gumbaz uchun yozgan dasturlarning bir nechta namunalari:
Gumbazni ranglang: Har bir uchburchak teginilganda to'rtta rang bo'ylab aylanadi. Ranglar o'zgarganda, arpej o'ynaladi. Ushbu dastur yordamida siz gumbazni minglab turli yo'llar bilan bo'yashingiz mumkin.
Gumbaz musiqasi: gumbaz beshta rang bilan bo'yalgan, har bir bo'lim boshqa MIDI chiqishiga mos keladi. Dasturda siz har bir uchburchak qaysi notalarda o'ynashini tanlashingiz mumkin. Men gumbazning yuqori qismidagi C o'rtasidan boshlashni tanladim va uchburchaklar taglikka yaqinlashganda qadamni oshirdim. Beshta chiqish borligi sababli, bu dastur bir vaqtning o'zida gumbazni bir nechta odam o'ynashi uchun ideal. MIDI vositasi yoki MIDI dasturidan foydalanib, bu MIDI signallari har qanday asbob kabi eshitilishi mumkin.
Simon: Men klassik xotira yorituvchi o'yini Simonni yozdim. Chiroqlarning tasodifiy ketma -ketligi butun gumbaz bo'ylab birma -bir yoritiladi. Har bir navbatda, o'yinchi ketma -ketlikni nusxalashi kerak. Agar o'yinchi ketma -ketlikka to'g'ri mos keladigan bo'lsa, ketma -ketlikka qo'shimcha yorug'lik qo'shiladi. Yuqori ball gumbaz bo'limlaridan birida saqlanadi. Bu o'yin, shuningdek, ko'p odamlar bilan o'ynash uchun juda qiziqarli.
Pong: Nega gumbazda pong o'ynamaysiz? To'p gumbaz bo'ylab, eshkakka tegmaguncha tarqaladi. Bu sodir bo'lganda, eshkak to'pga urilganligini ko'rsatuvchi MIDI signali ishlab chiqariladi. Boshqa o'yinchi, keyin, eshkakni gumbazning pastki qismiga yo'naltirishi kerak, shunda u to'pni orqaga uradi.
15 -qadam: To'ldirilgan gumbazning fotosuratlari
2016 yilgi Arduino tanlovining bosh mukofoti
2016 yilgi remiks tanlovining ikkinchi sovrini
2016 yil "Yorqin bo'l" tanlovining ikkinchi sovrini
Tavsiya:
Fadecandy, ishlov berish va Kinect bilan interaktiv LED gumbaz: 24 qadam (rasmlar bilan)
Fadecandy, Processing va Kinect bilan interaktiv LED gumbaz: WhatWhen in Dome - 4378 LED bilan qoplangan 4,2 metrli geodezik gumbaz. LEDlarning har biri alohida xaritada joylashtirilgan. Ular Windows ish stolida Fadecandy va Processing tomonidan boshqariladi. Gumbaz ustunlaridan biriga Kinect biriktirilgan, shuning uchun
Magnit geodezik planetariy: 7 qadam (rasmlar bilan)
Magnit geodezik planetariy: Hammaga salom! Sizni magnit va ishchi simlar bilan ushlab turilgan geodezik planetariyni yaratish jarayonida sizga ko'rsatma berishni yoqtiraman! Ushbu magnitlardan foydalanishning sababi yomg'ir paytida yoki ideal ob -havo sharoitida oson olib tashlanishi. Shu tarzda siz
Autodesk Inventor-da Temcor uslubidagi geodezik gumbazni qanday yaratish mumkin: 8 qadam
Autodesk Inventor-da Temcor uslubidagi geodezik gumbazni qanday yaratish mumkin: Bu darslik sizga Temcor uslubidagi gumbazni qanday yaratishni ko'rsatib beradi, faqat matematikadan foydalangan holda.Ushbu qo'llanmada keltirilgan ma'lumotlarning aksariyati TaffGoch-ning teskari muhandisligidan olingan. Eski Amundsen-Skott janubi qutbidagi bo'linish usuli,
DIY LED gumbaz nuri (yangilangan 9-15-09): 10 qadam
DIY LED gumbazli yorug'lik (yangilangan 9-15-09): Mening kichkina Honda Del Sol yanada gumbazli yorug'likka muhtoj edi. Men oddiy lampochkadan ishlab chiqarilgan LEDni almashtirishga o'tdim, nihoyat, men o'qishim mumkin bo'lgan yuqori yorqinlikka
Qog'ozdan (va po'latdan va tsementdan) gumbaz qurish: 6 qadam (rasmlar bilan)
Qog'ozdan (va po'latdan … va tsementdan) gumbaz qurish: Qiz do'stim (Vendi Tremayn) bilan men Nyu -Meksiko janubiga etib kelganimizda, biz birinchi bo'lib mahalliy qurilish materialini qidirib topdik. Gilni qazish va tortib olish kerak bo'lardi, somon qadami allaqachon qimmat bo'lgan, mahalliy emas, odam