Cuprins:
- Pasul 1: Lista de aprovizionare
- Pasul 2: Proiectarea cupolei geodezice
- Pasul 3: Construirea cupolei cu suporturi și conectori
- Pasul 4: tăiere cu laser și montarea plăcilor de bază
- Pasul 5: Prezentare electronică
- Pasul 6: Montarea LED-urilor pe cupolă
- Pasul 7: Proiectarea și implementarea montării senzorului
- Pasul 8: ieșire senzor multiplexare
- Pasul 9: Difuzarea luminii cu acrilic
- Pasul 10: Crearea muzicii cu domul folosind MIDI
- Pasul 11: Alimentarea domului
- Pasul 12: Baza circulară a cupolei
- Pasul 13: baza cupolei Pentagonului
- Pasul 14: Programarea domului
- Pasul 15: Fotografii cu Dom completat
Video: Cupolă interactivă geodezică cu LED: 15 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Am construit o cupolă geodezică formată din 120 de triunghiuri cu LED și senzor la fiecare triunghi. Fiecare LED poate fi adresat individual și fiecare senzor este reglat special pentru un singur triunghi. Domul este programat cu un Arduino pentru a se aprinde și a produce un semnal MIDI, în funcție de triunghiul pe care îl puneți.
Am proiectat cupola pentru a fi un afișaj distractiv, care îi atrage pe oameni interesați de lumină, electronică și sunet. Deoarece cupola se împarte frumos în cinci părți, am proiectat cupola pentru a avea cinci ieșiri MIDI separate care pot avea fiecare un sunet diferit. Acest lucru face ca domul să fie un instrument muzical uriaș, ideal pentru a cânta muzică cu mai mulți oameni simultan. Pe lângă redarea de muzică, am programat și cupola pentru spectacole de lumină și redarea unei interpretări a lui Simon și Pong. Structura finală are puțin mai mult de un metru în diametru și 70 cm înălțime și este construită în principal din lemn, acril și piese imprimate 3D.
Există câteva instrumente minunate pe mesele și cuburile LED care m-au inspirat să încep acest proiect. Cu toate acestea, am vrut să încerc să aranjez LED-urile într-o altă geometrie. Nu m-aș putea gândi la o structură mai bună pentru proiect decât o cupolă geodezică, care este, de asemenea, bine documentată pe Instructables. Deci, acest proiect este un remix / mashup de tabele cu LED-uri și domuri geodezice. Mai jos sunt link-uri către tabelul cu LED-uri și Instructabile pentru cupola geodezică pe care le-am verificat la începutul proiectului.
Mese și cuburi LED:
www.instructables.com/id/RGB-LED-Pixel-Touc…
www.instructables.com/id/Touch-LED-Table-Re…
www.instructables.com/id/Led-Cube-8x8x8/
www.instructables.com/id/500-LED-Pixel-RGB-…
Cupola geodezică:
www.instructables.com/id/Folding-Geodesic-D…
www.instructables.com/id/Geodesic-dome-kit/
Pasul 1: Lista de aprovizionare
Materiale:
1. Lemn pentru stâlpi de cupolă și baza cupolei (cantitatea depinde de tipul și dimensiunea cupolei)
2. Banda LED adresabilă (16,4 ft / 5m bandă LED color Pixel adresabilă 160leds Ws2801 Dc5v)
3. Arduino Uno (Atmega328 - asamblat)
4. Placă prototip (Penta Angel Double-Side Prototype PCB Universal (7x9cm))
5. Acrilic pentru difuzarea LED-urilor (foaie de acril turnat, transparent, dimensiune 12 "x 12" x 0,118 ")
6. Sursa de alimentare (Aiposen 110 / 220V la DC12V 30A 360W Driver sursa de alimentare)
7. Convertor Buck pentru Arduino (RioRand LM2596 DC-DC Buck Converter 1.23V-30V)
8. Convertor Buck pentru LED-uri și senzori (DROK Mini Electric Buck Voltage Converter 15A)
9. 120 senzori IR (modul senzor infraroșu pentru evitarea obstacolelor)
10. Cinci multiplexoare pe 16 canale (Analog / Digital MUX Breakout - CD74HC4067)
11. Șase multiplexoare pe 8 canale (Multiplexer Breakout - 8 Channel (74HC4051))
12. Cinci multiplexoare cu 2 canale (MAX4544CPA +)
13. Sârmă de înfășurat sârmă (PCB de lipit 0,25 mm din tablă de cablu de cupru Dia Sârmă de ambalare a firului 305M 30AWG Roșu)
14. Sârmă de conectare (solid core, 22 AWG)
15. Pin Headers (Gikfun 1 x 40 Pin 2,54mm Single Row Breakaway Male Pin Header)
16. Cinci mufe MIDI (mufă MIDI compatibilă cu Breadboard (DIN cu 5 pini))
17. Zece rezistențe de 220ohm pentru mufe MIDI
18. Distanțieri stand-off pentru montarea electronice pe cupolă (distanțier stand-off Hex M3 tată x M3 tată)
19. Adaptoare pentru fire pentru conectarea stand-off-urilor la lemn (insert filetat E-Z Lok, alamă, fir cuțit)
20. Epoxidic sau Gorilla Superglue
21. Bandă electrică
22. lipit
Instrumente:
1. Stație de lipit
2. Burghiu electric
3. Ferăstrău circular
4. Șlefuitor orbital
5. Fierăstrău
6. Mitre a văzut
7. Protractor
8. Imprimantă 3D
9. Freze de sârmă
10. Instrument de înfășurare a firelor
11. Cutter laser pentru tăierea plăcilor LED (opțional)
12. Magazin CNC pentru baza cupolei (opțional)
Pasul 2: Proiectarea cupolei geodezice
După cum am menționat în introducere, există mai multe surse online pentru construirea propriei cupole geodezice. Aceste site-uri oferă calculatoare de cupole care determină lungimea fiecărei părți (adică strut) și numărul de conectori necesari pentru orice tip de cupolă pe care doriți să o construiți. Complexitatea unei cupole geodezice (adică densitatea triunghiurilor) este specificată de clasa sa (1V, 2V, 3V și așa mai departe), complexitatea mai mare devenind o aproximare mai bună a unei suprafețe sferice perfecte. Pentru a vă construi propria cupolă, trebuie mai întâi să selectați un diametru și o clasă a cupolei.
Am folosit un site numit Domerama pentru a mă ajuta să proiectez o cupolă de 4V care a fost trunchiată la 5/12 dintr-o sferă cu raza de 40cm. Pentru acest tip de cupolă, există șase bare de lungime diferite:
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
Adică un total de 190 de suporturi care adună până la 2223 cm (73 ft) de material. Am folosit cherestea de pin 1x3 (3/4 "× 2-1 / 2") pentru tijele din această cupolă. Pentru a conecta struturile, am proiectat și am imprimat conectori 3D utilizând Autocad. Fișierele STL sunt disponibile pentru descărcare la sfârșitul acestui pas. Numărul de conectori pentru o cupolă 4V 5/12 este:
20 X 4-conector
Conector 6 X 5
Conector 45 X 6
În pasul următor, descriu modul în care această cupolă este construită cu suporturi de lemn și conectorii imprimați 3D pe care i-am proiectat.
Pasul 3: Construirea cupolei cu suporturi și conectori
Folosind calculele de la Domerama pentru o cupolă 4V 5/12, am tăiat tijele folosind un ferăstrău circular. Cele 190 de strunguri au fost etichetate și plasate într-o cutie după tăiere. Cei 71 de conectori (20 de patru conectori, 6 cinci conectori și 45 de șase conectori) au fost imprimați 3D folosind un Makerbot. Suporturile de lemn au fost inserate în conectori conform schemei create de Domerama. Am început construcția de sus și m-am deplasat radial spre exterior.
După ce toate strungurile au fost conectate, am îndepărtat câte un strut la rând și am adăugat epoxidic la lemn și conector. Conectorii au fost proiectați pentru a avea flexibilitate în modul în care au conectat structurile, deci a fost important să verificați simetria cupolei înainte de a adăuga orice epoxidic.
Pasul 4: tăiere cu laser și montarea plăcilor de bază
Acum că scheletul cupolei este construit, este timpul să tăiați plăcile de bază triunghiulare. Aceste plăci de bază sunt atașate la partea inferioară a suporturilor și sunt utilizate pentru a monta LED-urile pe cupolă. Am tăiat inițial plăcile din placaj gros de 5 mm (3/16”) măsurând cele cinci triunghiuri diferite care sunt pe cupolă: AAB (30 de triunghiuri), BCC (25 de triunghiuri), DDE (20 de triunghiuri), CDF (40 de triunghiuri)) și EEE (5 triunghiuri). Dimensiunile fiecărei părți și forma triunghiurilor au fost determinate folosind un calculator dom (Domerama) și o anumită geometrie. După ce am tăiat plăcile de bază cu un ferăstrău, am desenat triunghiul folosind Coral Draw și am tăiat plăcile de bază rămase cu un tăietor laser (mult mai rapid!). Dacă nu aveți acces la un tăietor cu laser, puteți desena plăcile de bază pe placaj folosind o riglă și un raportor și le puteți tăia pe toate cu un ferăstrău. Odată ce plăcile de bază sunt tăiate, cupola este răsturnată și plăcile sunt lipite de cupolă folosind lipici pentru lemn.
Pasul 5: Prezentare electronică
În figura de mai sus este prezentată o schemă a electronicii pentru cupolă. Un Arduino Uno este utilizat pentru scrierea și citirea semnalelor pentru cupolă. Pentru a lumina cupola, o bandă LED RGB este rulată peste cupolă, astfel încât un LED să fie poziționat la fiecare dintre cele 120 de triunghiuri. Pentru informații despre modul în care funcționează o bandă LED, consultați acest instructable. Fiecare LED poate fi adresat separat folosind Arduino, care produce date seriale și semnal de ceas pentru bandă (vezi pinul A0 și A1 în schemă). Cu banda și aceste două semnale singure, puteți avea o cupolă minunată de iluminare. Există alte modalități de a scrie semnale pentru o mulțime de LED-uri de la un Arduino, cum ar fi Charlieplexing și registre de schimbare.
Pentru a interacționa cu cupola, am configurat un senzor IR deasupra fiecărui LED. Acești senzori sunt folosiți pentru a detecta când mâna cuiva este aproape de un triunghi de pe cupolă. Deoarece fiecare triunghi de pe cupolă are propriul său senzor IR și există 120 de triunghiuri, va trebui să faceți un fel de multiplexare înainte de Arduino. Am decis să folosesc cinci multiplexoare cu 24 de canale (MUX) pentru cei 120 de senzori de pe cupolă. Iată un instructable despre multiplexare, dacă nu sunteți familiarizați. Un MUX cu 24 de canale necesită cinci semnale de control. Am ales pinii 8-12 pe Arduino, așa că aș putea face manipularea portului (consultați Pasul 10 pentru mai multe informații). Ieșirea plăcilor MUX este citită folosind pinii 3-7.
De asemenea, am inclus cinci ieșiri MIDI pe dom, astfel încât să poată produce sunet (Pasul 11). Cu alte cuvinte, cinci persoane pot juca domul simultan cu fiecare ieșire redând un sunet diferit. Există un singur pin TX pe Arduino, deci cinci semnale MIDI necesită demultiplexare. Deoarece ieșirea MIDI este produsă la un moment diferit de citirea senzorului IR, am folosit aceleași semnale de control.
După ce toate intrările senzorului IR sunt citite în Arduino, cupola se poate aprinde și poate reda sunete, oricum programați Arduino. Am câteva exemple în Pasul 14 al acestui instructiv.
Pasul 6: Montarea LED-urilor pe cupolă
Deoarece cupola este atât de mare, banda LED trebuie tăiată pentru a plasa câte un LED pe fiecare triunghi. Fiecare LED este lipit pe triunghi folosind super lipici. Pe ambele părți ale LED-ului, o gaură este forată prin placa de bază pentru ca cablurile să fie trecute prin cupolă. Apoi am lipit firul de conectare la fiecare contact de pe LED (5V, masă, ceas, semnal) și alimentez firele prin placa de bază. Aceste fire sunt tăiate astfel încât să fie suficient de lungi pentru a ajunge la următorul LED de pe cupolă. Firele sunt trase la următorul LED și procesul este continuat. Am conectat LED-urile într-o configurație care ar minimiza cantitatea de sârmă necesară, în timp ce avea încă sens pentru adresarea LED-urilor folosind Arduino ulterior. O cupolă mai mică ar elimina necesitatea tăierii benzii și ar economisi mult timp lipind. O altă opțiune este utilizarea LED-urilor RGB separate cu registre de schimbare.
Comunicarea în serie către bandă se realizează folosind doi pini (un pin de date și ceas) de la Arduino. Cu alte cuvinte, datele pentru iluminarea cupolei sunt transmise de la un LED la altul pe măsură ce părăsește pinul de date. Iată un exemplu de cod modificat din acest forum Arduino:
// Faceți ca întreaga cupolă să crească și să scadă intensitatea unei singure culori
#define numLeds 120 // Număr de LED-uri // PINI DE IEȘIRE // int clockPin = A1; // definește ceasul pin int dataPin = A0; // definește pinul de date // VARIABILE // int red [numLeds]; // Inițializați tabloul pentru benzi LED int verde [numLeds]; // Inițializați tabloul pentru banda LED int albastru [numLeds]; // Inițializați matricea pentru bandă LED // Scală dublă CONSTANTA = {0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 1, 0,9, 0,8, 0,7, 0,6, 0,5, 0,4, 0,3, 0,2, 0,1}; // fracțiunea de intensitate a LED-urilor void setup () {pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); memset (roșu, 0, numLeds); memset (verde, 0, numLeds); memset (albastru, 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 pentru creșterea intensității luminii domului {scale duble = scaleA [p]; întârziere (20); for (int i = 0; i <numLeds; i ++) // ciclu prin toate LED-urile {roșu = 255 * scară; verde = 80 * scară; albastru = 0; } updatestring (roșu, verde, albastru); // actualizați banda led}}
Pasul 7: Proiectarea și implementarea montării senzorului
Am decis să folosesc senzori IR pentru cupolă. Acești senzori au un LED IR și un receptor. Când un obiect ajunge în fața senzorului, o anumită radiație IR de la LED-ul IR este reflectată către receptor. Am început acest proiect făcându-mi proprii senzori IR, care se bazau pe instrucțiunile lui Richardouvina. Toate lipirile au durat prea mult, așa că am achiziționat 120 de senzori IR de la eBay care produc fiecare o ieșire digitală. Pragul senzorului este setat cu un potențiometru pe placă, astfel încât ieșirea să fie ridicată numai atunci când o mână este aproape de triunghiul respectiv.
Fiecare triunghi constă dintr-o placă de bază din placaj LED, o foaie de acril difuz montată la aproximativ 2,5 cm deasupra plăcii LED și un senzor IR. Senzorul pentru fiecare triunghi a fost montat pe o foaie de placaj subțire în formă de pentagon sau hexagon în funcție de poziția de pe cupolă (vezi figura de mai sus). Am făcut găuri în baza senzorului IR pentru a monta senzorii IR și apoi am conectat pământul și pinii de 5V cu sârmă de înfășurare și o unealtă de înfășurat sârmă (fire roșii și negre). După conectarea la sol și 5V, am înfășurat sârmă lungă de înfășurare pe fiecare ieșire (galben), masă și 5V pentru a trece prin cupolă.
Suporturile senzorului IR hexagonale sau pentagonale au fost apoi epoxizate la cupolă, chiar deasupra conectorilor imprimați 3D, astfel încât firul să poată trece prin cupolă. Având senzorii deasupra conectorilor, am putut accesa și regla potențiometrele de pe senzorii IR care controlează sensibilitatea senzorilor. În pasul următor, voi descrie modul în care ieșirile senzorilor IR sunt conectate la multiplexoare și citite în Arduino.
Pasul 8: ieșire senzor multiplexare
Deoarece Arduino Uno are doar 14 pini I / O digitale și 6 pini de intrare analogici și există 120 de semnale de senzor care trebuie citite, cupola necesită multiplexoare pentru a citi toate semnalele. Am ales să construiesc cinci multiplexoare cu 24 de canale, fiecare dintre acestea citind 24 din senzorii IR (a se vedea figura de prezentare electronică). MUX-ul cu 24 de canale constă dintr-o placă de decodare MUX cu 8 canale, placă de decodare MUX cu 16 canale și MUX cu 2 canale. Anteturile de pin au fost lipite pe fiecare placă de separare, astfel încât să poată fi conectate la placa prototip. Folosind un instrument de înfășurare cu sârmă, am conectat apoi solul, 5V și pinii de semnal de control ai plăcilor MUX.
Un MUX cu 24 de canale necesită cinci semnale de control, pe care le-am ales să le conectez la pinul 8-12 de pe Arduino. Toți cei cinci MUX cu 24 de canale primesc aceleași semnale de control de la Arduino, așa că am conectat firul de la pinii Arduino la MUX-ul cu 24 de canale. Ieșirile digitale ale senzorilor IR sunt conectate la pinii de intrare ai MUX-ului cu 24 de canale, astfel încât să poată fi citite în serie pe Arduino. Deoarece există cinci pini separați pentru citire în toate cele 120 de ieșiri ale senzorului, este util să vă imaginați că cupola este împărțită în cinci secțiuni separate formate din 24 de triunghiuri (verificați culorile cupolei din figură).
Folosind manipularea portului Arduino, puteți incrementa rapid semnalele de control trimise de pinii 8-12 către multiplexoare. Am atașat câteva exemple de cod pentru operarea multiplexoarelor aici:
int numChannel = 24;
// IEȘIRI // int s0 = 8; // control MUX 0 - PORTbD int s1 = 9; // control MUX 1 - PORTb int s2 = 10; // control MUX 2 - PORTb int s3 = 11; // control MUX 3 - PORTb int s4 = 12; // MUX control 4 - PORTb // INPUTS // int m0 = 3; // Intrare MUX 0 int m1 = 4; // intrare MUX 1 int m2 = 5; // Intrare MUX 2 int m3 = 6; // Intrare MUX 3 int m4 = 7; // intrare MUX 4 // VARIABILE // int arr0r; // citire digitală din MUX0 int arr1r; // citire digitală din MUX1 int arr2r; // citire digitală din MUX2 int arr3r; // citire digitală din MUX3 int arr4r; // citire digitală din MUX4 void setup () {// puneți codul de configurare aici, pentru a rula o dată: DDRB = B11111111; // setează pinii Arduino 8-13 ca intrări 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 () {// puneți codul principal aici, pentru a rula în mod repetat: PORTB = B00000000; // SET pinii de control pentru mux low pentru (int i = 0; i <numChannel; i ++) {// Ieșire digitală de citire a MUX0 - MUX4 pentru senzorul IR i // Dacă senzorul IR este LO, triunghiul este atins de jucător. arr0r = DigitalRead (m0); // citire din Mux 0, senzor IR i arr1r = digitalRead (m1); // citire din Mux 1, senzor IR i arr2r = digitalRead (m2); // citire din Mux 2, senzor IR i arr3r = digitalRead (m3); // citire din Mux 3, senzor IR i arr4r = digitalRead (m4); // citire din Mux 4, senzor IR i // FĂ CEVA CU INTRĂRI MUX SAU DEPOZITĂ ÎN ARRAY AICI // PORTB ++; // creșterea semnalelor de control pentru MUX}}
Pasul 9: Difuzarea luminii cu acrilic
Pentru a difuza lumina de la LED-uri, am șlefuit acrilic transparent cu o șlefuitoare orbitală circulară. Șlefuitorul a fost mutat peste ambele părți ale acrilului printr-o mișcare de figura 8. Am găsit că această metodă este mult mai bună decât vopseaua spray cu „sticlă mată”.
După șlefuirea și curățarea acrilului, am folosit un tăietor cu laser pentru a tăia triunghiuri pentru a se potrivi peste LED-uri. Este posibil să tăiați acrilul folosind un instrument de tăiere acrilic sau chiar un ferăstrău dacă acrilul nu se sparge. Acrilicul a fost ținut deasupra LED-urilor de dreptunghiuri de placaj groase de 5 mm tăiate, de asemenea, cu un tăietor laser. Aceste scânduri mici au fost lipite de suporturile de pe cupolă, iar triunghiurile acrilice au fost epoxidate pe scânduri.
Pasul 10: Crearea muzicii cu domul folosind MIDI
Am vrut ca domul să fie capabil să producă sunet, așa că am configurat cinci canale MIDI, unul pentru fiecare subset al domului. Mai întâi trebuie să achiziționați cinci mufe MIDI și să le conectați așa cum se arată în schemă (consultați acest tutorial de la suportul Arduino pentru mai multe informații).
Deoarece există un singur pin serial de transmisie pe Arduino Uno (pinul 2 etichetat ca pin TX), trebuie să multiplicați semnalele trimise către cele cinci mufe MIDI. Am folosit aceleași semnale de control (pinul 8-12), deoarece semnalele MIDI sunt trimise la un moment diferit față de momentul în care senzorii IR sunt citiți în Arduino. Aceste semnale de control sunt trimise către un demultiplexor cu 8 canale, astfel încât să controlați mufa MIDI care primește semnalul MIDI creat de Arduino. Semnalele MIDI au fost generate de Arduino cu extraordinara bibliotecă de semnal MIDI creată de Francois Best. Iată câteva exemple de cod pentru producerea mai multor ieșiri MIDI la diferite mufe MIDI cu un Arduino Uno:
#include // include biblioteca MIDI
#define numChannel 24 // Numărul de IR pe triunghi #define numSections 5 // numărul de secțiuni din cupolă, numărul de MUX 24channel, numărul de mufe MIDI // OUTPUTS // int s0 = 8; // control MUX 0 - PORTbD int s1 = 9; // control MUX 1 - PORTb int s2 = 10; // control MUX 2 - PORTb int s3 = 11; // control MUX 3 - PORTb int s4 = 12; // MUX control 4 - PORTb // INPUTS // int m0 = 3; // Intrare MUX 0 int m1 = 4; // intrare MUX 1 int m2 = 5; // Intrare MUX 2 int m3 = 6; // Intrare MUX 3 int m4 = 7; // intrare MUX 4 // VARIABILE // int arr0r; // citire digitală din MUX0 int arr1r; // citire digitală din MUX1 int arr2r; // citire digitală din MUX2 int arr3r; // citire digitală din MUX3 int arr4r; // citire digitală din MUX4 int midArr [numSections]; // Stocați dacă o notă a fost apăsată sau nu de unul dintre jucători în note2play [numSections]; // Stocați nota pentru a fi redată dacă senzorul este atins în 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; // timpul de pauză între semnalele midi MIDI_CREATE_DEFAULT_INSTANCE (); void setup () {// puneți codul de configurare aici, pentru a rula o dată: DDRB = B11111111; // setează pinii Arduino 8-13 ca intrări 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 () {// puneți codul principal aici, pentru a rula în mod repetat: PORTB = B00000000; // SET pinii de control pentru mux low pentru (int i = 0; i <numChannel; i ++) {// Ieșire digitală de citire a MUX0 - MUX4 pentru senzorul IR i // Dacă senzorul IR este LO, triunghiul este atins de jucător. arr0r = DigitalRead (m0); // citire din Mux 0, senzor IR i arr1r = digitalRead (m1); // citire din Mux 1, senzor IR i arr2r = digitalRead (m2); // citire din Mux 2, senzor IR i arr3r = digitalRead (m3); // citire din Mux 3, senzor IR i arr4r = digitalRead (m4); // citirea din Mux 4, senzorul IR i if (arr0r == 0) // Senzorul din secțiunea 0 a fost blocat {midArr [0] = 1; // Jucătorul 0 a lovit o notă, setați HI astfel încât să existe o ieșire MIDI pentru jucătorul 0 note2play [0] = note ; // Notă pentru a juca pentru Player 0} dacă (arr1r == 0) // Senzorul din secțiunea 1 a fost blocat {midArr [1] = 1; // Jucătorul 0 a lovit o notă, setați HI astfel încât să existe ieșire MIDI pentru jucătorul 0 note2play [1] = note ; // Notă pentru a juca pentru Player 0} dacă (arr2r == 0) // Senzorul din secțiunea 2 a fost blocat {midArr [2] = 1; // Jucătorul 0 a lovit o notă, setați HI astfel încât să existe o ieșire MIDI pentru jucătorul 0 note2play [2] = note ; // Notă pentru a juca pentru Player 0} dacă (arr3r == 0) // Senzorul din secțiunea 3 a fost blocat {midArr [3] = 1; // Jucătorul 0 a lovit o notă, setați HI astfel încât să existe o ieșire MIDI pentru jucătorul 0 note2play [3] = note ; // Notă pentru a juca pentru Player 0} dacă (arr4r == 0) // Senzorul din secțiunea 4 a fost blocat {midArr [4] = 1; // Jucătorul 0 a lovit o notă, setați HI astfel încât să existe ieșire MIDI pentru jucătorul 0 note2play [4] = note ; // Notă pentru a juca pentru Player 0} PORTB ++; // semnal de control increment pentru MUX} updateMIDI (); } void updateMIDI () {PORTB = B00000000; // SET pinii de control pentru mux low if (midArr [0] == 1) // Player 0 ieșire MIDI {MIDI.sendNoteOn (note2play [0], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // creșteți MUX dacă (midArr [1] == 1) // Player 1 ieșire MIDI {MIDI.sendNoteOn (note2play [1], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // creșteți MUX if (midArr [2] == 1) // Player 2 ieșire MIDI {MIDI.sendNoteOn (note2play [2], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // incrementează MUX if (midArr [3] == 1) // Player 3 ieșire MIDI {MIDI.sendNoteOn (note2play [3], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // creșteți MUX if (midArr [4] == 1) // Player 4 ieșire MIDI {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; }
Pasul 11: Alimentarea domului
Există mai multe componente care trebuie alimentate în cupolă. Prin urmare, va trebui să calculați amplificatorii extrasați din fiecare componentă pentru a determina sursa de alimentare pe care trebuie să o achiziționați.
Banda LED: am folosit aproximativ 3,75 metri din banda LED Ws2801, care consumă 6,4 W / metru. Aceasta corespunde la 24W (3,75 * 6,4). Pentru a converti acest lucru în amperi, utilizați Putere = curent * volți (P = iV), unde V este tensiunea benzii LED, în acest caz 5V. Prin urmare, curentul extras din LED-uri este de 4.8A (24W / 5V = 4.8A).
Senzorii IR: Fiecare senzor IR atrage aproximativ 25mA, însumând 3A pentru 120 de senzori.
Arduino: 100mA, 9V
Multiplexoare: Există cinci multiplexoare cu 24 de canale, fiecare constând dintr-un multiplexor pe 16 canale și un multiplexor pe 8 canale. Cele 8 canale și 16 canale MUX consumă fiecare aproximativ 100mA. Prin urmare, consumul total de energie al tuturor MUX-urilor este de 1A.
Adunând aceste componente, se așteaptă ca consumul total de energie să fie de aproximativ 9A. Banda LED, senzorii IR și multiplexorii au tensiune de intrare la 5V, iar Arduino are tensiune de intrare de 9V. Prin urmare, am selectat o sursă de alimentare de 12V 15A, un convertor de 15A pentru convertirea 12V la 5V și un convertor de 3A pentru conversia de 12V la 9V pentru Arduino.
Pasul 12: Baza circulară a cupolei
Cupola se sprijină pe o bucată circulară de lemn cu un pentagon decupat din mijloc pentru acces ușor la electronice. Pentru a crea această bază circulară, o foaie de placaj de 4x6’a fost tăiată folosind un router CNC din lemn. Pentru acest pas ar putea fi folosit și un puzzle. După ce baza a fost tăiată, cupola a fost atașată la ea folosind mici blocuri de lemn de 2x3”.
Deasupra bazei, am atașat sursa de alimentare cu epoxidică și convertoarele MUX și Buck cu distanțieri stand-off PCB. Distanțierii au fost atașați la placaj folosind adaptoare de filet E-Z Lok.
Pasul 13: baza cupolei Pentagonului
Pe lângă baza circulară, am construit și o bază pentagonală pentru cupolă, cu o fereastră de sticlă în partea de jos. Această bază și fereastra cu aspect au fost realizate și din placaj tăiat cu un router CNC din lemn. Părțile laterale ale pentagonului sunt realizate din scânduri de lemn, cu o latură care are o gaură în ea pentru conectarea conectorilor. Folosind suporturi metalice și îmbinări bloc 2x3, scândurile de lemn sunt atașate la baza pentagonului. Un comutator de alimentare, conectori MIDI și conector USB sunt atașați la un panou frontal pe care l-am creat folosind un tăietor laser. Întreaga bază a pentagonului este înșurubată la baza circulară descrisă în Pasul 12.
Am instalat o fereastră în partea de jos a cupolei, astfel încât oricine să poată privi în sus pentru a vedea electronica. Geamul este realizat din tăietură acrilică cu un tăietor laser și este epoxidat pe o bucată circulară de placaj.
Pasul 14: Programarea domului
Există nenumărate posibilități pentru programarea cupolei. Fiecare ciclu al codului preia semnalele de la senzorii IR, care indică triunghiurile care au fost atinse de cineva. Cu aceste informații puteți colora cupola cu orice culoare RGB și / sau puteți produce un semnal MIDI. Iată câteva exemple de programe pe care le-am scris pentru dom:
Colorează cupola: fiecare triunghi parcurge patru culori pe măsură ce este atins. Pe măsură ce culorile se schimbă, se joacă un arpegiu. Cu acest program, veți putea colora cupola în mii de moduri diferite.
Muzică dom: Domul este colorat cu cinci culori, fiecare secțiune corespunzând unei ieșiri MIDI diferite. În program, puteți alege ce note joacă fiecare triunghi. Am ales să încep de la mijlocul C din partea de sus a cupolei și să măresc înălțimea pe măsură ce triunghiurile se apropiau de bază. Deoarece există cinci ieșiri, acest program este ideal pentru ca mai multe persoane să joace simultan cupola. Folosind un instrument MIDI sau un software MIDI, aceste semnale MIDI pot fi făcute să sune ca orice instrument.
Simon: Am scris o versiune a lui Simon, clasicul joc de iluminare a memoriei. O secvență aleatorie de lumini este iluminată pe rând pe întreaga cupolă. În fiecare rând, jucătorul trebuie să copieze secvența. Dacă jucătorul se potrivește corect cu secvența, se adaugă o lumină suplimentară secvenței. Scorul cel mai mare este stocat pe una dintre secțiunile domului. Acest joc este, de asemenea, foarte distractiv de jucat cu mai mulți oameni.
Pong: De ce să nu joci pong pe o cupolă? O minge se propagă peste cupolă până când lovește paleta. Când se produce, se produce un semnal MIDI, care indică că paleta a lovit mingea. Celălalt jucător trebuie să direcționeze paleta de-a lungul fundului cupolei, astfel încât să lovească mingea înapoi.
Pasul 15: Fotografii cu Dom completat
Marele Premiu la Concursul Arduino 2016
Premiul II la Concursul de Remix 2016
Premiul II la Concursul Make it Glow 2016
Recomandat:
Masă de cafea interactivă Arduino cu LED: 6 pași (cu imagini)
Măsuță de cafea interactivă Arduino: am făcut o măsuță de cafea interactivă care aprinde luminile cu led sub un obiect, atunci când obiectul este așezat deasupra mesei. Numai ledurile care se află sub acel obiect se vor aprinde. Face acest lucru folosind în mod eficient senzori de proximitate și când proximitatea
Pungă de perforare reflexivă interactivă: 3 pași (cu imagini)
Geantă de perforare interactivă cu reflexe: Această instrucțiune este pentru oricine dorește să-și îmbunătățească abilitățile și abilitățile de box în timp ce obține mai multă experiență de lipire, folosind Arduino, LED-urile și accelerometrul MK 2125. Scopul acestui proiect este de a modifica o geantă reflexă și un
Instalare artistică interactivă: 4 pași (cu imagini)
Instalare de artă interactivă: În acest proiect, amestecăm codarea și calculul fizic pentru a crea o instalație de artă interactivă. Exemplul împărtășit în acest Instructable este un proiect de codare pentru elevi care combină elemente grafice și sonore cu o interfață special creată
Lampă interactivă cu led - Structura Tensegrity + Arduino: 5 pași (cu imagini)
Lampă interactivă cu led | Structura Tensegrity + Arduino: Această piesă este o lampă care răspunde la mișcare. Concepută ca o sculptură de tensegrity minimă, lampa își modifică configurația culorilor ca răspuns la orientarea și mișcările întregii structuri. Cu alte cuvinte, în funcție de orientarea sa
Cum să creați o cupolă geodezică în stil Temcor în Autodesk Inventor: 8 pași
Cum să creați o cupolă geodezică în stil Temcor în Autodesk Inventor: acest tutorial vă va arăta cum să creați o cupolă în stil Temcor folosind doar puțină matematică. Majoritatea informațiilor din acest tutorial au fost extrase din ingineria inversă metoda de subdiviziune a vechii stații de pol sud Amundsen-Scott, s