Talaan ng mga Nilalaman:
- Hakbang 1: Listahan ng Supply
- Hakbang 2: Pagdidisenyo ng Geodesic Dome
- Hakbang 3: Pagbubuo ng Dome Sa Mga Struts at Konektor
- Hakbang 4: Laser Cutting at Mounting Base Plates
- Hakbang 5: Pangkalahatang-ideya ng Elektronika
- Hakbang 6: Pag-mount ng mga LED Sa Dome
- Hakbang 7: Disenyo at Pagpapatupad ng Mount Sensor
- Hakbang 8: Multiplexing Sensor Output
- Hakbang 9: Diffusing Light Sa Acrylic
- Hakbang 10: Paggawa ng Musika Gamit ang Dome Paggamit ng MIDI
- Hakbang 11: Pagpapatakbo ng Dome
- Hakbang 12: Circular Dome Base
- Hakbang 13: Pentagon Dome Base
- Hakbang 14: Programming ang Dome
- Hakbang 15: Mga Larawan ng Kumpletong Dome
Video: Interactive Geodesic LED Dome: 15 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Nagtayo ako ng isang geodeic dome na binubuo ng 120 triangles na may LED at sensor sa bawat tatsulok. Ang bawat LED ay maaaring matugunan nang paisa-isa at ang bawat sensor ay partikular na na-tune para sa isang solong tatsulok. Ang simboryo ay na-program na may isang Arduino upang magaan at gumawa ng isang signal ng MIDI depende sa kung aling tatsulok na inilagay mo ang iyong kamay.
Dinisenyo ko ang simboryo upang maging isang masayang pagpapakita na nakagagawa ng mga taong interesado sa ilaw, electronics, at tunog. Dahil ang simboryo ay nahahati nang maayos sa limang bahagi, dinisenyo ko ang simboryo na magkaroon ng limang magkakahiwalay na output ng MIDI na maaaring magkaroon ng iba't ibang tunog. Ginagawa nitong simboryo ang isang higanteng instrumentong pangmusika, mainam para sa pagtugtog ng musika kasama ng maraming tao nang sabay-sabay. Bilang karagdagan sa pagtugtog ng musika, na-program ko rin ang simboryo para sa mga light show at pag-play ng rendition nina Simon at Pong. Ang pangwakas na istraktura ay isang maliit na higit sa isang metro ang lapad at 70cm ang taas, at pangunahing itinayo sa mga bahagi ng naka-print na kahoy, acrylic, at 3D.
Mayroong maraming magagaling na Mga Tagubilin sa mga LED table at cubes na nagbigay inspirasyon sa akin upang simulan ang proyektong ito. Gayunpaman, nais kong subukang ayusin ang mga LED sa isang iba't ibang geometry. Hindi ko naisip ang isang mas mahusay na istraktura para sa proyekto kaysa sa isang geodeic dome, na mahusay ding naidokumento sa Mga Instructable. Kaya't ang proyektong ito ay isang remix / mashup ng mga LED table at geodesic domes. Nasa ibaba ang mga link sa LED table at geodesic dome Instructables na nag-check out sa simula ng proyekto.
Mga LED table at cubes:
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-…
Geodesic dome:
www.instructables.com/id/Fold-Geodesic-D…
www.instructables.com/id/Geodesic-dome-kit/
Hakbang 1: Listahan ng Supply
Mga Materyales:
1. Kahoy para sa mga struts ng simboryo at base ng simboryo (ang halaga ay depende sa uri at laki ng simboryo)
2. Addressable LED strip (16.4ft / 5m Addressable Kulay LED Pixel Strip 160leds Ws2801 Dc5v)
3. Arduino Uno (Atmega328 - binuo)
4. Prototype board (Penta Angel Double-Side Prototype PCB Universal (7x9cm))
5. Acrylic para sa diffusing LEDs (Cast Acrylic Sheet, Malinaw, 12 "x 12" x 0.118 "Laki)
6. Power supply (Aiposen 110 / 220V hanggang DC12V 30A 360W Switch Power Supply Driver)
7. Buck converter para sa Arduino (RioRand LM2596 DC-DC Buck Converter 1.23V-30V)
8. Buck converter para sa mga LED at sensor (DROK Mini Electric Buck Boltage Converter 15A)
9. 120 IR sensor (Infrared Obstacle Oboutacle Sensor Module)
10. Limang 16 na multiplexer ng channel (Analog / Digital MUX Breakout - CD74HC4067)
11. Anim na 8 channel multiplexers (Multiplexer Breakout - 8 Channel (74HC4051))
12. Limang 2 multiplexer ng channel (MAX4544CPA +)
13. Wire wrap wire (PCB Solder 0.25mm Tin Plated Copper Cord Dia Wire-wrapping Wire 305M 30AWG Red)
14. Hook-up wire (Solid Core, 22 AWG)
15. Mga Pin Header (Gikfun 1 x 40 Pin 2.54mm Single Row Breakaway Lalaki Pin Header)
16. Limang MIDI jacks (Breadboard-friendly MIDI Jack (5-pin DIN))
17. Sampung 220ohm resistors para sa MIDI jacks
18. Stand-off spacers para sa tumataas na electronics sa simboryo (Stand-off Spacer Hex M3 Lalaki x M3 Babae)
19. Mga adaptor ng thread upang ikonekta ang mga stand-off sa kahoy (E-Z Lok Threaded Insert, Brass, Knife Thread)
20. Epoxy o Gorilla Superglue
21. Electrical tape
22. Solder
Mga tool:
1. Station ng Soldering
2. Power drill
3. Circular saw
4. Orbital sander
5. Nakita ni Jig
6. Nakita ni Mitre
7. Protractor
8. 3D printer
9. Mga pamutol ng wire
10. Kasangkapan sa balot ng wire
11. Laser cutter para sa pagputol ng mga LED plate (opsyonal)
12. CNC shopbot para sa base ng simboryo (opsyonal)
Hakbang 2: Pagdidisenyo ng Geodesic Dome
Tulad ng nabanggit ko sa intro, maraming mga online na mapagkukunan para sa pagbuo ng iyong sariling geodeic dome. Nagbibigay ang mga site na ito ng mga calculator ng simboryo na tumutukoy sa haba ng bawat panig (ie strut) at bilang ng mga konektor na kinakailangan para sa anumang uri ng simboryo na nais mong buuin. Ang pagiging kumplikado ng isang geodesic dome (ibig sabihin ang density ng mga triangles) ay tinukoy ng klase nito (1V, 2V, 3V, at iba pa), na may mas mataas na pagiging kumplikado na nagiging isang mas mahusay na pagtatantya ng isang perpektong spherical ibabaw. Upang makabuo ng iyong sariling simboryo, kailangan mo munang pumili ng diameter at klase ng simboryo.
Gumamit ako ng isang site na tinatawag na Domerama upang matulungan akong magdisenyo ng isang 4V simboryo na pinutol sa 5/12 ng isang globo na may radius na 40cm. Para sa ganitong uri ng simboryo, mayroong anim na magkakaibang haba ng haba:
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
Iyon ay isang kabuuang 190 struts na nagdaragdag ng hanggang sa 2223cm (73 ft) ng materyal. Gumamit ako ng 1x3 (3/4 "× 2-1 / 2") pine lumber para sa mga struts sa simboryang ito. Upang ikonekta ang mga struts, dinisenyo ko at 3D na naka-print na konektor gamit ang Autocad. Ang mga file ng STL ay magagamit upang i-download sa pagtatapos ng hakbang na ito. Ang bilang ng mga konektor para sa isang 4V 5/12 simboryo ay:
20 X 4-konektor
6 X 5-konektor
45 X 6-konektor
Sa susunod na hakbang, inilalarawan ko kung paano itinayo ang simboryo na ito kasama ang mga struts na gawa sa kahoy at ang mga naka-print na konektor na 3D na dinisenyo ko.
Hakbang 3: Pagbubuo ng Dome Sa Mga Struts at Konektor
Gamit ang mga kalkulasyon mula sa Domerama para sa isang 4V 5/12 na simboryo, pinutol ko ang mga struts gamit ang isang pabilog na lagari. Ang 190 struts ay may label at inilagay sa isang kahon pagkatapos ng paggupit. Ang 71 na konektor (20 apat na konektor, 6 limang konektor, at 45 anim na konektor) ay naka-print sa 3D gamit ang isang Makerbot. Ang mga struts ng kahoy ay ipinasok sa mga konektor ayon sa diagram na nilikha ni Domerama. Sinimulan ko ang pagtatayo mula sa itaas at gumalaw nang radikal palabas.
Matapos ang lahat ng mga strut ay nakakonekta, inalis ko ang isang strut nang paisa-isa at nagdagdag ng epoxy sa kahoy at konektor. Ang mga konektor ay idinisenyo upang magkaroon ng kakayahang umangkop sa kung paano nila ikinonekta ang mga struct, kaya't mahalagang suriin ang mahusay na proporsyon ng simboryo bago magdagdag ng anumang epoxy.
Hakbang 4: Laser Cutting at Mounting Base Plates
Ngayon na ang balangkas ng simboryo ay itinayo, oras na upang gupitin ang mga tatsulok na baseplate. Ang mga baseplates na ito ay nakakabit sa ilalim ng mga struts, at ginagamit upang mai-mount ang mga LED sa simboryo. Una kong pinutol ang mga baseplate ng 5mm (3/16 ) makapal na playwud sa pamamagitan ng pagsukat ng limang magkakaibang mga triangles na nasa simboryo: AAB (30 triangles), BCC (25 triangles), DDE (20 triangles), CDF (40 triangles), at EEE (5 mga tatsulok). Ang mga sukat ng bawat panig at ang hugis ng mga triangles ay natutukoy gamit ang isang dome calculator (Domerama) at ilang geometry. Matapos i-cut ang mga baseplate ng pagsubok na may isang lagari, iginuhit ko ang disenyo ng tatsulok gamit ang Coral Draw, at gupitin ang natitirang mga baseplate na may isang pamutol ng laser (mas mabilis!). Kung wala kang access sa isang laser cutter, maaari mong iguhit ang mga baseplate sa playwud gamit ang isang pinuno at protractor at gupitin ang lahat ng mga ito gamit ang isang lagari. Kapag ang mga baseplates ay pinutol, ang simboryo ay baligtad at ang mga plato ay nakadikit sa simboryo gamit ang pandikit na kahoy.
Hakbang 5: Pangkalahatang-ideya ng Elektronika
Ipinakita sa pigura sa itaas ay isang iskema ng electronics para sa simboryo. Ang isang Arduino Uno ay ginagamit para sa pagsulat at pagbasa ng mga signal para sa simboryo. Upang magaan ang simboryo, isang RGB LED strip ang tatakbo sa ibabaw ng simboryo upang ang isang LED ay nakaposisyon sa bawat isa sa 120 triangles. Para sa impormasyon sa kung paano gumagana ang isang LED strip, tingnan ang itinuturo na ito. Ang bawat LED ay maaaring matugunan nang hiwalay gamit ang Arduino, na gumagawa ng isang serial data at signal ng orasan para sa strip (tingnan ang A0 at A1 pin sa eskematiko). Gamit ang strip at ang dalawang mga signal na nag-iisa, maaari kang magkaroon ng isang kahanga-hangang ilaw up simboryo. Mayroong iba pang mga paraan upang pumunta tungkol sa pagsulat ng mga signal para sa maraming LED mula sa isang Arduino, tulad ng Charlieplexing at shift register.
Upang makipag-ugnay sa simboryo, nag-set up ako ng isang IR sensor sa itaas ng bawat LED. Ginagamit ang mga sensor na ito upang makita kapag ang kamay ng isang tao ay malapit sa isang tatsulok sa simboryo. Dahil ang bawat tatsulok sa simboryo ay may sariling IR sensor at mayroong 120 triangles, kailangan mong gumawa ng ilang uri ng multiplexing bago ang Arduino. Napagpasyahan kong gumamit ng limang 24-channel multiplexers (MUX) para sa 120 sensor sa simboryo. Narito ang isang itinuturo sa multiplexing, kung hindi ka pamilyar. Ang isang 24 na channel na MUX ay nangangailangan ng limang mga signal ng kontrol. Pinili ko ang mga pin na 8-12 sa Arduino, upang magawa ko ang pagmamanipula sa port (tingnan ang Hakbang 10 para sa karagdagang impormasyon). Ang output ng mga board na MUX ay nababasa sa paggamit ng mga pin 3-7.
Nagsama din ako ng limang output ng MIDI sa simboryo upang makagawa ito ng tunog (Hakbang 11). Sa madaling salita, limang tao ang maaaring maglaro ng simboryo nang sabay-sabay sa bawat output na tumutugtog ng ibang tunog. Mayroon lamang isang pin ng TX sa Arduino, kaya't limang signal ng MIDI ang nangangailangan ng demultiplexing. Dahil ang output ng MIDI ay ginawa sa ibang oras kaysa sa pagbabasa ng IR sensor, ginamit ko ang parehong mga signal ng kontrol.
Matapos ang lahat ng mga pag-input ng IR sensor ay nabasa sa Arduino, ang ilaw ng simboryo ay maaaring magaan at maglaro ng mga tunog subalit pinaprograma mo ang Arduino. Mayroon akong ilang mga halimbawa sa Hakbang 14 ng itinuturo na ito.
Hakbang 6: Pag-mount ng mga LED Sa Dome
Dahil ang simboryo ay napakalaki, ang LED strip ay kailangang i-cut upang ilagay ang isang LED sa bawat tatsulok. Ang bawat LED ay nakadikit sa tatsulok gamit ang sobrang pandikit. Sa magkabilang panig ng LED, isang butas ay drilled sa pamamagitan ng baseplate para sa mga kable na patakbo sa pamamagitan ng simboryo. Pagkatapos ay na-solder ko ang hook-up wire sa bawat contact sa LED (5V, ground, orasan, signal) at pinakain ang mga wire sa baseplate. Ang mga wires na ito ay pinutol upang ang mga ito ay sapat na mahaba upang maabot ang susunod na LED sa simboryo. Ang mga wire ay hinila sa susunod na LED, at nagpapatuloy ang proseso. Ikinonekta ko ang mga LED sa isang pagsasaayos na mababawasan ang dami ng kawad na kinakailangan habang may katuturan pa rin para sa pagtugon sa mga LED gamit ang Arduino sa paglaon. Aalisin ng isang mas maliit na simboryo ang pangangailangan para sa paggupit ng strip at makatipid ng maraming oras na paghihinang. Ang isa pang pagpipilian ay ang paggamit ng magkakahiwalay na RGB LEDS na may mga rehistro ng shift.
Ang serial na komunikasyon sa strip ay nakakamit gamit ang dalawang mga pin (isang data at pin na orasan) mula sa Arduino. Sa madaling salita, ang data para sa pag-iilaw ng simboryo ay ipinapasa mula sa isang LED patungo sa susunod habang iniiwan ang data pin. Narito ang halimbawa ng code na binago mula sa forum ng Arduino na ito:
// Gawin ang buong pagtaas ng simboryo at bawasan ang tindi ng solong kulay
#define numLeds 120 // Bilang ng mga LED // OUTPUT PINS // int clockPin = A1; // tukuyin ang pin na int dataPin = A0; // tukuyin ang data pin // VARIABLES // int red [numLeds]; // Initialize array for LED strip int green [numLeds]; // Initialize array for LED strip int blue [numLeds]; // Initialize array for LED strip // CONSTANT double scaleA = {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}; // maliit na bahagi ng intensity ng LEDs void setup () {pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); memset (pula, 0, numLeds); memset (berde, 0, numLeds); memset (asul, 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 () {para sa (int p = 0; p <20; p ++) // loop para sa pagtaas ng ilaw na tindi ng simboryo {double scale = scaleA [p]; pagkaantala (20); para sa (int i = 0; i <numLeds; i ++) // cycle sa lahat ng LEDS {red = 255 * scale; berde = 80 * scale; asul = 0; } updatestring (pula, berde, asul); // update led strip}}
Hakbang 7: Disenyo at Pagpapatupad ng Mount Sensor
Nagpasya akong gumamit ng mga IR sensor para sa simboryo. Ang mga sensor na ito ay may IR LED at tatanggap. Kapag ang isang bagay ay nakarating sa harap ng sensor, ang ilang IR radiation mula sa IR LED ay makikita sa receiver. Sinimulan ko ang proyektong ito sa pamamagitan ng paggawa ng aking sariling mga IR sensor, na batay sa itinuro ni Richardouvina. Masyadong napakahaba ng lahat ng paghihinang, kaya bumili ako ng 120 IR sensor mula sa eBay na ang bawat isa ay gumagawa ng isang digital na output. Ang threshold ng sensor ay itinakda na may potensyomiter sa pisara upang ang output ay mataas lamang kapag ang isang kamay ay malapit sa tatsulok na iyon.
Ang bawat tatsulok ay binubuo ng isang playwud na LED-baseplate, isang sheet ng diffusive acrylic na naka-mount tungkol sa 2.5cm sa itaas ng LED plate, at isang IR sensor. Ang sensor para sa bawat tatsulok ay naka-mount sa isang sheet ng manipis na playwud na hugis bilang isang pentagon o hexagon depende sa posisyon sa simboryo (tingnan ang pigura sa itaas). Nag-drill ako ng mga butas sa base ng IR sensor upang mai-mount ang mga IR sensor, at pagkatapos ay ikinonekta ang mga ground at 5V na pin na may wire-wrap wire at isang tool na wire-wrap (pula at itim na mga wire). Matapos ang pagkonekta sa lupa at 5V, binalot ko ang mahabang wire-wrap wire sa bawat output (dilaw), lupa, at 5V upang mapatakbo ang simboryo.
Ang hexagon o pentagon IR sensor mount ay pagkatapos ay epoxied sa simboryo, sa itaas mismo ng 3D naka-print na konektor, upang ang kawad ay maaaring tumakbo sa pamamagitan ng simboryo. Sa pamamagitan ng pagkakaroon ng mga sensor sa itaas ng mga konektor, nagawa ko ring i-access at ayusin ang mga potensyal sa mga IR sensor na kontrolado ang pagiging sensitibo ng mga sensor. Sa susunod na hakbang, ilalarawan ko kung paano nakakonekta ang mga output ng IR sensor sa mga multiplexer at nabasa sa Arduino.
Hakbang 8: Multiplexing Sensor Output
Dahil ang Arduino Uno ay may lamang 14 digital I / O pin at 6 na analog input pin at mayroong 120 signal signal na dapat basahin, ang simboryo ay nangangailangan ng mga multiplexer upang mabasa sa lahat ng mga signal. Pinili kong magtayo ng limang 24-channel multiplexer, na ang bawat isa ay nagbasa ng 24 ng mga IR sensor (tingnan ang figure ng pangkalahatang-ideya ng electronics). Ang 24-channel MUX ay binubuo ng isang 8-channel MUX breakout board, 16-channel MUX breakout board, at 2-channel MUX. Ang mga header ng pin ay solder sa bawat breakout board upang maikonekta sila sa prototype board. Gamit ang isang wire-wrap tool, pagkatapos ay konektado ko ang ground, 5V, at ang control signal pin ng mga board ng breakout ng MUX.
Ang isang 24-channel na MUX ay nangangailangan ng limang mga signal ng kontrol, na pinili kong kumonekta upang i-pin ang 8-12 sa Arduino. Ang lahat ng limang 24-channel na MUX ay tumatanggap ng parehong mga signal ng kontrol mula sa Arduino kaya't nakakonekta ako sa kawad mula sa mga pin ng Arduino sa 24-channel na MUX. Ang mga digital na output ng IR sensors ay konektado sa mga input pin ng 24-channel MUX upang mabasa sila nang serial sa Arduino. Dahil mayroong limang magkakahiwalay na pin para sa pagbabasa sa lahat ng 120 output ng sensor, kapaki-pakinabang na isipin ang simboryo na nahahati sa limang magkakahiwalay na seksyon na binubuo ng 24 na triangles (suriin ang mga kulay ng simboryo sa pigura).
Gamit ang pagmamanipula ng Arduino port, maaari mong mabilis na madagdagan ang mga signal ng kontrol na ipinadala ng mga pin na 8-12 sa mga multiplexer. Nag-attach ako ng ilang halimbawa ng code para sa pagpapatakbo ng mga multiplexer dito:
int numChannel = 24;
// OUTPUTS // int s0 = 8; // MUX control 0 - PORTbD int s1 = 9; // MUX control 1 - PORTb int s2 = 10; // MUX control 2 - PORTb int s3 = 11; // MUX control 3 - PORTb int s4 = 12; // MUX control 4 - PORTb // INPUTS // int m0 = 3; // MUX input 0 int m1 = 4; // MUX input 1 int m2 = 5; // MUX input 2 int m3 = 6; // MUX input 3 int m4 = 7; // MUX input 4 // VARIABLES // int arr0r; // digital read from MUX0 int arr1r; // digital read from MUX1 int arr2r; // digital read from MUX2 int arr3r; // digital read from MUX3 int arr4r; // digital read from MUX4 void setup () {// ilagay ang iyong setup code dito, upang tumakbo nang isang beses: DDRB = B11111111; // nagtatakda ng Arduino pin 8 hanggang 13 bilang mga 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 () {// ilagay ang iyong pangunahing code dito, upang tumakbo nang paulit-ulit: PORTB = B00000000; // SET control pins para sa mux mababa para sa (int i = 0; i <numChannel; i ++) {// Digital read output ng MUX0 - MUX4 para sa IR sensor i // Kung ang IR sensor ay LO, ang tatsulok ay hinahawakan ng player. arr0r = digitalRead (m0); // pagbabasa mula sa Mux 0, IR sensor i arr1r = digitalRead (m1); // pagbabasa mula sa Mux 1, IR sensor i arr2r = digitalRead (m2); // pagbabasa mula sa Mux 2, IR sensor i arr3r = digitalRead (m3); // pagbabasa mula sa Mux 3, IR sensor i arr4r = digitalRead (m4); // pagbabasa mula sa Mux 4, IR sensor i // GUMAGAWA NG KASAMA SA MAS maraming INPUTS O Tindahan sa ISANG ARRAY DITO // PORTB ++; // increment control signal para sa MUX}}
Hakbang 9: Diffusing Light Sa Acrylic
Upang maikalat ang ilaw mula sa mga LED, nag-sanded ako ng transparent acrylic na may isang pabilog na orbital sander. Ang sander ay inilipat sa magkabilang panig ng acrylic sa isang paggalaw na figure-8. Natagpuan ko ang pamamaraang ito na mas mahusay kaysa sa pinturang spray na "frosted glass".
Pagkatapos ng sanding at linisin ang acrylic, gumamit ako ng isang laser cutter upang gupitin ang mga triangles upang magkasya sa mga LED. Posibleng i-cut ang acrylic gamit ang isang acrylic cutting tool o kahit isang jigsaw kung ang acrylic ay hindi pumutok. Ang acrylic ay gaganapin sa mga LED ng 5mm makapal na mga parihaba na playwud na pinutol din ng isang pamutol ng laser. Ang maliliit na mga tabla na ito ay nakadikit sa mga struts sa simboryo, at ang mga acrylic triangles ay na-epoxied sa mga tabla.
Hakbang 10: Paggawa ng Musika Gamit ang Dome Paggamit ng MIDI
Nais kong ang simboryo ay may kakayahang makagawa ng tunog, kaya't nag-set up ako ng limang mga MIDI channel, isa para sa bawat subset ng simboryo. Kailangan mo munang bumili ng limang MIDI jacks at ikonekta ito tulad ng ipinakita sa eskematiko (tingnan ang tutorial na ito mula sa suporta ng Arduino para sa karagdagang impormasyon).
Dahil mayroon lamang isang nagpapadala ng serial pin sa Arduino Uno (pin 2 na may label bilang TX pin), kailangan mong de-multiplex ang mga signal na ipinapadala sa limang jack ng MIDI. Gumamit ako ng parehong mga signal ng kontrol (pin 8-12), dahil ang mga signal ng MIDI ay ipinapadala sa ibang oras kaysa kapag binabasa ang mga IR sensor sa Arduino. Ang mga signal ng kontrol na ito ay ipinadala sa isang 8-channel demultiplexer upang makontrol mo kung aling MIDI jack ang tumatanggap ng MIDI signal na nilikha ng Arduino. Ang mga signal ng MIDI ay nilikha ng Arduino na may kasindak-sindak na MIDI signal library na nilikha ni Francois Best. Narito ang ilang halimbawang code para sa paggawa ng maraming mga output ng MIDI sa iba't ibang mga jack ng MIDI na may isang Arduino Uno:
# isama // isama ang MIDI library
#define numChannel 24 // Bilang ng IR bawat Triangle # tukuyin ang mga seksyon 5 // bilang ng mga seksyon sa simboryo, bilang ng 24channel MUX, bilang ng mga MIDI jacks // OUTPUTS // int s0 = 8; // MUX control 0 - PORTbD int s1 = 9; // MUX control 1 - PORTb int s2 = 10; // MUX control 2 - PORTb int s3 = 11; // MUX control 3 - PORTb int s4 = 12; // MUX control 4 - PORTb // INPUTS // int m0 = 3; // MUX input 0 int m1 = 4; // MUX input 1 int m2 = 5; // MUX input 2 int m3 = 6; // MUX input 3 int m4 = 7; // MUX input 4 // VARIABLES // int arr0r; // digital read from MUX0 int arr1r; // digital read from MUX1 int arr2r; // digital read from MUX2 int arr3r; // digital read from MUX3 int arr4r; // digital read from MUX4 int midArr [numSections]; // I-store kung ang isang nota ay pinindot ng isa sa mga manlalaro int note2play [numSections]; // Tala ng store na dapat i-play kung ang sensor ay hinawakan int note [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; // oras ng pag-pause sa pagitan ng midi signal MIDI_CREATE_DEFAULT_INSTANCE (); void setup () {// ilagay ang iyong code sa pag-setup dito, upang tumakbo nang isang beses: DDRB = B11111111; // nagtatakda ng Arduino pin 8 hanggang 13 bilang mga input na 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 () {// ilagay ang iyong pangunahing code dito, upang tumakbo nang paulit-ulit: PORTB = B00000000; // SET control pins para sa mux mababa para sa (int i = 0; i <numChannel; i ++) {// Digital read output ng MUX0 - MUX4 para sa IR sensor i // Kung ang IR sensor ay LO, ang tatsulok ay hinahawakan ng player. arr0r = digitalRead (m0); // pagbabasa mula sa Mux 0, IR sensor i arr1r = digitalRead (m1); // pagbabasa mula sa Mux 1, IR sensor i arr2r = digitalRead (m2); // pagbabasa mula sa Mux 2, IR sensor i arr3r = digitalRead (m3); // pagbabasa mula sa Mux 3, IR sensor i arr4r = digitalRead (m4); // pagbabasa mula sa Mux 4, IR sensor i kung (arr0r == 0) // Ang sensor sa seksyon 0 ay na-block {midArr [0] = 1; // Player 0 has hit a note, set HI so that there is MIDI output for player 0 note2play [0] = notes ; // Tandaan upang i-play para sa Player 0} kung (arr1r == 0) // Ang sensor sa seksyon 1 ay na-block {midArr [1] = 1; // Player 0 has hit a note, set HI so that there is MIDI output for player 0 note2play [1] = notes ; // Tandaan upang i-play para sa Player 0} kung (arr2r == 0) // Ang sensor sa seksyon 2 ay na-block {midArr [2] = 1; // Player 0 has hit a note, set HI so that there is MIDI output for player 0 note2play [2] = notes ; // Tandaan upang i-play para sa Player 0} kung (arr3r == 0) // Ang sensor sa seksyon 3 ay na-block {midArr [3] = 1; // Player 0 has hit a note, set HI so that there is MIDI output for player 0 note2play [3] = notes ; // Tandaan upang i-play para sa Player 0} kung (arr4r == 0) // Ang sensor sa seksyon 4 ay na-block {midArr [4] = 1; // Player 0 has hit a note, set HI so that there is MIDI output for player 0 note2play [4] = notes ; // Tandaan upang i-play para sa Player 0} PORTB ++; // increment control signal para sa MUX} updateMIDI (); } walang bisa updateMIDI () {PORTB = B00000000; // SET control pins para sa mux mababa kung (midArr [0] == 1) // Player 0 MIDI output {MIDI.sendNoteOn (note2play [0], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // increment MUX if (midArr [1] == 1) // Player 1 MIDI output {MIDI.sendNoteOn (note2play [1], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // increment MUX if (midArr [2] == 1) // Player 2 MIDI output {MIDI.sendNoteOn (note2play [2], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // increment MUX if (midArr [3] == 1) // Player 3 MIDI output {MIDI.sendNoteOn (note2play [3], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // increment MUX if (midArr [4] == 1) // Player 4 MIDI output {MIDI.sendNoteOn (note2play [4], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [4], 127, 1); delayMicroseconds (pauseMidi); } midArr [0] = 0; midArr [1] = 0; midArr [2] = 0; midArr [3] = 0; midArr [4] = 0; }
Hakbang 11: Pagpapatakbo ng Dome
Mayroong maraming mga bahagi na kailangang mapagana sa simboryo. Samakatuwid kakailanganin mong kalkulahin ang mga amp na iginuhit mula sa bawat bahagi upang matukoy ang supply ng kuryente na kailangan mong bilhin.
Ang LED strip: Gumamit ako ng humigit-kumulang 3.75meters ng Ws2801 LED strip, na kumakain ng 6.4W / meter. Ito ay tumutugma sa 24W (3.75 * 6.4). Upang mai-convert ito sa mga amp, gamitin ang Power = kasalukuyang * volts (P = iV), kung saan ang V ay ang boltahe ng LED strip, sa kasong ito 5V. Samakatuwid, ang kasalukuyang iginuhit mula sa LEDs ay 4.8A (24W / 5V = 4.8A).
Ang mga IR sensor: Ang bawat IR sensor ay kumukuha ng halos 25mA, na umaabot sa 3A para sa 120 sensor.
Ang Arduino: 100mA, 9V
Ang mga multiplexer: Mayroong limang 24 channel multiplexer na ang bawat isa ay binubuo ng isang 16 channel multiplexer at 8 channel multiplexer. Ang 8 channel at 16 channel MUX bawat isa ay kumakain ng halos 100mA. Samakatuwid, ang kabuuang pagkonsumo ng kuryente ng lahat ng mga MUX ay 1A.
Ang pagdaragdag ng mga sangkap na ito, ang kabuuang pagkonsumo ng kuryente ay inaasahang nasa 9A. Ang LED strip, IR sensor, at multiplexer ay may input boltahe sa 5V, at ang Arduino ay mayroong 9V input boltahe. Samakatuwid, pumili ako ng isang 12V 15A power supply, isang 15A buck converter para sa pag-convert ng 12V sa 5V, at isang 3A buck converter para sa pag-convert ng 12V sa 9V para sa Arduino.
Hakbang 12: Circular Dome Base
Ang simboryo ay nakasalalay sa isang bilog na piraso ng kahoy na may isang pentagon na gupitin sa gitna para sa madaling pag-access sa electronics. Upang likhain ang pabilog na base na ito, ang isang 4x6 'sheet ng playwud ay pinutol gamit ang isang kahoy na router ng CNC. Maaari ring magamit ang isang lagari para sa hakbang na ito. Matapos maputol ang base, ang simboryo ay nakakabit dito gamit ang maliit na 2x3 na mga bloke ng kahoy.
Sa tuktok ng base, ikinabit ko ang suplay ng kuryente na may epoxy at mga converter ng MUX's at Buck na may mga stand-off spacer ng PCB. Ang mga spacer ay nakakabit sa playwud gamit ang mga adaptor ng thread na E-Z Lok.
Hakbang 13: Pentagon Dome Base
Bilang karagdagan sa pabilog na base, nagtayo din ako ng isang base ng pentagon para sa simboryo na may isang salamin na bintana sa ilalim. Ang batayang ito at naghahanap ng bintana ay ginawa rin mula sa playwud na hiwa ng isang kahoy na router ng CNC. Ang mga gilid ng pentagon ay gawa sa mga tabla na gawa sa kahoy na may isang gilid na mayroong butas dito upang dumaan ang mga konektor. Gamit ang mga metal bracket at 2x3 block joint, ang mga kahoy na tabla ay nakakabit sa base ng pentagon. Ang isang switch ng kuryente, mga konektor ng MIDI, at konektor ng USB ay nakakabit sa isang front panel na nilikha ko gamit ang isang laser cutter. Ang buong base ng pentagon ay na-screwed sa bilog na base na inilarawan sa Hakbang 12.
Nag-install ako ng isang window sa ilalim ng simboryo upang ang sinuman ay maaaring tumingin sa simboryo upang makita ang electronics. Ang naghahanap na baso ay gawa sa acrylic cut na may isang laser cutter at na-epoxied sa isang pabilog na piraso ng playwud.
Hakbang 14: Programming ang Dome
Mayroong walang katapusang mga posibilidad para sa pag-program ng simboryo. Ang bawat ikot ng code ay kumukuha ng mga signal mula sa mga IR sensor, na nagpapahiwatig ng mga triangles na naantig ng isang tao. Sa impormasyong ito maaari mong kulayan ang simboryo sa anumang kulay ng RGB at / o makagawa ng isang signal na MIDI. Narito ang ilang mga halimbawa ng mga programa na isinulat ko para sa simboryo:
Kulayan ang simboryo: Ang bawat tatsulok ay umiikot sa apat na kulay habang ito ay hinawakan. Habang nagbabago ang mga kulay, nilalaro ang isang arpeggio. Sa program na ito, makukulay mo ang simboryo sa libu-libong iba't ibang mga paraan.
Musika ng simboryo: Ang simboryo ay may kulay na may limang mga kulay, bawat seksyon na tumutugma sa isang iba't ibang output ng MIDI. Sa programa, maaari kang pumili kung aling mga tala ang gumaganap ng bawat tatsulok. Pinili kong magsimula sa gitnang C sa tuktok ng simboryo, at taasan ang pitch habang ang mga triangles ay lumipat palapit sa base. Dahil mayroong limang mga output, ang program na ito ay perpekto para sa pagkakaroon ng maraming tao nang sabay-sabay na maglaro ng simboryo. Gamit ang isang instrumento ng MIDI o MIDI software, maaaring gawin ang mga signal na MIDI na tunog tulad ng anumang instrumento.
Simon: Sumulat ako ng isang rendition ng Simon, ang klasikong laro ng light-up ng memorya. Ang isang random na pagkakasunud-sunod ng mga ilaw ay naiilawan nang paisa-isa sa buong buong simboryo. Sa bawat pagliko, dapat kopyahin ng manlalaro ang pagkakasunud-sunod. Kung ang manlalaro ay tumutugma nang tama sa pagkakasunud-sunod, ang isang karagdagang ilaw ay idinagdag sa pagkakasunud-sunod. Ang mataas na iskor ay naka-imbak sa isa sa mga seksyon ng simboryo. Ang larong ito ay napaka-masaya upang i-play sa maraming mga tao.
Pong: Bakit hindi maglaro ng pong sa isang simboryo? Ang isang bola ay kumakalat sa buong simboryo hanggang sa maabot ang sagwan. Kapag ginawa ito, isang signal ng MIDI ang ginawa, na nagpapahiwatig na ang sagwan ay tumama sa bola. Pagkatapos ay ididirekta ng ibang manlalaro ang sagwan kasama ang ilalim ng simboryo upang maibalik nito ang bola.
Hakbang 15: Mga Larawan ng Kumpletong Dome
Grand Prize sa Arduino Contest 2016
Pangalawang Gantimpala sa Remix Contest 2016
Pangalawang Gantimpala sa Make it Glow Contest 2016
Inirerekumendang:
Interactive LED Tile Wall (Mas Madali Kaysa sa Mukhang Ito): 7 Mga Hakbang (na may Mga Larawan)
Interactive LED Tile Wall (Mas Madali Kaysa sa Mukhang Ito): Sa proyektong ito, nagtayo ako ng isang interactive na LED wall display gamit ang isang naka-print na bahagi ng Arduino at 3D. Ang inspirasyon para sa proyektong ito ay bahagyang nagmula sa mga tile ng Nanoleaf. Nais kong makabuo ng aking sariling bersyon na hindi lamang mas abot-kaya, ngunit mo rin
Interactive LED Dome With Fadecandy, Processing and Kinect: 24 Hakbang (na may Mga Larawan)
Interactive LED Dome With Fadecandy, Processing and Kinect: WhatWhen sa Dome ay isang 4.2m geodesic dome na sakop ng 4378 LEDs. Ang mga LED ay lahat ng isa-isang nai-map at naa-address. Kinokontrol ang mga ito ng Fadecandy at Pagproseso sa isang Windows desktop. Ang isang Kinect ay nakakabit sa isa sa mga struts ng simboryo, kaya mo
Magnetic Geodesic Planetarium: 7 Hakbang (na may Mga Larawan)
Magnetic Geodesic Planetarium: Kamusta lahat! Gusto kong lakarin ka sa aking proseso ng paglikha ng isang geodeic planetarium na gaganapin sa mga magnet at crafting wire! Ang dahilan para sa paggamit ng mga magnet na ito ay para sa kadalian ng pagtanggal sa mga oras ng pag-ulan o mas mababa sa perpektong mga kondisyon ng panahon. Sa ganitong paraan yo
Paano Lumikha ng isang Temcor-style Geodesic Dome sa Autodesk Inventor: 8 Hakbang
Paano Lumikha ng isang Temcor-style Geodesic Dome sa Autodesk Inventor: Ipapakita sa iyo ng tutorial na ito kung paano lumikha ng isang temcor na istilo ng Temcor na gumagamit lamang ng kaunting matematika. Karamihan sa impormasyon sa tutorial na ito ay nakuha mula sa reverse-engineering ng TaffGoch ng pamamaraan ng subdivision ng lumang Amundsen-Scott South Pole Station, s
Interactive LED Table: 14 Mga Hakbang (na may Mga Larawan)
Interactive LED Table: Narito ang isang gabay na itinuturo sa kung paano gumawa ng iyong sariling Interactive LED table gamit ang isa sa mga kit mula sa Evil Mad Sciencitst. Narito ang isang video ng aking pangwakas na talahanayan sa pagkilos sa madilim, at isang larawan ng kung ano ang hitsura nito :