Sisällysluettelo:
- Vaihe 1: Toimitusluettelo
- Vaihe 2: Geodeettisen kupolin suunnittelu
- Vaihe 3: Kupolin rakentaminen tukien ja liittimien avulla
- Vaihe 4: Laserleikkaus- ja asennuslevyt
- Vaihe 5: Yleiskatsaus elektroniikkaan
- Vaihe 6: LED -valojen kiinnittäminen kupoliin
- Vaihe 7: Anturikiinnityksen suunnittelu ja toteutus
- Vaihe 8: Multiplexing -anturin lähtö
- Vaihe 9: Valon hajauttaminen akryylillä
- Vaihe 10: Musiikin tekeminen kupolin avulla MIDI: n avulla
- Vaihe 11: Kupolin virta
- Vaihe 12: Pyöreä kupolialusta
- Vaihe 13: Pentagon Dome Base
- Vaihe 14: Kupolin ohjelmointi
- Vaihe 15: Valokuvat valmiista kupolista
Video: Interaktiivinen geodeettinen LED -kupoli: 15 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Rakensin geodeettisen kupolin, joka koostui 120 kolmiosta, joissa oli LED ja anturi jokaisessa kolmiossa. Jokainen LED voidaan osoittaa erikseen ja jokainen anturi on viritetty erityisesti yhtä kolmioa varten. Kupoli on ohjelmoitu Arduinolla syttymään ja tuottamaan MIDI -signaalin riippuen siitä, mihin kolmioon asetat kätesi.
Suunnittelin kupolin hauskaksi näytöksi, joka saa ihmiset kiinnostumaan valosta, elektroniikasta ja äänestä. Koska kupoli jakautuu kauniisti viiteen osaan, suunnittelin kupolin siten, että siinä on viisi erillistä MIDI -lähtöä, joista jokaisella voi olla eri ääni. Tämä tekee kupolista jättimäisen soittimen, joka on ihanteellinen musiikin toistamiseen useiden ihmisten kanssa samanaikaisesti. Musiikin soittamisen lisäksi ohjelmoin myös kupolin valoesityksille ja Simon- ja Pong -esityksen toistamiselle. Lopullinen rakenne on halkaisijaltaan hieman yli metri ja 70 cm korkea, ja se on valmistettu pääasiassa puusta, akryylistä ja 3D -painetuista osista.
LED -pöydissä ja -kuutioissa on useita upeita opastettavia, jotka inspiroivat minua aloittamaan tämän projektin. Halusin kuitenkin yrittää järjestää LEDit eri geometriaan. En voinut kuvitella projektille parempaa rakennetta kuin geodeettinen kupoli, joka on myös hyvin dokumentoitu Instructablesissa. Joten tämä projekti on remix/mashup LED -pöydistä ja geodeettisista kupolista. Alla on linkit LED -pöytään ja geodeettisiin kupolioppaisiin, jotka tarkistin projektin alussa.
LED -pöydät ja kuutiot:
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-…
Geodeettinen kupoli:
www.instructables.com/id/Folding-Geodesic-D…
www.instructables.com/id/Geodesic-dome-kit/
Vaihe 1: Toimitusluettelo
Materiaalit:
1. Puu kupolin ja kupolin pohjan tukiin (määrä riippuu kupolin tyypistä ja koosta)
2. Osoitettava LED -nauha (16,4 jalkaa/5 m osoitettava väri -LED -pikselinauha 160leds Ws2801 Dc5v)
3. Arduino Uno (Atmega328 - koottu)
4. Prototyyppikortti (Penta Angel Double-Side Prototype PCB Universal (7x9cm))
5. Akryyli LED -valojen hajottamiseen (valettu akryylilevy, kirkas, 12 "x 12" x 0,118 "koko)
6. Virtalähde (Aiposen 110/220V - DC12V 30A 360W Switch Power Supply Driver)
7. Buck-muunnin Arduinolle (RioRand LM2596 DC-DC Buck Converter 1.23V-30V)
8. Buck -muunnin LEDeille ja antureille (DROK Mini Electric Buck Voltage Converter 15A)
9. 120 IR -anturia (infrapunaesteen välttämisanturimoduuli)
10. Viisi 16 -kanavaista multiplekseria (analoginen/digitaalinen MUX -katkaisu - CD74HC4067)
11. Kuusi 8 -kanavaista multiplekseriä (Multiplexer Breakout - 8 Channel (74HC4051))
12. Viisi 2 -kanavaista multiplekseriä (MAX4544CPA+)
13. Lankakierrelanka (piirilevyjuotos 0,25 mm: n tinapinnoitettu kuparijohto Dia Langankäärintälanka 305M 30AWG punainen)
14. Liitäntäjohto (kiinteä ydin, 22 AWG)
15. Nastatunnistimet (Gikfun 1 x 40 -nastainen 2,54 mm: n yksirivinen irrotettava urospistoke)
16. Viisi MIDI-liitäntää (Breadboard-ystävällinen MIDI-liitin (5-nastainen DIN))
17. Kymmenen 220 ohmin vastusta MIDI -liittimille
18. Seisontavälikkeet elektroniikan kiinnittämiseen kupoliin (Erotusvälilevy Hex M3 Uros x M3 Naaras)
19. Kierteensovittimet tukien yhdistämiseksi puuhun (EZ Lok -kierteinen insertti, messinki, veitsen kierre)
20. Epoksi tai Gorilla Superglue
21. Sähköteippi
22. Juotos
Työkalut:
1. Juotosasema
2. Porakone
3. Pyörösaha
4. Kiertohiomakone
5. Jig -saha
6. Viistosaha
7. Asteikko
8. 3D -tulostin
9. Lankaleikkurit
10. Langankääritystyökalu
11. Laserleikkuri LED -levyjen leikkaamiseen (valinnainen)
12. CNC -shopbot kupolin pohjalle (valinnainen)
Vaihe 2: Geodeettisen kupolin suunnittelu
Kuten mainitsin esittelyssä, on olemassa useita online -lähteitä oman geodeettisen kupolin rakentamiseen. Nämä sivustot tarjoavat domelaskureita, jotka määrittävät kummankin sivun pituuden (ts. Tuen) ja tarvittavien liittimien lukumäärän minkä tahansa rakennetun kupolin tyypille. Geodeettisen kupolin monimutkaisuus (eli kolmioiden tiheys) määritetään sen luokalla (1V, 2V, 3V ja niin edelleen), ja suuremmasta monimutkaisuudesta tulee lähentäminen täydelliseen pallomaiseen pintaan. Jos haluat rakentaa oman kupolin, sinun on ensin valittava kupolin halkaisija ja luokka.
Käytin Domerama -nimistä sivustoa auttamaan minua suunnittelemaan 4 V: n kupolin, joka katkaistiin 5/12 pallosta, jonka säde oli 40 cm. Tämän tyyppiselle kupolille on kuusi eri pituista tukia:
30 X "A" - 8,9 cm
30 X "B" - 10,4 cm
50 X "C" - 12,4 cm
40 X "D" - 12,5 cm
20 X “E” - 13,0 cm
20 X "F" - 13,2 cm
Tämä on yhteensä 190 tukijalkaa, jotka lisäävät 2223 cm (73 jalkaa) materiaalia. Käytin 1x3 (3/4 "× 2-1/2") männyn puutavaraa tämän kupolin tukiin. Tukien liittämiseksi suunnittelin ja 3D -tulostetut liittimet käytin Autocadia. STL -tiedostot ovat ladattavissa tämän vaiheen lopussa. Liittimiä 4V 5/12 kupolille on:
20 X 4-liitin
6 X 5-liitin
45 X 6-liitin
Seuraavassa vaiheessa kuvailen, miten tämä kupoli on rakennettu puutuilla ja suunnittelemillani 3D -painetuilla liittimillä.
Vaihe 3: Kupolin rakentaminen tukien ja liittimien avulla
Leikkasin tuet pyörösahalla käyttämällä Domeraman laskelmia 4V 5/12 kupolille. 190 tukia merkittiin ja asetettiin laatikkoon leikkaamisen jälkeen. 71 liitintä (20 neliliitintä, 6 viiden liittimen liitintä ja 45 kuuden liittimen liitintä) tulostettiin 3D-muodossa käyttämällä Makerbotia. Puiset tuet työnnettiin liittimiin Domeraman luoman kaavion mukaisesti. Aloitin rakentamisen ylhäältä ja siirryin säteittäisesti ulospäin.
Kun kaikki tuet oli kytketty, poistin yhden tuen kerrallaan ja lisäsin epoksia puuhun ja liittimeen. Liittimet on suunniteltu joustamaan rakenteiden yhdistämisessä, joten oli tärkeää tarkistaa kupolin symmetria ennen epoksin lisäämistä.
Vaihe 4: Laserleikkaus- ja asennuslevyt
Nyt kun kupolin luuranko on rakennettu, on aika leikata kolmion muotoiset pohjalevyt. Nämä pohjalevyt on kiinnitetty tukien pohjaan, ja niitä käytetään LED -valojen kiinnittämiseen kupoliin. Leikkasin alustan 5 mm (3/16”) paksuisesta vanerista mittaamalla viisi erilaista kolmiota, jotka ovat kupolilla: AAB (30 kolmiota), BCC (25 kolmiota), DDE (20 kolmiota), CDF (40 kolmiota)) ja EEE (5 kolmiota). Kummankin sivun mitat ja kolmioiden muoto määritettiin käyttämällä kupolilaskinta (Domerama) ja jotakin geometriaa. Kun testipohjalevyt oli leikattu palapelillä, piirsin kolmiomallin Coral Draw -sovelluksella ja leikkasin loput pohjalevyt laserleikkurilla (paljon nopeammin!). Jos sinulla ei ole pääsyä laserleikkuriin, voit piirtää pohjalevyt vanerille viivaimella ja astelevyllä ja leikata ne kaikki palapelillä. Kun pohjalevyt on leikattu, kupoli käännetään ympäri ja levyt liimataan kupoliin puuliimalla.
Vaihe 5: Yleiskatsaus elektroniikkaan
Yllä olevassa kuvassa on kaaviokuva kupolin elektroniikasta. Arduino Unoa käytetään kupolin signaalien kirjoittamiseen ja lukemiseen. Kupolin valaisemiseksi RGB -LED -nauha ajetaan kupolin päälle niin, että LED sijoitetaan jokaisen 120 kolmion kohdalle. Lisätietoja LED -nauhan toiminnasta on tässä ohjeessa. Jokainen LED voidaan käsitellä erikseen käyttämällä Arduinoa, joka tuottaa sarjatietoja ja kellosignaalin nauhalle (katso A0- ja A1 -nasta kaavamaisesti). Pelkän nauhan ja näiden kahden signaalin avulla voit saada mahtavan syttyvän kupolin. On muitakin tapoja kirjoittaa signaaleja Arduinon monille LEDeille, kuten Charlieplexing- ja shift -rekisterit.
Jotta voisin olla vuorovaikutuksessa kupolin kanssa, asetin IR -anturin jokaisen LEDin yläpuolelle. Näitä antureita käytetään havaitsemaan, kun jonkun käsi on lähellä kupolin kolmiota. Koska kupolin jokaisessa kolmiossa on oma IR -anturi ja kolmioita on 120, sinun on tehtävä jonkinlainen multipleksointi ennen Arduinoa. Päätin käyttää kuutta 24-kanavaista multiplekseriä (MUX) kupolin 120 anturissa. Tässä on ohjeet multipleksointiin, jos et tunne. 24 -kanavainen MUX vaatii viisi ohjaussignaalia. Valitsin nastat 8-12 Arduinossa, jotta voisin tehdä porttien käsittelyä (katso lisätietoja vaiheesta 10). MUX-korttien lähtö luetaan nastoilla 3-7.
Lisäsin myös viisi MIDI -lähtöä kupoliin, jotta se voisi tuottaa ääntä (vaihe 11). Toisin sanoen viisi ihmistä voi soittaa kupolia samanaikaisesti, kun jokainen lähtö toistaa eri äänen. Arduinossa on vain yksi TX -nasta, joten viisi MIDI -signaalia vaatii demultipleksoinnin. Koska MIDI -lähtö tuotetaan eri aikaan kuin IR -anturin lukema, käytin samoja ohjaussignaaleja.
Kun kaikki IR -anturin tulot on luettu Arduinoon, kupoli voi syttyä ja toistaa ääniä Arduinon ohjelmoinnin avulla. Minulla on muutama esimerkki tämän ohjeen vaiheessa 14.
Vaihe 6: LED -valojen kiinnittäminen kupoliin
Koska kupoli on niin suuri, LED -nauha on leikattava, jotta yksi LED sijoitetaan jokaiseen kolmioon. Jokainen LED on liimattu kolmioon superliimalla. LEDin kummallekin puolelle porataan pohjalevyn läpi reikä kaapeleiden kuljettamiseksi kupolin läpi. Juotin sitten kytkentäjohdon jokaiseen LED-liittimeen (5 V, maa, kello, signaali) ja syötin johdot pohjalevyn läpi. Nämä johdot leikataan niin, että ne ovat riittävän pitkiä päästäkseen kupolin seuraavaan LED -valoon. Johdot vedetään seuraavaan LED -valoon ja prosessia jatketaan. Yhdistin LEDit kokoonpanossa, joka minimoi tarvittavan langan määrän samalla kun on järkevää käsitellä LEDit myöhemmin Arduinolla. Pienempi kupoli eliminoi nauhan leikkaamisen tarpeen ja säästää paljon juotosaikaa. Toinen vaihtoehto on käyttää erillisiä RGB -LED -valoja siirtorekisterien kanssa.
Sarjaliikenne nauhalle saavutetaan käyttämällä kahta Arduinon nastaa (data- ja kellotappi). Toisin sanoen, kupolin sytyttämiseen tarvittavat tiedot välitetään yhdestä LEDistä toiseen, kun ne poistuvat datanapista. Tässä on esimerkki tästä Arduino -foorumista muokatusta koodista:
// Lisää koko kupolin määrää ja vähennä yhden värin voimakkuutta
#define numLeds 120 // LEDien lukumäärä // OUTPUT PINS // int clockPin = A1; // määritä kellon nasta int dataPin = A0; // määritä datanappi // MUUTTAJAT // int punainen [numLeds]; // Alusta taulukko LED -nauhalle int vihreä [numLeds]; // Alusta taulukko LED -nauhalle int sininen [numLeds]; // Alusta taulukko LED -nauhalle // VAKIO kaksinkertainen asteikko 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}; // murto -osa LEDien voimakkuudesta void setup () {pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); memset (punainen, 0, numLeds); memset (vihreä, 0, numLeds); memset (sininen, 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 lisäämään kupolin valovoimaa {double scale = scaleA [p]; viive (20); for (int i = 0; i <numLeds; i ++) // selaa kaikki LEDit läpi {punainen = 255 * asteikko; vihreä = 80 * asteikko; sininen = 0; } päivitystring (punainen, vihreä, sininen); // päivitä led -nauha}}
Vaihe 7: Anturikiinnityksen suunnittelu ja toteutus
Päätin käyttää infrapuna -antureita kupoliin. Näissä antureissa on IR -LED ja vastaanotin. Kun esine tulee anturin eteen, osa IR -LED -valon infrapunasäteilystä heijastuu kohti vastaanotinta. Aloitin tämän projektin tekemällä omat IR -anturit, jotka perustuivat Richardouvinan ohjeisiin. Kaikki juotos kesti aivan liian kauan, joten ostin eBaysta 120 IR -anturia, joista jokainen tuottaa digitaalisen lähdön. Anturin kynnys asetetaan potentiometrillä levylle niin, että ulostulo on korkea vain silloin, kun käsi on lähellä kyseistä kolmiota.
Jokainen kolmio koostuu vanerista valmistetusta LED-pohjalevystä, diffuusioakryylilevystä, joka on asennettu noin 2,5 cm LED-levyn yläpuolelle, ja IR-anturista. Kunkin kolmion anturi asennettiin ohuelle vanerilevylle, joka on muotoiltu viisikulmaiseksi tai kuusikulmioksi, riippuen kupolin asennosta (katso yllä oleva kuva). Porasin reikiä infrapuna-anturialustaan IR-antureiden kiinnittämistä varten ja liitin sitten maa- ja 5V-nastat lankakierrelangalla ja langankääritystyökalulla (punaiset ja mustat johdot). Maan ja 5 V: n kytkemisen jälkeen käärin pitkän langankierrejohtimen jokaiseen lähtöön (keltainen), maahan ja 5 V kulkemaan kupolin läpi.
Kuusikulma- tai viisikulmion IR -anturin kiinnikkeet epoksoitiin sitten kupolille, suoraan 3D -tulostettujen liittimien yläpuolelle, jotta lanka voisi kulkea kupolin läpi. Koska anturit olivat liittimien yläpuolella, pystyin myös käyttämään ja säätämään infrapuna -antureiden potentiometrejä, jotka ohjaavat antureiden herkkyyttä. Seuraavassa vaiheessa kuvailen, miten IR -antureiden lähdöt kytketään multipleksereihin ja luetaan Arduinoon.
Vaihe 8: Multiplexing -anturin lähtö
Koska Arduino Unossa on vain 14 digitaalista I/O -nastaa ja 6 analogista sisääntulonappia ja 120 anturisignaalia on luettava, kupoli vaatii multiplekserit lukemaan kaikki signaalit. Valitsin rakentaa viisi 24-kanavaista multiplekseria, joista kukin luki 24 IR-anturia (katso elektroniikan yleiskuva). 24-kanavainen MUX koostuu 8-kanavaisesta MUX-katkaisukortista, 16-kanavaisesta MUX-katkaisukortista ja 2-kanavaisesta MUX-kortista. Pin -otsikot juotettiin jokaiseen katkaisulautaan, jotta ne voidaan liittää prototyyppikorttiin. Yhdistin sitten langankääritystyökalulla maadoituksen, 5 V ja MUX-katkaisulevyjen ohjaussignaalitapit.
24-kanavainen MUX vaatii viisi ohjaussignaalia, jotka päätin liittää Arduinon liittimeen 8-12. Kaikki viisi 24-kanavaista MUX-vastaanotinta vastaanottavat samat ohjaussignaalit Arduinolta, joten liitin johdon Arduino-nastoista 24-kanavaiseen MUX-laitteeseen. Infrapuna-antureiden digitaaliset lähdöt on kytketty 24-kanavaisen MUX-laitteen tulotappeihin, jotta ne voidaan lukea sarjassa Arduinolle. Koska kaikissa 120 anturilähdössä on viisi erillistä nastaa lukemista varten, on hyödyllistä kuvitella, että kupoli on jaettu viiteen erilliseen osaan, jotka koostuvat 24 kolmiosta (tarkista kupolin värit kuvassa).
Käyttämällä Arduino-porttien käsittelyä voit nopeasti lisätä nastojen 8-12 multipleksereille lähettämiä ohjaussignaaleja. Olen liittänyt tähän esimerkkikoodin multipleksereiden käyttämiseen:
int numChannel = 24;
// LÄHTÖT // int s0 = 8; // MUX -ohjaus 0 - PORTbD int s1 = 9; // MUX -ohjaus 1 - PORTb int s2 = 10; // MUX -ohjaus 2 - PORTb int s3 = 11; // MUX -ohjaus 3 - PORTb int s4 = 12; // MUX -ohjaus 4 - PORTb // INPUTS // int m0 = 3; // MUX -tulo 0 int m1 = 4; // MUX -tulo 1 int m2 = 5; // MUX -tulo 2 int m3 = 6; // MUX -tulo 3 int m4 = 7; // MUX -tulo 4 // MUUTTAJAT // int arr0r; // digitaalinen lukeminen MUX0: sta int arr1r; // digitaalinen lukeminen MUX1: stä int arr2r; // digitaalinen lukeminen MUX2: sta int arr3r; // digitaalinen lukeminen MUX3: sta int arr4r; // digitaalinen luku MUX4 void setupista () {// laita asennuskoodi tähän, jotta se suoritetaan kerran: DDRB = B11111111; // asettaa Arduino -nastat 8-13 tuloiksi pinMode (s0, OUTPUT); pinMode (s1, LÄHTÖ); pinMode (s2, LÄHTÖ); pinMode (s3, LÄHTÖ); pinMode (s4, LÄHTÖ); pinMode (m0, TULO); pinMode (m1, TULO); pinMode (m2, TULO); pinMode (m3, INPUT); pinMode (m4, TULO); } void loop () {// laita pääkoodisi tänne toistettavaksi: PORTB = B00000000; // SET -ohjausnastat mux matalalle (int i = 0; i <numChannel; i ++) {// Digitaalinen lukulähtö MUX0 - MUX4 IR -anturille i // Jos IR -anturi on LO, soitin koskettaa kolmiota. arr0r = digitaalinen luku (m0); // lukeminen Mux 0: sta, IR -anturi i arr1r = digitalRead (m1); // lukeminen Mux 1: stä, IR -anturi i arr2r = digitalRead (m2); // lukeminen Mux 2: sta, IR -anturi i arr3r = digitalRead (m3); // lukeminen Mux 3: sta, IR -anturi i arr4r = digitalRead (m4); // lukeminen Mux 4: stä, IR -anturista i // TEE JOTAIN MUX -TULOILLA TAI SÄILYTÄ JÄRJESTELMÄSSÄ // PORTB ++; // MUX -lisäyksen ohjaussignaalit}}
Vaihe 9: Valon hajauttaminen akryylillä
LEDien valon hajottamiseksi hiomasin läpinäkyvää akryyliä pyöreällä kiertohiomakoneella. Hiomakone siirrettiin akryylin molemmin puolin kuvion 8 liikkeellä. Löysin tämän menetelmän olevan paljon parempi kuin "himmeä lasi" -maali.
Hionnan ja akryylin puhdistamisen jälkeen leikkasin laserleikkurilla kolmioita LEDien päälle. On mahdollista leikata akryyli akryylileikkaustyökalulla tai jopa palapelillä, jos akryyli ei halkeile. Akryyliä pidettiin LEDien päällä 5 mm paksuilla vanerisuorakulmioilla, jotka oli myös leikattu laserleikkurilla. Nämä pienet lankut liimattiin kupolin tukiin ja akryylikolmiot epoksoitiin laudoille.
Vaihe 10: Musiikin tekeminen kupolin avulla MIDI: n avulla
Halusin, että kupoli kykenee tuottamaan ääntä, joten asetin viisi MIDI -kanavaa, yhden kullekin kupolin osajoukolle. Sinun on ensin ostettava viisi MIDI -liitintä ja liitettävä se kaavion mukaisesti (katso lisätietoja tästä opetusohjelmasta Arduinon tuesta).
Koska Arduino Unossa on vain yksi lähetyssarjanappi (nasta 2, joka on merkitty TX-nastaksi), sinun on purettava signaalien multipleksointi viidelle MIDI-liittimelle. Käytin samoja ohjaussignaaleja (nasta 8-12), koska MIDI-signaalit lähetetään eri aikaan kuin silloin, kun IR-antureita luetaan Arduinoon. Nämä ohjaussignaalit lähetetään 8-kanavaiselle demultiplekserille, jotta voit hallita, mikä MIDI-liitäntä vastaanottaa Arduinon luoman MIDI-signaalin. Arduino loi MIDI -signaalit Francois Bestin luoman upean MIDI -signaalikirjaston avulla. Tässä on esimerkki koodista useiden MIDI -lähtöjen tuottamiseksi eri MIDI -liittimiin Arduino Unolla:
#include // sisällytä MIDI -kirjasto
#define numChannel 24 // Infrapunamäärä kolmioita kohti #define numSections 5 // kupolin osien lukumäärä, 24 -kanavaisen MUX -numeron määrä, MIDI -liittimien lukumäärä // OUTPUTS // int s0 = 8; // MUX -ohjaus 0 - PORTbD int s1 = 9; // MUX -ohjaus 1 - PORTb int s2 = 10; // MUX -ohjaus 2 - PORTb int s3 = 11; // MUX -ohjaus 3 - PORTb int s4 = 12; // MUX -ohjaus 4 - PORTb // INPUTS // int m0 = 3; // MUX -tulo 0 int m1 = 4; // MUX -tulo 1 int m2 = 5; // MUX -tulo 2 int m3 = 6; // MUX -tulo 3 int m4 = 7; // MUX -tulo 4 // MUUTTAJAT // int arr0r; // digitaalinen lukeminen MUX0: sta int arr1r; // digitaalinen lukeminen MUX1: stä int arr2r; // digitaalinen lukeminen MUX2: sta int arr3r; // digitaalinen lukeminen MUX3: sta int arr4r; // digitaalinen lukeminen MUX4: stä int midArr [numSections]; // Tallenna onko joku pelaajista painanut nuottia vai ei int note2play [numSections]; // Säilytä toistettava nuotti, jos anturia kosketetaan nuotissa [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; // taukoaika midi -signaalien välillä MIDI_CREATE_DEFAULT_INSTANCE (); void setup () {// laita asennuskoodi tähän, jotta se suoritetaan kerran: DDRB = B11111111; // asettaa Arduino -nastat 8-13 tuloiksi MIDI.begin (MIDI_CHANNEL_OFF); pinMode (s0, OUTPUT); pinMode (s1, LÄHTÖ); pinMode (s2, LÄHTÖ); pinMode (s3, LÄHTÖ); pinMode (s4, LÄHTÖ); pinMode (m0, TULO); pinMode (m1, TULO); pinMode (m2, TULO); pinMode (m3, INPUT); pinMode (m4, TULO); } void loop () {// laita pääkoodisi tänne toistettavaksi: PORTB = B00000000; // SET -ohjausnastat mux matalalle (int i = 0; i <numChannel; i ++) {// Digitaalinen lukulähtö MUX0 - MUX4 IR -anturille i // Jos IR -anturi on LO, soitin koskettaa kolmiota. arr0r = digitaalinen luku (m0); // lukeminen Mux 0: sta, IR -anturi i arr1r = digitalRead (m1); // lukeminen Mux 1: stä, IR -anturi i arr2r = digitalRead (m2); // lukeminen Mux 2: sta, IR -anturi i arr3r = digitalRead (m3); // lukeminen Mux 3: sta, IR -anturi i arr4r = digitalRead (m4); // lukeminen Mux 4: stä, IR -anturi i if (arr0r == 0) // Osion 0 anturi estetty {midArr [0] = 1; // Pelaaja 0 on osunut nuottiin, aseta HI niin, että pelaajalla 0 on MIDI -lähtö note2play [0] = nuotit ; // Huomautus pelata pelaajalle 0}, jos (arr1r == 0) // Osion 1 anturi oli estetty {midArr [1] = 1; // Pelaaja 0 on osunut nuottiin, aseta HI niin, että pelaajalla 0 on MIDI -lähtö note2play [1] = nuotit ; // Huomautus pelata pelaajalle 0}, jos (arr2r == 0) // Anturin osassa 2 oli estetty {midArr [2] = 1; // Pelaaja 0 on osunut nuottiin, aseta HI niin, että pelaajalla 0 on MIDI -lähtö note2play [2] = nuotit ; // Huomautus pelata pelaajalle 0}, jos (arr3r == 0) // Osan 3 anturi estettiin {midArr [3] = 1; // Pelaaja 0 on osunut nuottiin, aseta HI niin, että pelaajalla 0 on MIDI -lähtö note2play [3] = nuotit ; // Huomautus pelata pelaajalle 0}, jos (arr4r == 0) // Anturin osassa 4 estettiin {midArr [4] = 1; // Pelaaja 0 on osunut nuottiin, aseta HI niin, että pelaajalla 0 on MIDI -lähtö note2play [4] = nuotit ; // Huomautus pelata pelaajalle 0} PORTB ++; // MUX -lisäyksen ohjaussignaalit} updateMIDI (); } void updateMIDI () {PORTB = B00000000; // SET -ohjausnastat mux matalalle, jos (midArr [0] == 1) // Pelaaja 0 MIDI -lähtö {MIDI.sendNoteOn (note2play [0], 127, 1); delayMikrosekuntia (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); delayMikrosekuntia (pauseMidi); } PORTB ++; // MUX -lisäys, jos (midArr [1] == 1) // Pelaajan 1 MIDI -lähtö {MIDI.sendNoteOn (note2play [1], 127, 1); delayMikrosekuntia (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); delayMikrosekuntia (pauseMidi); } PORTB ++; // MUX -lisäys, jos (midArr [2] == 1) // Pelaajan 2 MIDI -lähtö {MIDI.sendNoteOn (note2play [2], 127, 1); delayMikrosekuntia (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); delayMikrosekuntia (pauseMidi); } PORTB ++; // MUX -lisäys, jos (midArr [3] == 1) // Pelaajan 3 MIDI -lähtö {MIDI.sendNoteOn (note2play [3], 127, 1); delayMikrosekuntia (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); delayMikrosekuntia (pauseMidi); } PORTB ++; // MUX -lisäys, jos (midArr [4] == 1) // Pelaajan 4 MIDI -lähtö {MIDI.sendNoteOn (note2play [4], 127, 1); delayMikrosekuntia (pauseMidi); MIDI.sendNoteOff (note2play [4], 127, 1); delayMikrosekuntia (pauseMidi); } midArr [0] = 0; midArr [1] = 0; midArr [2] = 0; midArr [3] = 0; midArr [4] = 0; }
Vaihe 11: Kupolin virta
Kupolissa on useita komponentteja, jotka tarvitsevat virtaa. Siksi sinun on laskettava kustakin komponentista saadut vahvistimet ostettavan virtalähteen määrittämiseksi.
LED -nauha: Käytin noin 3,75 metriä Ws2801 -LED -nauhaa, joka kuluttaa 6,4 W/metri. Tämä vastaa 24W (3,75*6,4). Muunna tämä ampeereiksi käyttämällä tehoa = virtaa*volttia (P = iV), missä V on LED -nauhan jännite, tässä tapauksessa 5 V. Siksi LED -valoista tuleva virta on 4,8A (24W/5V = 4,8A).
IR -anturit: Jokainen IR -anturi kuluttaa noin 25 mA, yhteensä 3A 120 anturille.
Arduino: 100mA, 9V
Multiplekserit: On viisi 24 -kanavaista multiplekseriä, joista jokainen koostuu 16 -kanavaisesta ja 8 -kanavaisesta multiplekseristä. Molemmat 8 -kanavaiset ja 16 -kanavaiset MUX -laitteet kuluttavat noin 100 mA. Siksi kaikkien MUX -laitteiden kokonaistehonkulutus on 1A.
Näitä komponentteja laskettaessa kokonaisvirrankulutuksen odotetaan olevan noin 9A. LED -nauhan, IR -antureiden ja multipleksereiden tulojännite on 5 V, ja Arduinolla on 9 V: n tulojännite. Siksi valitsin 12V 15A virtalähteen, 15A buck -muuntimen 12V: n muuttamiseksi 5V: ksi ja 3A buck -muuntimen 12V: n 9V: n muuntamiseksi Arduinolle.
Vaihe 12: Pyöreä kupolialusta
Kupoli lepää pyöreällä puukappaleella, jonka keskeltä on leikattu viisikulmio, joka helpottaa pääsyä elektroniikkaan. Tämän pyöreän pohjan luomiseksi leikattiin 4x6 tuuman vanerilevy puusta CNC -reitittimellä. Tässä vaiheessa voidaan käyttää myös palapeliä. Pohjan leikkaamisen jälkeen kupoli kiinnitettiin siihen pienillä 2x3”puupalikoilla.
Pohjan päälle kiinnitin virtalähteen epoksilla ja MUX- ja Buck-muuntimet, joissa on PCB-erottimet. Välikappaleet kiinnitettiin vaneriin käyttämällä EZ Lok -langasovittimia.
Vaihe 13: Pentagon Dome Base
Pyöreän pohjan lisäksi rakensin myös viisikulmion pohjan kupolille, jonka alareunassa oli lasi-ikkuna. Tämä pohja ja näköinen ikkuna valmistettiin myös vanerista, joka oli leikattu puisella CNC -reitittimellä. Pentagonin sivut on valmistettu puulaudoista, ja toisella puolella on reikä liittimien läpi. Puulaudat kiinnitetään viisikulmaiseen alustaan metallisilla kiinnikkeillä ja 2x3 lohkoliitoksella. Virtakytkin, MIDI- ja USB -liitin on kiinnitetty etupaneeliin, jonka loin laserleikkurilla. Koko viisikulmion runko ruuvataan vaiheessa 12 kuvattuun pyöreään alustaan.
Asensin ikkunan kupolin alaosaan, jotta kuka tahansa voi katsoa kupoliin nähdäkseen elektroniikan. Näyttölasi on valmistettu akryylileikkauksesta laserleikkurilla ja epoksoitu pyöreään vanerikappaleeseen.
Vaihe 14: Kupolin ohjelmointi
Kupolin ohjelmointiin on loputtomasti mahdollisuuksia. Jokainen koodisykli ottaa vastaan infrapuna -antureiden signaaleja, jotka osoittavat kolmioita, joihin joku on koskenut. Näiden tietojen avulla voit värittää kupolin millä tahansa RGB -värillä ja/tai tuottaa MIDI -signaalin. Tässä muutamia esimerkkejä ohjelmista, jotka kirjoitin kupolille:
Väritä kupoli: Jokainen kolmio kiertää neljää väriä kosketettaessa. Kun värit muuttuvat, soitetaan arpeggioa. Tämän ohjelman avulla voit värittää kupolin tuhansilla eri tavoilla.
Dome -musiikki: Kupoli on värjätty viidellä värillä, joista jokainen vastaa eri MIDI -lähtöä. Ohjelmassa voit valita, mitä nuotteja kukin kolmio soittaa. Päätin aloittaa keskellä C kupolin yläosassa ja lisätä sävelkorkeutta, kun kolmiot siirtyivät lähemmäksi pohjaa. Koska ohjelmassa on viisi lähtöä, tämä ohjelma on ihanteellinen useiden ihmisten soittamiseen kupolille samanaikaisesti. Käyttämällä MIDI -instrumenttia tai MIDI -ohjelmistoa nämä MIDI -signaalit voidaan saada kuulostamaan miltä tahansa instrumentilta.
Simon: Kirjoitin Simonista, klassisesta muistin valaistuspelistä. Satunnainen valosarja valaistaan yksi kerrallaan koko kupolin yli. Jokaisen vuoron aikana pelaajan on kopioitava sarja. Jos pelaaja vastaa sarjaa oikein, sarjaan lisätään lisävalo. Korkeat pisteet tallennetaan yhteen kupolin osista. Tämä peli on myös erittäin hauska pelata useiden ihmisten kanssa.
Pong: Miksi et pelaa pongia kupolilla? Pallo etenee kupolin poikki, kunnes se osuu melaan. Kun se tapahtuu, syntyy MIDI -signaali, joka osoittaa, että mela osuu palloon. Toisen pelaajan on sitten ohjattava mela kupolin pohjaa pitkin siten, että se osuu palloon takaisin.
Vaihe 15: Valokuvat valmiista kupolista
Pääpalkinto Arduino -kilpailussa 2016
Remix -kilpailun toinen palkinto 2016
Toinen palkinto Make it Glow -kilpailussa 2016
Suositeltava:
Interaktiivinen LED -laatta -seinä (helpompaa kuin miltä se näyttää): 7 vaihetta (kuvilla)
Interaktiivinen LED -laatta -seinä (helpompaa kuin miltä se näyttää): Tässä projektissa rakensin interaktiivisen LED -seinänäytön, jossa käytettiin Arduinoa ja 3D -painettuja osia. Halusin keksiä oman version, joka ei ollut vain edullisempi, vaan myös
Interaktiivinen LED -lamppu - Tensegrity -rakenne + Arduino: 5 vaihetta (kuvilla)
Interaktiivinen LED -lamppu | Tensegrity Structure + Arduino: Tämä pala on liikeherkkä lamppu. Minimaalisesti jännittyneenä veistoksena suunniteltu lamppu muuttaa värikokoonpanoaan koko rakenteen suunnan ja liikkeiden perusteella. Toisin sanoen sen suunnasta riippuen
Magneettinen geodeettinen planetaario: 7 vaihetta (kuvilla)
Magneettinen geodeettinen planetaario: Hei kaikki! Haluaisin opastaa sinut prosessissani luoda geodeettinen planetaario magneeteilla ja käsityölangalla! Tämän magneetin käytön syy on helppo irrottaa sateella tai huonommilla sääolosuhteilla. Tällä tavalla
DIY -interaktiivinen LED -sohvapöytä: 16 vaihetta (kuvilla)
DIY -interaktiivinen LED -sohvapöytä: Tässä opastettavassa aion näyttää sinulle, kuinka tein interaktiivisen LED -sohvapöydän askel askeleelta. Tämä hämmästyttävä pöytä luo hämmästyttävän tunnelman olohuoneessani. H
Interaktiivinen LED -pöytä: 14 vaihetta (kuvilla)
Interaktiivinen LED -pöytä: Tässä on opastettu opas siitä, miten voit tehdä oman interaktiivisen LED -pöydän käyttämällä yhtä Evil Mad Sciencitstin sarjoista. :