Kazalo:

Interaktivna geodetska LED kupola: 15 korakov (s slikami)
Interaktivna geodetska LED kupola: 15 korakov (s slikami)

Video: Interaktivna geodetska LED kupola: 15 korakov (s slikami)

Video: Interaktivna geodetska LED kupola: 15 korakov (s slikami)
Video: Камеди Клаб - Эдуард Суровый\Музыкальный кастинг | Харламов, Батрутдинов, Мартиросян 2024, Julij
Anonim
Image
Image
Interaktivna geodetska LED kupola
Interaktivna geodetska LED kupola
Interaktivna geodetska LED kupola
Interaktivna geodetska LED kupola
Interaktivna geodetska LED kupola
Interaktivna geodetska LED kupola

Zgradil sem geodetsko kupolo, sestavljeno iz 120 trikotnikov z LED in senzorjem pri vsakem trikotniku. Vsako LED lahko naslovite posamično in vsak senzor nastavite posebej za en sam trikotnik. Kupola je programirana z Arduinom, da zasveti in proizvede MIDI signal, odvisno od tega, na kateri trikotnik postavite roko.

Kupolo sem zasnoval kot zabaven zaslon, ki ljudi zanima za svetlobo, elektroniko in zvok. Ker se kupola lepo deli na pet delov, sem kupolo oblikoval tako, da ima pet ločenih izhodov MIDI, ki imajo lahko vsak drugačen zvok. Zaradi tega je kupola velikanski glasbeni instrument, idealen za predvajanje glasbe z več ljudmi hkrati. Poleg predvajanja glasbe sem kupolo programiral tudi za svetlobne predstave in igranje upodobitve Simona in Ponga. Končna struktura je premera nekaj več kot meter in visoka 70 cm, v glavnem pa je izdelana iz lesa, akrila in 3D tiskanih delov.

Na mizah in kockah LED je nekaj odličnih navodil, ki so me navdihnile za začetek tega projekta. Vendar sem hotel poskusiti razporediti LED v drugačni geometriji. Nisem si mogel zamisliti boljše strukture za projekt kot geodetska kupola, ki je tudi dobro dokumentirana na Instructables. Torej je ta projekt remiks/sestavljanje LED miz in geodetskih kupol. Spodaj so povezave do LED tabele in geodetske kupole Instructables, ki sem jih preveril na začetku projekta.

LED mize in kocke:

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

Geodetska kupola:

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

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

1. korak: Seznam zalog

Seznam zalog
Seznam zalog
Seznam zalog
Seznam zalog
Seznam zalog
Seznam zalog

Materiali:

1. Les za opornike kupole in podlago kupole (količina je odvisna od vrste in velikosti kupole)

2. Naslovljiv LED trak (16,4ft/5m naslovljiv barvni LED pixel trak 160leds Ws2801 Dc5v)

3. Arduino Uno (Atmega328 - sestavljen)

4. Prototipna plošča (univerzalno tiskano vezje z dvojno stranjo Penta Angel (7x9 cm))

5. Akril za razpršilne LED diode (ulit akrilni list, prozoren, velikosti 12 "x 12" x 0,118 ")

6. Napajanje (gonilnik za napajanje stikala Aiposen 110/220V do DC12V 30A 360W)

7. Buck pretvornik za Arduino (pretvornik Buck RioRand LM2596 DC-DC 1,23V-30V)

8. Buck pretvornik za LED in senzorje (DROK Mini električni pretvornik napetosti 15A)

9. 120 IR senzorjev (modul senzorja za izogibanje infrardečim oviram)

10. Pet 16 -kanalnih multiplekserjev (analogni/digitalni MUX prelom - CD74HC4067)

11. Šest 8 -kanalnih multiplekserjev (prekinitev multipleksera - 8 -kanalni (74HC4051))

12. Pet dvokanalnih multiplekserjev (MAX4544CPA+)

13. Žica za zavijanje žice (spajkana PCB spajkalna bakrena vrvica 0,25 mm, pločevinasta dia žica za zavijanje žice 305M 30AWG rdeča)

14. Priključna žica (trdno jedro, 22 AWG)

15. Zatiči (Gikfun 1 x 40 -polni 2,54 -milimetrski enovrstični moški zatič za glavo)

16. Pet MIDI priključkov (MIDI Jack prijazen do plošče (5-pinski DIN))

17. Deset 220 ohmskih uporov za MIDI priključke

18. Samostoječi distančniki za montažo elektronike na kupolo (stoječi distančnik Hex M3 moški x M3 ženski)

19. Adapterji za navoje za povezavo izstopajočih delov z lesom (vložek z navojem E-Z Lok, medenina, navoj za nož)

20. Epoksid ali Gorilla Superglue

21. Električni trak

22. Spajkanje

Orodja:

1. Spajkalna postaja

2. Električni vrtalnik

3. Krožna žaga

4. Orbitalni brusilnik

5. Žig žaga

6. Mitro žaga

7. Kotomer

8. 3D tiskalnik

9. Rezalniki žice

10. Orodje za zavijanje žice

11. Laserski rezalnik za rezanje LED plošč (neobvezno)

12. CNC shopbot za podnožje kupole (neobvezno)

2. korak: Oblikovanje geodetske kupole

Oblikovanje geodetske kupole
Oblikovanje geodetske kupole
Oblikovanje geodetske kupole
Oblikovanje geodetske kupole

Kot sem omenil v uvodu, obstaja več spletnih virov za izgradnjo lastne geodetske kupole. Ta spletna mesta ponujajo kupolaste kalkulatorje, ki določajo dolžino vsake strani (t.i. opornik) in število priključkov, potrebnih za katero koli vrsto kupole, ki jo želite zgraditi. Kompleksnost geodetske kupole (tj. Gostota trikotnikov) je določena z njenim razredom (1V, 2V, 3V itd.), Višja kompleksnost pa postane boljši približek popolne sferične površine. Če želite zgraditi svojo kupolo, morate najprej izbrati premer in razred kupole.

S spletnim mestom Domerama sem si pomagal oblikovati 4V kupolo, ki je bila okrnjena na 5/12 krogle s polmerom 40 cm. Za to vrsto kupole obstaja šest opornikov različnih dolžin:

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

To je skupaj 190 opornikov, ki dodajo do 2223 cm (73 čevljev) materiala. Za opornike v tej kupoli sem uporabil borov les 1x3 (3/4 "× 2-1/2"). Za povezavo opornikov sem s pomočjo Autocada oblikoval in 3D natisnil priključke. Datoteke STL so na voljo za prenos na koncu tega koraka. Število priključkov za kupolo 4V 5/12 je:

20 X 4-konektor

6 X 5-priključek

45 X 6-priključek

V naslednjem koraku opišem, kako je ta kupola zgrajena z lesenimi oporniki in 3D tiskanimi priključki, ki sem jih oblikoval.

3. korak: Konstrukcija kupole z oporniki in priključki

Konstrukcija kupole z oporniki in priključki
Konstrukcija kupole z oporniki in priključki
Konstrukcija kupole z oporniki in priključki
Konstrukcija kupole z oporniki in priključki
Konstrukcija kupole z oporniki in priključki
Konstrukcija kupole z oporniki in priključki
Konstrukcija kupole z oporniki in priključki
Konstrukcija kupole z oporniki in priključki

Z izračuni iz Domerame za kupolo 4V 5/12 sem rezala opornike s krožno žago. 190 opornikov je bilo po rezanju označenih in položenih v škatlo. 71 konektorjev (20 štiri-priključkov, 6 pet-priključkov in 45 šest-priključkov) je bilo 3D natisnjenih s pomočjo Makerbota. Leseni nosilci so bili vstavljeni v priključke v skladu z diagramom, ki ga je ustvarila Domerama. Gradnjo sem začel z vrha in se radialno premaknil navzven.

Ko so bili vsi oporniki povezani, sem odstranil enega za drugim in lesu in priključku dodal epoksid. Konektorji so bili zasnovani tako, da so fleksibilni pri povezovanju struktur, zato je bilo pomembno, da pred dodajanjem epoksida preverite simetrijo kupole.

4. korak: Lasersko rezanje in pritrditev osnovnih plošč

Lasersko rezanje in pritrditev osnovnih plošč
Lasersko rezanje in pritrditev osnovnih plošč
Lasersko rezanje in pritrditev osnovnih plošč
Lasersko rezanje in pritrditev osnovnih plošč
Lasersko rezanje in pritrditev osnovnih plošč
Lasersko rezanje in pritrditev osnovnih plošč
Lasersko rezanje in pritrditev osnovnih plošč
Lasersko rezanje in pritrditev osnovnih plošč

Zdaj, ko je okostje kupole zgrajeno, je čas, da izrežemo trikotne osnovne plošče. Te osnovne plošče so pritrjene na dno opornikov in se uporabljajo za pritrditev LED na kupolo. Najprej sem izrezal osnovne plošče iz vezanega lesa debeline 5 mm (3/16”) z merjenjem petih različnih trikotnikov na kupoli: AAB (30 trikotnikov), BCC (25 trikotnikov), DDE (20 trikotnikov), CDF (40 trikotnikov)) in EEE (5 trikotnikov). Dimenzije vsake strani in oblika trikotnikov so bili določeni s pomočjo kupolastega kalkulatorja (Domerama) in nekaj geometrije. Po rezanju testnih osnovnih plošč z vbodno žago sem s pomočjo Coral Draw narisal zasnovo trikotnika, preostale osnovne plošče pa z laserskim rezalnikom (veliko hitreje!). Če nimate dostopa do laserskega rezalnika, lahko z ravnilom in merilnikom narišete osnovne plošče na vezan les in jih vse skupaj razrežete z vbodno žago. Ko so osnovne plošče odrezane, se kupola obrne in plošče z lepilom za les prilepijo na kupolo.

5. korak: Pregled elektronike

Pregled elektronike
Pregled elektronike

Na zgornji sliki je prikazana shema elektronike za kupolo. Arduino Uno se uporablja za pisanje in branje signalov za kupolo. Za osvetlitev kupole je po kupoli speljan LED trak RGB, tako da je LED nameščena na vsakem od 120 trikotnikov. Za informacije o delovanju LED traku si oglejte ta navodila. Vsako LED lahko naslovite ločeno z Arduinom, ki proizvaja serijske podatke in signal ure za trak (glejte shemo zatičev A0 in A1). Samo s trakom in tema dvema signaloma lahko ustvarite čudovito osvetljeno kupolo. Obstajajo tudi drugi načini pisanja signalov za veliko LED iz Arduina, na primer Charlieplexing in premični registri.

Za interakcijo s kupolo sem nad vsako LED nastavil IR senzor. Ti senzorji se uporabljajo za zaznavanje, ko je roka nekoga blizu trikotnika na kupoli. Ker ima vsak trikotnik na kupoli svoj IR senzor in je 120 trikotnikov, boste morali pred Arduinom narediti nekakšno multipleksiranje. Odločil sem se, da bom za 120 senzorjev na kupoli uporabil pet 24-kanalnih multiplekserjev (MUX). Tukaj so navodila za multipleksiranje, če niste seznanjeni. 24 -kanalni MUX zahteva pet krmilnih signalov. Na Arduinu sem izbral zatiče 8-12, tako da sem lahko izvedel manipulacijo vrat (za več informacij glej korak 10). Izhod plošč MUX se odčita z uporabo zatičev 3-7.

V kupolo sem vključil tudi pet izhodov MIDI, da je lahko proizvajala zvok (11. korak). Z drugimi besedami, pet ljudi lahko hkrati igra kupolo, pri čemer vsak izhod predvaja drugačen zvok. Na Arduinu je samo en pin TX, zato pet signalov MIDI zahteva demultipleksiranje. Ker se izhod MIDI proizvaja v času, ki ni drugačen od odčitka IR senzorja, sem uporabil iste krmilne signale.

Ko so v Arduino prebrani vsi vhodi senzorja IR, se lahko kupola prižge in predvaja zvoke, ne glede na to, ali programirate Arduino. V 14. koraku imam nekaj primerov tega navodila.

Korak 6: Namestitev LED diod na kupolo

Namestitev LED diod na kupolo
Namestitev LED diod na kupolo
Namestitev LED diod na kupolo
Namestitev LED diod na kupolo
Namestitev LED diod na kupolo
Namestitev LED diod na kupolo

Ker je kupola tako velika, je treba LED trak odrezati, da se na vsak trikotnik namesti ena LED. Vsaka LED je lepljena na trikotnik s super lepilom. Na obeh straneh LED je skozi osnovno ploščo izvrtana luknja za napeljavo kablov skozi kupolo. Nato sem pri vsakem kontaktu LED (5V, ozemljitev, ura, signal) spajkal priključno žico in žice napeljal skozi osnovno ploščo. Te žice so prerezane tako, da so dovolj dolge, da dosežejo naslednjo LED na kupoli. Žice se potegnejo do naslednje LED in postopek se nadaljuje. Priključil sem LED v konfiguraciji, ki bi zmanjšala potrebno količino žice, hkrati pa je še vedno smiselno, da pozneje naslovimo LED z Arduinom. Manjša kupola bi odpravila potrebo po rezanju traku in prihranila veliko časa pri spajkanju. Druga možnost je uporaba ločenih LED RGB z registri premikov.

Serijsko komunikacijo s trakom dosežemo z dvema nožicama (podatkovni in urni pin) iz Arduina. Z drugimi besedami, podatki za osvetlitev kupole se prenašajo z ene LED na drugo, ko zapustijo podatkovni zatič. Tu je primer kode, spremenjene s tega foruma Arduino:

// Naj se celotna kupola poveča in zmanjša intenzivnost ene barve

#define numLeds 120 // Število LED diod // OUTPUT PINS // int clockPin = A1; // definiramo uro pin int dataPin = A0; // definiramo podatkovni pin // VARIABLES // int red [numLeds]; // Inicializiraj matriko za LED trak int green [numLeds]; // Inicializiraj matriko za LED trak int blue [numLeds]; // Inicializiraj matriko za LED trak // STALNA dvojna lestvicaA = {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}; // del intenzivnosti LED diode void setup () {pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); memset (rdeča, 0, numLeds); memset (zelena, 0, numLeds); memset (modra, 0, numLeds); } void updatestestring (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 ++) // zanka za povečanje svetlobne jakosti kupole {double scale = scaleA [p]; zamuda (20); for (int i = 0; i <numLeds; i ++) // kroženje po vseh LED -jih {rdeča = 255 * lestvica; zelena = 80 * lestvica; modra = 0; } updatetestring (rdeča, zelena, modra); // posodobi led trak}}

7. korak: Oblikovanje in izvedba senzorskega nosilca

Oblikovanje in izvedba senzorskega nosilca
Oblikovanje in izvedba senzorskega nosilca
Oblikovanje in izvedba nosilca senzorja
Oblikovanje in izvedba nosilca senzorja
Oblikovanje in izvedba senzorskega nosilca
Oblikovanje in izvedba senzorskega nosilca

Odločil sem se, da za kupolo uporabim IR senzorje. Ti senzorji imajo IR LED in sprejemnik. Ko predmet pride pred senzor, se nekaj IR sevanja od IR LED odbije proti sprejemniku. Ta projekt sem začel z izdelavo lastnih IR senzorjev, ki so temeljili na navodilih Richarduvine. Vse spajkanje je trajalo predolgo, zato sem pri eBayu kupil 120 IR senzorjev, od katerih vsak proizvaja digitalni izhod. Prag senzorja je nastavljen s potenciometrom na plošči, tako da je izhod visok le, ko je roka blizu tega trikotnika.

Vsak trikotnik je sestavljen iz LED vezane plošče iz vezanega lesa, lista difuznega akrila, nameščenega približno 2,5 cm nad LED ploščo, in IR senzorja. Senzor za vsak trikotnik je bil nameščen na list tankega vezanega lesa v obliki peterokotnika ali šesterokotnika, odvisno od položaja na kupoli (glej zgornjo sliko). V podnožje IR senzorja sem izvrtal luknje za namestitev IR senzorjev, nato pa ozemljitev in 5V zatiče povezal z žico za zavijanje žice in orodjem za zavijanje žice (rdeče in črne žice). Po priključitvi ozemljitve in 5 V sem na vsak izhod (rumeno), ozemljitev in 5 V ovil dolge žice za ožičenje, da sem tekel skozi kupolo.

Nosilci IR -senzorja s šestkotnikom ali peterokotnikom so bili nato epoksirani na kupolo, tik nad 3D natisnjenimi priključki, tako da je žica lahko potekala skozi kupolo. Ker sem imela senzorje nad priključki, sem lahko dostopala in prilagajala potenciometre na IR senzorjih, ki nadzorujejo občutljivost senzorjev. V naslednjem koraku bom opisal, kako so izhodi IR senzorjev povezani z multipleksorji in prebrani v Arduino.

8. korak: Izhod senzorja za multipleksiranje

Multipleksni senzorski izhod
Multipleksni senzorski izhod
Multipleksni senzorski izhod
Multipleksni senzorski izhod
Multipleksni senzorski izhod
Multipleksni senzorski izhod

Ker ima Arduino Uno samo 14 digitalnih V/I nožic in 6 analognih vhodnih zatičev in je treba prebrati 120 signalov senzorjev, kupola zahteva, da multipleksorji preberejo vse signale. Odločil sem se za izdelavo petih 24-kanalnih multiplekserjev, od katerih je vsak prebral 24 IR senzorjev (glej sliko o elektroniki). 24-kanalni MUX je sestavljen iz 8-kanalne plošče MUX, 16-kanalne plošče MUX in 2-kanalne MUX. Pin glave so bile spajkane na vsako odklopno ploščo, tako da so jih lahko povezali s prototipno ploščo. Z orodjem za zavijanje žice sem nato priključil ozemljitev, 5 V in zatiče krmilnega signala odklopnih plošč MUX.

Za 24-kanalni MUX je potrebno pet krmilnih signalov, ki sem se jih odločil povezati z nožico 8-12 na Arduinu. Vseh pet 24-kanalnih MUX sprejema enake krmilne signale od Arduina, zato sem žico z nožic Arduino priključil na 24-kanalni MUX. Digitalni izhodi IR senzorjev so povezani z vhodnimi zatiči 24-kanalnega MUX, tako da jih je mogoče zaporedno prebrati na Arduino. Ker je v vseh 120 izhodih senzorjev pet ločenih zatičev za branje, si je koristno predstavljati, da je kupola razdeljena na pet ločenih odsekov, sestavljenih iz 24 trikotnikov (preverite barve kupole na sliki).

Z manipulacijo vrat Arduino lahko hitro povečate krmilne signale, ki jih pošljejo zatiči 8-12 v multiplekserje. Tukaj sem priložil nekaj primerov kode za upravljanje multiplekserjev:

int numChannel = 24;

// IZHODI // int s0 = 8; // krmiljenje MUX 0 - PORTbD int s1 = 9; // MUX krmiljenje 1 - PORTb int s2 = 10; // MUX krmiljenje 2 - PORTb int s3 = 11; // MUX krmiljenje 3 - PORTb int s4 = 12; // krmiljenje MUX 4 - PORTb // VHODI // int m0 = 3; // MUX vhod 0 int m1 = 4; // MUX vhod 1 int m2 = 5; // MUX vhod 2 int m3 = 6; // MUX vhod 3 int m4 = 7; // MUX vhod 4 // SPREMENLJIVE // int arr0r; // digitalno branje iz MUX0 int arr1r; // digitalno branje iz MUX1 int arr2r; // digitalno branje iz MUX2 int arr3r; // digitalno branje iz MUX3 int arr4r; // digitalno branje iz MUX4 void setup () {// vnesite svojo nastavitveno kodo sem, da se enkrat zažene: DDRB = B11111111; // za vhode pinMode (s0, OUTPUT) nastavi zatiče Arduino 8 do 13; pinMode (s1, OUTPUT); pinMode (s2, OUTPUT); pinMode (s3, OUTPUT); pinMode (s4, OUTPUT); pinMode (m0, VHOD); pinMode (m1, INPUT); pinMode (m2, VHOD); pinMode (m3, VHOD); pinMode (m4, VHOD); } void loop () {// vnesite svojo glavno kodo sem, da se zažene večkrat: PORTB = B00000000; // SET krmilnih zatičev za mux nizko za (int i = 0; i <numChannel; i ++) {// Digitalni izhod za branje MUX0 - MUX4 za IR senzor i // Če je IR senzor LO, se igralec dotakne trikotnika. arr0r = digitalno branje (m0); // branje iz Mux 0, IR senzor i arr1r = digitalRead (m1); // branje iz Mux 1, IR senzor i arr2r = digitalRead (m2); // branje iz Mux 2, IR senzor i arr3r = digitalRead (m3); // branje iz Mux 3, IR senzor i arr4r = digitalRead (m4); // branje iz Mux 4, IR senzorja i // NAREDI Z VHODI MUX ALI SHRANI V NIZU TUKAJ // PORTB ++; // povečanje krmilnih signalov za MUX}}

9. korak: Razpršitev svetlobe z akrilom

Razpršena svetloba z akrilom
Razpršena svetloba z akrilom
Razpršena svetloba z akrilom
Razpršena svetloba z akrilom
Razpršena svetloba z akrilom
Razpršena svetloba z akrilom

Za razpršitev svetlobe iz LED -diod sem prozorni akril brusil s krožnim orbitalnim brusilnikom. Brusilnik je bil premaknjen po obeh straneh akrila z gibanjem številka 8. Ugotovil sem, da je ta metoda veliko boljša od barve za brizganje "matiranega stekla".

Po brušenju in čiščenju akrila sem z laserskim rezalnikom izrezal trikotnike, ki so se prilegali LED. Akril lahko razrežete z akrilnim rezalnim orodjem ali celo z vbodno žago, če akril ne razpoči. Akril je bil pritrjen na LED diode s pravokotniki iz vezanega lesa debeline 5 mm, razrezanimi tudi z laserskim rezalnikom. Te majhne deske so bile prilepljene na opornike na kupoli, akrilni trikotniki pa na epoksi.

10. korak: Ustvarjanje glasbe z kupolo z uporabo MIDI

Ustvarjanje glasbe z kupolo z uporabo MIDI
Ustvarjanje glasbe z kupolo z uporabo MIDI
Ustvarjanje glasbe z kupolo z uporabo MIDI
Ustvarjanje glasbe z kupolo z uporabo MIDI
Ustvarjanje glasbe z kupolo z uporabo MIDI
Ustvarjanje glasbe z kupolo z uporabo MIDI

Želel sem, da bi kupola lahko proizvajala zvok, zato sem postavil pet MIDI kanalov, po enega za vsako podskupino kupole. Najprej morate kupiti pet priključkov MIDI in jih povezati, kot je prikazano na shemi (za več informacij glejte to vadnico iz podpore Arduino).

Ker je na Arduino Uno samo en zaporedni oddajni pin (pin 2, označen kot pin TX), morate de-multipleksirati signale, ki se pošiljajo na pet priključkov MIDI. Uporabil sem enake krmilne signale (pin 8-12), ker se MIDI signali pošiljajo v drugačnem času kot pri branju IR senzorjev v Arduino. Ti nadzorni signali se pošljejo v 8-kanalni demultiplekser, tako da lahko nadzorujete, kateri priključek MIDI sprejema signal MIDI, ki ga ustvari Arduino. MIDI signale je ustvaril Arduino s čudovito knjižnico signalov MIDI, ki jo je ustvaril Francois Best. Tu je nekaj primerov kode za izdelavo več izhodov MIDI na različne priključke MIDI z Arduino Uno:

#include // vključi knjižnico MIDI

#define numChannel 24 // Število IR na trikotnik #define numSections 5 // število odsekov v kupoli, število 24 -kanalnih MUX, število priključkov MIDI // IZHODI // int s0 = 8; // krmiljenje MUX 0 - PORTbD int s1 = 9; // MUX krmiljenje 1 - PORTb int s2 = 10; // MUX krmiljenje 2 - PORTb int s3 = 11; // MUX krmiljenje 3 - PORTb int s4 = 12; // krmiljenje MUX 4 - PORTb // VHODI // int m0 = 3; // MUX vhod 0 int m1 = 4; // MUX vhod 1 int m2 = 5; // MUX vhod 2 int m3 = 6; // MUX vhod 3 int m4 = 7; // MUX vhod 4 // SPREMENLJIVE // int arr0r; // digitalno branje iz MUX0 int arr1r; // digitalno branje iz MUX1 int arr2r; // digitalno branje iz MUX2 int arr3r; // digitalno branje iz MUX3 int arr4r; // digitalno branje iz MUX4 int midArr [numSections]; // Shrani, ali je zapisek pritisnil eden od igralcev int note2play [numSections]; // Shranite opombo za predvajanje, če se dotaknete senzorja int notes [numChannel] = {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83}; int pauseMidi = 4000; // čas premora med midi signali MIDI_CREATE_DEFAULT_INSTANCE (); void setup () {// tukaj vnesite nastavitveno kodo, ki jo je treba zagnati enkrat: DDRB = B11111111; // nastavi vtiče Arduino 8 do 13 kot vhodne MIDI.begin (MIDI_CHANNEL_OFF); pinMode (s0, OUTPUT); pinMode (s1, OUTPUT); pinMode (s2, OUTPUT); pinMode (s3, OUTPUT); pinMode (s4, OUTPUT); pinMode (m0, VHOD); pinMode (m1, INPUT); pinMode (m2, VHOD); pinMode (m3, VHOD); pinMode (m4, VHOD); } void loop () {// vnesite svojo glavno kodo sem, da se zažene večkrat: PORTB = B00000000; // SET krmilnih zatičev za mux nizko za (int i = 0; i <numChannel; i ++) {// Digitalni izhod za branje MUX0 - MUX4 za IR senzor i // Če je IR senzor LO, se igralec dotakne trikotnika. arr0r = digitalno branje (m0); // branje iz Mux 0, IR senzor i arr1r = digitalRead (m1); // branje iz Mux 1, IR senzor i arr2r = digitalRead (m2); // branje iz Mux 2, IR senzor i arr3r = digitalRead (m3); // branje iz Mux 3, IR senzor i arr4r = digitalRead (m4); // branje iz Mux 4, IR senzor i if (arr0r == 0) // Senzor na odseku 0 je bil blokiran {midArr [0] = 1; // Igralec 0 je zadel noto, nastavite HI tako, da je izhod MIDI za igralca 0 note2play [0] = note ; // Opomba za predvajanje za Igralca 0} če (arr1r == 0) // Senzor v 1. razdelku je bil blokiran {midArr [1] = 1; // Igralec 0 je zadel noto, nastavite HI tako, da je izhod MIDI za igralca 0 note2play [1] = note ; // Opomba za predvajanje za igralca 0} če (arr2r == 0) // Senzor v 2. razdelku je bil blokiran {midArr [2] = 1; // Igralec 0 je zadel noto, nastavite HI tako, da je izhod MIDI za igralca 0 note2play [2] = note ; // Opomba za predvajanje za Igralca 0} če (arr3r == 0) // Senzor v odseku 3 je bil blokiran {midArr [3] = 1; // Igralec 0 je zadel noto, nastavite HI tako, da je izhod MIDI za igralca 0 note2play [3] = note ; // Opomba za predvajanje za igralca 0} če (arr4r == 0) // Senzor na odseku 4 je bil blokiran {midArr [4] = 1; // Igralec 0 je zadel noto, nastavite HI tako, da bo MIDI izhod za igralca 0 note2play [4] = note ; // Opomba za predvajanje za Player 0} PORTB ++; // povečanje krmilnih signalov za MUX} updateMIDI (); } void updateMIDI () {PORTB = B00000000; // SET kontrolnih nožic za mux low if (midArr [0] == 1) // MIDI izhod predvajalnika 0 {MIDI.sendNoteOn (note2play [0], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // povečanje MUX if (midArr [1] == 1) // MIDI izhod predvajalnika 1 {MIDI.sendNoteOn (note2play [1], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // povečanje MUX if (midArr [2] == 1) // MIDI izhod predvajalnika 2 {MIDI.sendNoteOn (note2play [2], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // povečanje MUX if (midArr [3] == 1) // MIDI izhod predvajalnika 3 {MIDI.sendNoteOn (note2play [3], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // povečanje MUX if (midArr [4] == 1) // MIDI izhod predvajalnika 4 {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; }

11. korak: Napajanje kupole

Napajanje kupole
Napajanje kupole
Napajanje kupole
Napajanje kupole
Napajanje kupole
Napajanje kupole
Napajanje kupole
Napajanje kupole

V kupoli je treba napajati več komponent. Zato boste morali izračunati ojačevalnike, porabljene iz vsake komponente, da ugotovite napajanje, ki ga potrebujete za nakup.

LED trak: Uporabil sem približno 3,75 metra LED traku Ws2801, ki porabi 6,4 W/meter. To ustreza 24 W (3,75*6,4). Če želite to pretvoriti v ojačevalnike, uporabite Power = current*volts (P = iV), kjer je V napetost LED traku, v tem primeru 5V. Zato je tok, ki ga črpajo LED, 4,8A (24W/5V = 4,8A).

IR senzorji: Vsak IR senzor porabi približno 25 mA, kar skupaj znaša 3A za 120 senzorjev.

Arduino: 100mA, 9V

Multiplekserji: Obstaja pet 24 -kanalnih multiplekserjev, od katerih je vsak sestavljen iz 16 -kanalnega in 8 -kanalnega multiplekserja. 8 -kanalni in 16 -kanalni MUX porabita vsak približno 100 mA. Zato je skupna poraba energije vseh MUX 1A.

Če seštejemo te komponente, bo skupna poraba energije predvidoma okoli 9A. LED trak, IR senzorji in multiplekserji imajo vhodno napetost pri 5V, Arduino pa 9V vhodno napetost. Zato sem izbral napajalnik 12V 15A, pretvornik 15A dolar za pretvorbo 12V v 5V in pretvornik 3A buck za pretvorbo 12V v 9V za Arduino.

12. korak: Krožna kupolasta podlaga

Krožna kupolasta podlaga
Krožna kupolasta podlaga
Krožna kupolasta podlaga
Krožna kupolasta podlaga
Krožna kupolasta podlaga
Krožna kupolasta podlaga

Kupola počiva na krožnem kosu lesa s peterokotom, izrezanim na sredini za lažji dostop do elektronike. Za izdelavo te okrogle podlage smo s pomočjo CNC usmerjevalnika za les razrezali list vezanega lesa velikosti 4x6 '. Za ta korak bi lahko uporabili tudi sestavljanko. Po rezanju podstavka je bila kupola pritrjena nanjo z majhnimi 2x3”palicami lesa.

Na vrh podstavka sem pritrdil napajalnik z epoksidom ter pretvornike MUX in Buck z distančniki za PCB. Distančniki so bili pritrjeni na vezan les s pomočjo navojnih adapterjev E-Z Lok.

13. korak: Pentagonova kupolasta baza

Dome Base Pentagon
Dome Base Pentagon
Dome Base Pentagon
Dome Base Pentagon
Dome Base Pentagon
Dome Base Pentagon

Poleg okrogle podlage sem za kupolo izdelal še osnovo peterokotnika z oknom na spodnjem delu ogledala. Ta podstavek in okno sta bila narejena tudi iz vezanega lesa, izrezanega z lesenim CNC usmerjevalnikom. Strani peterokotnika so narejeni iz lesenih desk, na eni strani pa je luknja za prehod spojnikov. Lesene deske so s kovinskimi nosilci in 2x3 blokovnimi spoji pritrjene na osnovo peterokotnika. Stikalo za vklop, priključki MIDI in priključek USB so pritrjeni na sprednjo ploščo, ki sem jo ustvaril z laserskim rezalnikom. Celotna osnova peterokotnika je privita na krožno podlago, opisano v koraku 12.

Na dno kupole sem namestil okno, tako da lahko vsakdo pogleda gor v kupolo in si ogleda elektroniko. Ogledalo je izdelano iz akrila, razrezanega z laserskim rezalnikom, in epoksirano na okrogel kos vezanega lesa.

14. korak: Programiranje kupole

Možnosti programiranja kupole so neskončne. Vsak cikel kode sprejema signale IR senzorjev, ki označujejo trikotnike, ki se jih je nekdo dotaknil. S temi informacijami lahko kupolo obarvate s katero koli barvo RGB in/ali ustvarite signal MIDI. Tukaj je nekaj primerov programov, ki sem jih napisal za kupolo:

Barva kupole: Vsak trikotnik se dotakne štirih barv. Ko se barve spreminjajo, se igra arpeggio. S tem programom lahko barvate kupolo na tisoče različnih načinov.

Kupolna glasba: Kupola je obarvana s petimi barvami, od katerih vsak ustreza drugemu izhodu MIDI. V programu lahko izberete, katere note igra vsak trikotnik. Odločil sem se, da bom začel na sredini C na vrhu kupole in povečal nagib, ko so se trikotniki približali podnožju. Ker je na voljo pet izhodov, je ta program idealen za več ljudi, ki hkrati igrajo kupolo. Z uporabo instrumenta MIDI ali programske opreme MIDI lahko te MIDI signale zvenijo kot kateri koli instrument.

Simon: Napisal sem upodobitev Simona, klasične igre za osvetljevanje spomina. Naključno zaporedje luči se prižge ena za drugo po celotni kupoli. Pri vsakem potezu mora igralec kopirati zaporedje. Če se igralec pravilno ujema z zaporedjem, se zaporedju doda dodatna luč. Najvišja ocena je shranjena na enem od odsekov kupole. To igro je tudi zelo zabavno igrati z več ljudmi.

Pong: Zakaj se ne bi igrali pong na kupoli? Krogla se širi po kupoli, dokler ne zadene vesla. Ko se to zgodi, se pojavi signal MIDI, ki kaže, da je veslo zadelo žogo. Drugi igralec mora nato veslo usmeriti vzdolž dna kupole, tako da zadene žogo nazaj.

Korak 15: Fotografije dokončane kupole

Fotografije Completed Dome
Fotografije Completed Dome
Fotografije Completed Dome
Fotografije Completed Dome
Fotografije Completed Dome
Fotografije Completed Dome
Fotografije Completed Dome
Fotografije Completed Dome
Natečaj Arduino 2016
Natečaj Arduino 2016
Natečaj Arduino 2016
Natečaj Arduino 2016

Velika nagrada na tekmovanju Arduino 2016

Remix natečaj 2016
Remix natečaj 2016
Remix natečaj 2016
Remix natečaj 2016

Druga nagrada na tekmovanju za remikse 2016

Naj bo tekmovanje Glow 2016
Naj bo tekmovanje Glow 2016
Naj bo tekmovanje Glow 2016
Naj bo tekmovanje Glow 2016

Druga nagrada na tekmovanju Make it Glow 2016

Priporočena: