Mündəricat:

İnteraktiv Geodezik LED Dome: 15 Addım (Şəkillərlə birlikdə)
İnteraktiv Geodezik LED Dome: 15 Addım (Şəkillərlə birlikdə)

Video: İnteraktiv Geodezik LED Dome: 15 Addım (Şəkillərlə birlikdə)

Video: İnteraktiv Geodezik LED Dome: 15 Addım (Şəkillərlə birlikdə)
Video: Interactive Geodesic LED dome 2024, Noyabr
Anonim
Image
Image
İnteraktiv Geodezik LED Günbəz
İnteraktiv Geodezik LED Günbəz
İnteraktiv Geodezik LED Günbəz
İnteraktiv Geodezik LED Günbəz
İnteraktiv Geodezik LED Günbəz
İnteraktiv Geodezik LED Günbəz

Hər üçbucaqda LED və sensoru olan 120 üçbucaqdan ibarət geodezik qübbə tikdim. Hər bir LED fərdi olaraq həll edilə bilər və hər bir sensor tək bir üçbucaq üçün xüsusi olaraq tənzimlənir. Günbəz, əlinizi hansı üçbucağa qoymağınızdan asılı olaraq MIDI siqnalı yandırmaq və istehsal etmək üçün Arduino ilə proqramlaşdırılmışdır.

Günbəzi insanlara işıq, elektronika və səslə maraqlandıran əyləncəli bir ekran kimi dizayn etdim. Günbəz gözəl şəkildə beş hissəyə bölündüyü üçün, qübbəni hər birinin fərqli bir səsə sahib ola biləcək beş ayrı MIDI çıxışı ilə dizayn etdim. Bu, günbəzi eyni anda birdən çox insanla musiqi çalmaq üçün ideal olan nəhəng bir musiqi aləti halına gətirir. Musiqi çalmaqla yanaşı, günbəzi işıq şouları və Simon və Pong mahnısını ifa etmək üçün də proqramlaşdırdım. Son quruluş bir metrdən bir qədər çox diametrli və 70 sm uzunluğundadır və əsasən ağac, akril və 3D çaplı hissələrdən hazırlanmışdır.

Bu layihəyə başlamağım üçün ilham verən LED masalar və kublar üzərində bir neçə böyük Təlimat var. Ancaq LEDləri fərqli bir həndəsədə düzəltmək istədim. Layihə üçün Instructables -da yaxşı sənədləşdirilmiş bir geodezik günbəzdən daha yaxşı bir quruluş düşünə bilmədim. Beləliklə, bu layihə LED masaların və geodezik qübbələrin remiksidir. Aşağıda, layihənin əvvəlində yoxladığım LED masa və geodezik günbəz Təlimatlarına bağlantılar.

LED masa və kublar:

www.instructables.com/id/RGB-LED-Pixel-Touc…

www.instructables.com/id/Touch-LED-Table-Re…

www.instructables.com/id/Led-Cube-8x8x8/

www.instructables.com/id/500-LED-Pixel-RGB-…

Geodeziya qübbəsi:

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

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

Addım 1: Təchizat siyahısı

Təchizat siyahısı
Təchizat siyahısı
Təchizat siyahısı
Təchizat siyahısı
Təchizat siyahısı
Təchizat siyahısı

Materiallar:

1. Günbəz və günbəzin dayaqları üçün ağac (miqdar günbəzin növündən və ölçüsündən asılıdır)

2. Ünvanlı LED şeridi (16.4ft/5m Ünvanlı Rəngli LED Pixel Strip 160leds Ws2801 Dc5v)

3. Arduino Uno (Atmega328 - yığılmış)

4. Prototip lövhəsi (Penta Angel İkitərəfli Prototip PCB Universal (7x9cm))

5. LED -lərin yayılması üçün akril (Döküm Akril Levha, Şəffaf, 12 "x 12" x 0.118 "Ölçüsü)

6. Enerji təchizatı (Aiposen 110/220V - DC12V 30A 360W Switch Güc Təchizatı Sürücüsü)

7. Arduino üçün buck çeviricisi (RioRand LM2596 DC-DC Buck Converter 1.23V-30V)

8. LEDlər və sensorlar üçün buck çeviricisi (DROK Mini Electric Buck Voltage Converter 15A)

9. 120 IR sensoru (İnfraqırmızı maneədən qaçınma sensoru modulu)

10. Beş 16 kanallı multipleksor (Analog/Digital MUX Breakout - CD74HC4067)

11. Altı 8 kanallı multipleksor (Multiplexer Breakout - 8 Kanal (74HC4051))

12. Beş 2 kanallı multipleksor (MAX4544CPA+)

13. Tel sarma teli (PCB Lehim 0.25mm Teneke Kaplı Mis Kordon Dia Tel sarma teli 305M 30AWG Qırmızı)

14. Bağlama teli (Qatı Çekirdek, 22 AWG)

15. Pin Başlıqları (Gikfun 1 x 40 Pin 2.54mm Tək Sıralı Ayrılan Kişi Pin Başlığı)

16. Beş MIDI jakı (Breadboard dostu MIDI Jack (5 pinli DIN))

17. MIDI jakları üçün on 220ohm rezistor

18. Elektronikanın günbəzə quraşdırılması üçün dayaq aralıqları (Stand-off Spacer Hex M3 Kişi x M3 Dişi)

19. Stand-offları ağaca bağlamaq üçün iplik adapterləri (E-Z Lok Threaded Insert, Brass, Knife Thread)

20. Epoksi və ya Gorilla Superglue

21. Elektrik lenti

22. Lehim

Alətlər:

1. Lehimləmə Stansiyası

2. Güc matkabı

3. Dairəvi mişar

4. Orbital zımpara

5. Jig gördüm

6. Miter mişar

7. Ölçmə cihazı

8. 3D printer

9. Tel kəsicilər

10. Tel sarma vasitəsi

11. LED lövhələrini kəsmək üçün lazer kəsici (isteğe bağlı)

12. Günbəz bazası üçün CNC dükanı (isteğe bağlı)

Addım 2: Geodezik Qübbənin Dizaynı

Geodeziya Qübbəsinin Dizaynı
Geodeziya Qübbəsinin Dizaynı
Geodeziya Qübbəsinin Dizaynı
Geodeziya Qübbəsinin Dizaynı

Girişdə qeyd etdiyim kimi, öz geodezik günbəzinizi qurmaq üçün bir neçə onlayn qaynaq var. Bu saytlar, hər tərəfin uzunluğunu (yəni dayağı) və qurmaq istədiyiniz hər hansı bir günbəz üçün lazım olan bağlayıcıların sayını təyin edən günbəz hesablayıcıları təqdim edir. Geodezik bir günbəzin mürəkkəbliyi (yəni üçbucaqların sıxlığı) sinfi (1V, 2V, 3V və s.) Öz günbəzinizi qurmaq üçün əvvəlcə günbəzin diametrini və sinifini seçməlisiniz.

Domerama adlı bir saytdan istifadə edərək, radiusu 40 sm olan kürənin 5/12 hissəsinə kəsilmiş 4V bir günbəz dizayn etməyimə kömək etdim. Bu növ günbəz üçün altı fərqli uzunluqlu dayaq var:

30 X "A" - 8.9 sm

30 X "B" - 10,4 sm

50 X "C" - 12.4 sm

40 X "D" - 12,5 sm

20 X "E" - 13.0 sm

20 X "F" - 13.2 sm

Ümumilikdə 2223 sm (73 ft) material əlavə edən 190 dayaqdır. Bu günbəzdəki dayaqlar üçün 1x3 (3/4 "× 2-1/2") şam ağacından istifadə etdim. Strutsları birləşdirmək üçün Autocad istifadə edərək 3D çaplı bağlayıcılar hazırladım. STL faylları bu addımın sonunda yüklənə bilər. 4V 5/12 günbəz üçün bağlayıcıların sayı:

20 X 4 bağlayıcı

6 X 5 bağlayıcı

45 X 6 bağlayıcı

Növbəti addımda, bu günbəzin taxta dayaqlar və dizayn etdiyim 3D çaplı bağlayıcılarla necə qurulduğunu təsvir edirəm.

Addım 3: Struts və Konnektorlar ilə Günbəz Qurmaq

Struts və Konnektorlar ilə Günbəz Tikintisi
Struts və Konnektorlar ilə Günbəz Tikintisi
Struts və Konnektorlar ilə Günbəz Tikintisi
Struts və Konnektorlar ilə Günbəz Tikintisi
Struts və Konnektorlar ilə Günbəz Tikintisi
Struts və Konnektorlar ilə Günbəz Tikintisi
Struts və Konnektorlar ilə Günbəz Tikintisi
Struts və Konnektorlar ilə Günbəz Tikintisi

4V 5/12 qübbəsi üçün Domerama hesablamalarını istifadə edərək, dairəvi mişar istifadə edərək dayaqları kəsdim. 190 dayaq etiketlənmiş və kəsildikdən sonra bir qutuya qoyulmuşdur. 71 konnektor (20 dörd bağlayıcı, 6 beş bağlayıcı və 45 altı konnektor) bir Makerbot istifadə edərək 3D çap edildi. Ağac dayaqları, bağlayıcılara Domerama tərəfindən yaradılan sxemə görə daxil edilmişdir. Tikintiyə yuxarıdan başladım və radial olaraq kənara doğru hərəkət etdim.

Bütün dayaqlar bağlandıqdan sonra birdən bir dayağı çıxarıb taxta və bağlayıcıya epoksi əlavə etdim. Konnektorlar, strukturları necə bağladıqlarında elastikliyə malik olmaq üçün hazırlanmışdır, buna görə hər hansı bir epoksi əlavə etməzdən əvvəl günbəzin simmetriyasını yoxlamaq vacibdir.

Addım 4: Lazer Kəsmə və Baza Plitələrinin Montajı

Lazer kəsmə və montaj lövhələri
Lazer kəsmə və montaj lövhələri
Lazer kəsmə və montaj lövhələri
Lazer kəsmə və montaj lövhələri
Lazer kəsmə və montaj lövhələri
Lazer kəsmə və montaj lövhələri
Lazer kəsmə və montaj lövhələri
Lazer kəsmə və montaj lövhələri

Günbəzin skeleti qurulduqdan sonra, üçbucaqlı alt lövhələri kəsmə vaxtıdır. Bu lövhələr dayaqların altına yapışdırılır və LEDləri günbəzə bağlamaq üçün istifadə olunur. Əvvəlcə günbəzdəki beş fərqli üçbucağı ölçərək 5 mm (3/16 ) qalınlığında kontrplakdan alt lövhələri kəsdim: AAB (30 üçbucaq), BCC (25 üçbucaq), DDE (20 üçbucaq), CDF (40 üçbucaq)) və EEE (5 üçbucaq). Hər tərəfin ölçüləri və üçbucaqların forması günbəz kalkulyatoru (Domerama) və bəzi həndəsə ilə müəyyən edilmişdir. Test taban lövhələrini yapbozla kəsdikdən sonra Coral Draw istifadə edərək üçbucağın dizaynını çəkdim və qalan alt lövhələri lazer kəsici ilə kəsdim (daha sürətli!). Lazer kəsiciyə girişiniz yoxdursa, bir hökmdar və dirsəkdən istifadə edərək alt lövhələri kontrplak üzərinə çəkə və hamısını yapbozla kəsə bilərsiniz. Döşəmə lövhələri kəsildikdən sonra, günbəz çevrilir və plitələr taxta yapışqan istifadə edərək günbəzə yapışdırılır.

Addım 5: Elektronikaya Baxış

Elektronikaya Baxış
Elektronikaya Baxış

Yuxarıdakı şəkildə günbəz üçün elektronikanın sxematik şəkildə göstərilmişdir. Bir Arduino Uno günbəz üçün siqnalların yazılması və oxunması üçün istifadə olunur. Günbəzi işıqlandırmaq üçün günbəzin üstünə bir RGB LED şeridi çəkilir ki, 120 üçbucağın hər birində LED yerləşdirilsin. Bir LED şeridinin necə işlədiyini öyrənmək üçün bu təlimata baxın. Şerit üçün ardıcıl məlumat və saat siqnalı istehsal edən Arduino istifadə edərək hər bir LED ayrı -ayrılıqda həll edilə bilər (sxematik olaraq A0 və A1 pininə baxın). Yalnız zolaq və bu iki siqnalla möhtəşəm işıqlı bir günbəz əldə edə bilərsiniz. Charlieplexing və shift qeydləri kimi bir Arduino -dan çoxlu LED üçün siqnal yazmağın başqa yolları da var.

Günbəzlə qarşılıqlı əlaqə qurmaq üçün hər LED -in üstündə İQ sensoru qurdum. Bu sensorlar, birinin əlinin günbəzdəki üçbucağa yaxın olduğunu aşkar etmək üçün istifadə olunur. Günbəzdəki hər üçbucağın öz IR sensoru olduğu və 120 üçbucağı olduğu üçün Arduinodan əvvəl bir növ multipleksasiya etməli olacaqsınız. Günbəzdəki 120 sensor üçün beş 24 kanallı multiplekserdən (MUX) istifadə etmək qərarına gəldim. Bilmirsinizsə, burada multipleksləşdirmə ilə bağlı bir təlimat var. 24 kanallı MUX beş nəzarət siqnalına ehtiyac duyur. Arduino'da 8-12 sancaqları seçdim, buna görə liman manipulyasiyası edə bilərdim (daha çox məlumat üçün 10-cu addıma baxın). MUX lövhələrinin çıxışı 3-7 sancaqlar istifadə edərək oxunur.

Səs çıxara bilməsi üçün günbəzə beş MIDI çıxışı da daxil etdim (Addım 11). Başqa sözlə desək, beş nəfər hər bir çıxışda fərqli bir səs çalanda eyni anda günbəz çalır. Arduino'da yalnız bir TX pin var, buna görə beş MIDI siqnalı demultiplexing tələb edir. MIDI çıxışı IR sensoru oxunuşundan fərqli bir vaxtda istehsal edildiyinə görə eyni nəzarət siqnallarından istifadə etdim.

Bütün IR sensoru girişləri Arduinoya oxunduqdan sonra, günbəz Arduino -nu proqramlaşdırdığınız halda səsləri yandıra və səsləndirə bilər. Bu təlimatın 14 -cü addımında bir neçə nümunəm var.

Addım 6: LEDləri Günbəzə Quraşdırmaq

LED -lərin Günbəzə quraşdırılması
LED -lərin Günbəzə quraşdırılması
LED -lərin Günbəzə quraşdırılması
LED -lərin Günbəzə quraşdırılması
LED -lərin Günbəzə quraşdırılması
LED -lərin Günbəzə quraşdırılması

Günbəz çox böyük olduğu üçün hər üçbucağa bir LED yerləşdirmək üçün LED şeridi kəsilməlidir. Hər bir LED super yapışqan istifadə edərək üçbucağa yapışdırılır. LED -in hər iki tərəfində kabellərin günbəzdən keçməsi üçün alt plitə vasitəsilə bir çuxur qazılır. Sonra LED-də (5V, torpaq, saat, siqnal) hər bir kontaktda bağlama telini lehimlədim və telləri alt lövhədən keçirtdim. Bu tellər günbəzdəki növbəti LED -ə çatmaq üçün kifayət qədər uzun olması üçün kəsilir. Tellər növbəti LED -ə çəkilir və proses davam edir. LEDləri daha sonra Arduino istifadə edərək LED -lərə müraciət etmək üçün hələ də mənalı olan tələb olunan tel miqdarını minimuma endirəcək bir konfiqurasiyaya bağladım. Kiçik bir günbəz, zolağı kəsmə ehtiyacını ortadan qaldıracaq və lehimləmə vaxtına çox qənaət edəcək. Başqa bir seçim, dəyişdirmə qeydləri olan ayrı bir RGB LED -lərindən istifadə etməkdir.

Şeritlə ardıcıl əlaqə Arduino -dan iki pin (məlumat və saat pin) istifadə edərək əldə edilir. Başqa sözlə, günbəzin işıqlandırılması üçün məlumatlar, məlumat pinindən çıxarkən bir LED -dən digərinə ötürülür. Bu Arduino forumundan dəyişdirilmiş bir nümunə kod:

// Bütün günbəzi tək rəngin intensivliyini artırın və azaldın

#define numLeds 120 // LED sayı // Çıxış PINSİ // int clockPin = A1; // saat pinini təyin int dataPin = A0; // məlumat pinini təyin edin // VARIABLES // int red [numLeds]; // yaşıl LED şeridi üçün massivi işə salın [numLeds]; // mavi mavi LED şeridi üçün sıra başladın [numLeds]; // LED şeridi üçün massivi işə salın // SABİT ikiqat miqyaslı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}; // LED -lərin intensivlik hissəsinin boşluğu () {pinMode (clockPin, OUTPUT); pinMode (dataPin, Çıxış); memset (qırmızı, 0, numLeds); memset (yaşıl, 0, numLeds); memset (mavi, 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 ++) // günbəzin işıq intensivliyini artırmaq üçün loop {double scale = scaleA [p]; gecikmə (20); üçün (int i = 0; i <numLeds; i ++) // bütün LED -lərdən keçən dövr {red = 255 * miqyaslı; yaşıl = 80 * miqyaslı; mavi = 0; } updatestring (qırmızı, yaşıl, mavi); // led şeridi yeniləyin}}

Addım 7: Sensor Dağı Dizaynı və Tətbiqi

Sensor Dağı Dizaynı və Tətbiqi
Sensor Dağı Dizaynı və Tətbiqi
Sensor Dağı Dizaynı və Tətbiqi
Sensor Dağı Dizaynı və Tətbiqi
Sensor Dağı Dizaynı və Tətbiqi
Sensor Dağı Dizaynı və Tətbiqi

Günbəz üçün IR sensorlarından istifadə etmək qərarına gəldim. Bu sensorlar IR LED və alıcıya malikdir. Sensorun qarşısına bir cisim çıxanda İK LED -dən gələn bəzi İQ radiasiyası alıcıya doğru əks olunur. Bu layihəyə Richardouvinanın təlimatına əsaslanan öz IR sensorlarımı düzəltməklə başladım. Bütün lehimləmə çox uzun çəkdi, buna görə eBay -dən hər biri rəqəmsal bir çıxış istehsal edən 120 IR sensoru aldım. Sensorun həddi lövhədə bir potansiyometrlə təyin olunur ki, çıxış yalnız o üçbucağın yanında olarkən yüksək olsun.

Hər üçbucaq bir kontrplak LED-lövhə, LED lövhənin təxminən 2,5 sm üstündə quraşdırılmış yayıcı akril təbəqə və İQ sensordan ibarətdir. Hər üçbucağın sensoru günbəzdəki mövqeyindən asılı olaraq beşbucaqlı və ya altıbucaqlı formalı nazik kontrplak təbəqəyə quraşdırılmışdır (yuxarıdakı şəklə baxın). İQ sensorlarını quraşdırmaq üçün IR sensoru bazasına deliklər qazdım və sonra torpağı və 5V sancaqları tel sarma teli və tel sarma aləti (qırmızı və qara tellər) ilə bağladım. Torpaq və 5V bağladıqdan sonra, günbəzdən keçmək üçün hər bir çıxışa (sarı), yerə və 5V-ə uzun tel sarma teli bağladım.

Altıbucaqlı və ya beşbucaqlı IR sensoru qurğuları, telin günbəzdən keçə bilməsi üçün, 3D çaplı konnektorların üstündəki günbəzə epoksiyalaşdırılmışdır. Sensorları konnektorların üstündə saxlayaraq, sensorların həssaslığını idarə edən IR sensorlardakı potensiometrlərə də daxil ola və onları tənzimləyə bildim. Növbəti addımda İQ sensorlarının çıxışlarının multipleksorlara necə bağlı olduğunu və Arduinoya necə oxunacağını təsvir edəcəyəm.

Addım 8: Multiplexing Sensor Çıxışı

Multiplexing Sensor Çıxışı
Multiplexing Sensor Çıxışı
Multiplexing Sensor Çıxışı
Multiplexing Sensor Çıxışı
Multiplexing Sensor Çıxışı
Multiplexing Sensor Çıxışı

Arduino Uno -da yalnız 14 rəqəmsal G/Ç pimi və 6 analoq giriş pimi olduğundan və oxunması lazım olan 120 sensor siqnalı olduğundan, günbəzin bütün siqnallarda multipleksorların oxumasını tələb edir. Hər biri 24 İK sensoru oxuyan 24 elektron kanallı beş multipleksor qurmağı seçdim (elektronikaya ümumi bax). 24 kanallı MUX, 8 kanallı MUX qırılma lövhəsindən, 16 kanallı MUX qırılma lövhəsindən və 2 kanallı MUXdan ibarətdir. Pin başlıqları prototip lövhəsinə qoşula bilmək üçün hər bir qırılma lövhəsinə lehimləndi. Bir tel sarma vasitəsi ilə MUX qırılma lövhələrinin torpaq, 5V və nəzarət siqnal pinlərini bağladım.

24 kanallı bir MUX, Arduino 8-12 pininə qoşulmağı seçdiyim beş nəzarət siqnalı tələb edir. Beş 24 kanallı MUX-in hamısı eyni nəzarət siqnallarını Arduinodan alır, buna görə Arduino pinlərindən 24 kanallı MUX-a tel bağladım. IR sensorlarının rəqəmsal çıxışları 24 kanallı MUX-in giriş pinlərinə qoşulur ki, Arduino-ya ardıcıl oxunsun. Bütün 120 sensor çıxışında oxumaq üçün beş ayrı pin olduğu üçün, günbəzin 24 üçbucaqdan ibarət beş ayrı hissəyə bölünməsini təsəvvür etmək faydalıdır (şəkildəki günbəzin rənglərini yoxlayın).

Arduino portu manipulyasiyasından istifadə edərək 8-12 sancaqlar tərəfindən göndərilən nəzarət siqnallarını sürətləndiricilərə sürətlə artıra bilərsiniz. Buradakı multipleksorların işləməsi üçün bir nümunə kodu əlavə etdim:

int numChannel = 24;

// Çıxışlar // int s0 = 8; // MUX nəzarət 0 - PORTbD int s1 = 9; // MUX nəzarət 1 - PORTb int s2 = 10; // MUX nəzarət 2 - PORTb int s3 = 11; // MUX nəzarət 3 - PORTb int s4 = 12; // MUX nəzarət 4 - PORTb // GİRİŞLER // int m0 = 3; // MUX girişi 0 int m1 = 4; // MUX girişi 1 int m2 = 5; // MUX girişi 2 int m3 = 6; // MUX girişi 3 int m4 = 7; // MUX girişi 4 // Dəyişkənlər // int arr0r; // MUX0 int arr1r -dən rəqəmsal oxu; // MUX1 int arr2r -dən rəqəmsal oxu; // MUX2 int arr3r -dən rəqəmsal oxu; // MUX3 int arr4r -dən rəqəmsal oxu; // MUX4 -dən rəqəmsal oxu void setup () {// bir dəfə işə salınmaq üçün quraşdırma kodunuzu bura qoyun: DDRB = B11111111; // Arduino sancaqlarını 8 -dən 13 -ə qədər pinMode (s0, OUTPUT) girişləri olaraq təyin edir; pinMode (s1, ÇIXIŞ); pinMode (s2, ÇIXIŞ); pinMode (s3, Çıxış); pinMode (s4, ÇIXIŞ); pinMode (m0, GİRİŞ); pinMode (m1, GİRİŞ); pinMode (m2, GİRİŞ); pinMode (m3, GİRİŞ); pinMode (m4, GİRİŞ); } void loop () {// təkrar etmək üçün əsas kodunuzu bura qoyun: PORTB = B00000000; // (int i = 0; i <numChannel; i ++) {/ 0 üçün müx aşağı üçün SET nəzarət pinləri. arr0r = digitalRead (m0); // Mux 0 -dan oxu, IR sensoru i arr1r = digitalRead (m1); // Mux 1 -dən oxu, IR sensoru i arr2r = digitalRead (m2); // Mux 2 -dən oxu, IR sensoru i arr3r = digitalRead (m3); // Mux 3 -dən oxu, IR sensoru i arr4r = digitalRead (m4); // Mux 4 -dən oxumaq, IR sensoru i // BURADA MUX GİRİŞLƏRİ VƏ DEPOLARI İLƏ BİR ŞEY EDİN // PORTB ++; // MUX üçün artım nəzarət siqnalları}}

Addım 9: İşıq akril ilə yayılır

Akril ilə işıq yayılması
Akril ilə işıq yayılması
Akril ilə işıq yayılması
Akril ilə işıq yayılması
Akril ilə işıq yayılması
Akril ilə işıq yayılması

İşığı LED -dən yaymaq üçün şəffaf akrili dairəvi orbital zımpara ilə zımparaladım. Zımpara akrilin hər iki tərəfində bir rəqəm-8 hərəkəti ilə hərəkət etdirildi. Bu üsulun "buzlu şüşə" sprey boyasından daha yaxşı olduğunu gördüm.

Akrili zımpara və təmizlədikdən sonra, LED -lərin üzərinə uyğun üçbucaqları kəsmək üçün lazer kəsici istifadə etdim. Akril çatlamazsa, akril kəsmə aləti və ya hətta yapboz istifadə edərək akrili kəsmək mümkündür. Akril, LED -lər üzərində 5 mm qalınlığında kontrplak düzbucaqlılarla tutularaq lazer kəsici ilə kəsilmişdir. Bu kiçik taxtalar günbəzdəki dayaqlara yapışdırılmış və akril üçbucaqlar taxtalara epoksi vurulmuşdur.

Addım 10: MIDI istifadə edərək günbəzlə musiqi yaratmaq

MIDI istifadə edərək günbəzlə musiqi yaratmaq
MIDI istifadə edərək günbəzlə musiqi yaratmaq
MIDI istifadə edərək günbəzlə musiqi yaratmaq
MIDI istifadə edərək günbəzlə musiqi yaratmaq
MIDI istifadə edərək günbəzlə musiqi yaratmaq
MIDI istifadə edərək günbəzlə musiqi yaratmaq

Günbəzin səs çıxara bilməsini istədim, buna görə günbəzin hər alt qrupu üçün beş MIDI kanalı qurdum. Əvvəlcə beş MIDI jakını satın almalı və sxemdə göstərildiyi kimi bağlamalısınız (daha çox məlumat üçün Arduino dəstəyindən bu təlimata baxın).

Arduino Uno-da yalnız bir ötürücü serial pin olduğu üçün (pin 2 TX pin olaraq etiketlənir), beş MIDI yuvasına göndərilən siqnalları çoxaltmaq lazımdır. Eyni nəzarət siqnallarından istifadə etdim (pin 8-12), çünki MIDI siqnalları IR sensorlar Arduinoya oxunduğu vaxtdan fərqli vaxtda göndərilir. Bu nəzarət siqnalları 8 kanallı bir çoxlu multiplexerə göndərilir ki, hansı MIDI yuvasının Arduino tərəfindən yaradılan MIDI siqnalını alacağını idarə edə biləsiniz. MIDI siqnalları Arduino tərəfindən Francois Best tərəfindən yaradılan dəhşətli MIDI siqnal kitabxanası ilə yaradılmışdır. Bir Arduino Uno ilə fərqli MIDI jaklarına birdən çox MIDI çıxışı istehsal etmək üçün bir nümunə kod:

#include // MIDI kitabxanasını daxil edin

#define numChannel 24 // Üçbucaq başına IR sayı #numSections 5 təyin edin // günbəzdəki bölmələrin sayı, 24 kanallı MUX sayı, MIDI jakların sayı // ÇIXIŞLAR // int s0 = 8; // MUX nəzarət 0 - PORTbD int s1 = 9; // MUX nəzarət 1 - PORTb int s2 = 10; // MUX nəzarət 2 - PORTb int s3 = 11; // MUX nəzarət 3 - PORTb int s4 = 12; // MUX nəzarət 4 - PORTb // GİRİŞLER // int m0 = 3; // MUX girişi 0 int m1 = 4; // MUX girişi 1 int m2 = 5; // MUX girişi 2 int m3 = 6; // MUX girişi 3 int m4 = 7; // MUX girişi 4 // Dəyişkənlər // int arr0r; // MUX0 int arr1r -dən rəqəmsal oxu; // MUX1 int arr2r -dən rəqəmsal oxu; // MUX2 int arr3r -dən rəqəmsal oxu; // MUX3 int arr4r -dən rəqəmsal oxu; // MUX4 int midArr -dən rəqəmsal oxumaq [numSections]; // int not2play [numSections] oyunçularından biri tərəfindən bir notun basdırılıb -basılmadığını saxlayın; // Sensora toxunduqda qeydləri çalın [numChannel] = {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83}; int pauseMidi = 4000; // MIDI_CREATE_DEFAULT_INSTANCE midi siqnalları arasındakı fasilə müddəti (); void setup () {// bir dəfə işlətmək üçün quraşdırma kodunuzu bura qoyun: DDRB = B11111111; // Arduino sancaqlarını 8 -dən 13 -ə qədər MIDI.begin (MIDI_CHANNEL_OFF) girişləri olaraq təyin edir; pinMode (s0, ÇIXIŞ); pinMode (s1, ÇIXIŞ); pinMode (s2, ÇIXIŞ); pinMode (s3, Çıxış); pinMode (s4, ÇIXIŞ); pinMode (m0, GİRİŞ); pinMode (m1, GİRİŞ); pinMode (m2, GİRİŞ); pinMode (m3, GİRİŞ); pinMode (m4, GİRİŞ); } void loop () {// təkrar etmək üçün əsas kodunuzu bura qoyun: PORTB = B00000000; // (int i = 0; i <numChannel; i ++) {/ 0 üçün müx aşağı üçün SET nəzarət pinləri. arr0r = digitalRead (m0); // Mux 0 -dan oxu, IR sensoru i arr1r = digitalRead (m1); // Mux 1 -dən oxu, IR sensoru i arr2r = digitalRead (m2); // Mux 2 -dən oxu, IR sensoru i arr3r = digitalRead (m3); // Mux 3 -dən oxu, IR sensoru i arr4r = digitalRead (m4); // Mux 4 -dən oxu, IR sensoru i if (arr0r == 0) // 0 bölməsindəki sensor bloklandı {midArr [0] = 1; // 0 oyunçu bir not vurdu, HI -ni 0 oyunçu üçün MIDI çıxışı olsun deyə təyin edin2 note2play [0] = qeydlər ; // Oyunçu 0 -da oynamaq üçün qeyd}} if (arr1r == 0) // 1 -ci hissədəki sensor bloklandı {midArr [1] = 1; // 0 oyunçu bir nota vurdu, HI -ni 0 oyunçu üçün MIDI çıxışı olması üçün qeyd edin2 note2play [1] = qeydlər ; // 0 saylı Oyunçu üçün oynamaq üçün qeyd edin} if (arr2r == 0) // 2 -ci hissədəki sensor bloklandı {midArr [2] = 1; // Oyunçu 0 bir nota vurdu, HI -ni 0 oyunçu üçün MIDI çıxışı olması üçün qeyd edin2 note2play [2] = qeydlər ; // Oyunçu 0 -da oynamaq üçün qeyd}} if (arr3r == 0) // 3 -cü hissədəki sensor bloklandı {midArr [3] = 1; // Oyunçu 0 bir nota vurdu, HI -ni 0 oyunçu üçün MIDI çıxışı olması üçün təyin edin2 note2play [3] = qeydlər ; // 0 saylı Oyunçu üçün oynamaq üçün qeyd edin} if (arr4r == 0) // 4 -cü hissədəki sensor bloklandı {midArr [4] = 1; // 0 oyunçu bir nota vurdu, HI -ni 0 oyunçu üçün MIDI çıxışı olsun deyə təyin edin2 note2play [4] = qeydlər ; // Oyunçu 0} PORTB ++ üçün oynamaq üçün qeyd; // artım nəzarət siqnalları MUX} updateMIDI () üçün; } etibarsız updateMIDI () {PORTB = B00000000; // mux aşağı üçün SET nəzarət pinləri if (midArr [0] == 1) // Oyunçu 0 MIDI çıxışı {MIDI.sendNoteOn (note2play [0], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); } PORTB ++; // artım MUX əgər (midArr [1] == 1) // Oyunçu 1 MIDI çıxışı {MIDI.sendNoteOn (note2play [1], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); } PORTB ++; // artım MUX əgər (midArr [2] == 1) // Oyunçu 2 MIDI çıxışı {MIDI.sendNoteOn (note2play [2], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); } PORTB ++; // artım MUX əgər (midArr [3] == 1) // Oyunçu 3 MIDI çıxışı {MIDI.sendNoteOn (note2play [3], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); } PORTB ++; // artım MUX əgər (midArr [4] == 1) // Oyunçu 4 MIDI çıxışı {MIDI.sendNoteOn (note2play [4], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); MIDI.sendNoteOff (note2play [4], 127, 1); gecikmə Mikrosaniyələri (pauseMidi); } midArr [0] = 0; midArr [1] = 0; midArr [2] = 0; midArr [3] = 0; midArr [4] = 0; }

Addım 11: Günbəzə güc verin

Günbəzə güc
Günbəzə güc
Günbəzə güc
Günbəzə güc
Günbəzə güc
Günbəzə güc
Günbəzə güc
Günbəzə güc

Qübbədə gücə ehtiyacı olan bir neçə komponent var. Buna görə satın almanız lazım olan enerji təchizatını təyin etmək üçün hər bir komponentdən çəkilmiş amperləri hesablamalı olacaqsınız.

LED şeridi: 6.4W/metr istehlak edən təxminən 3.75 metr Ws2801 LED şeridindən istifadə etdim. Bu 24W -a (3.75*6.4) uyğundur. Bunu amperə çevirmək üçün Power = cari*volt (P = iV) istifadə edin, burada V - LED şeridinin gərginliyi, bu halda 5V. Buna görə LED -lərdən alınan cərəyan 4.8A (24W/5V = 4.8A) təşkil edir.

IR sensorlar: Hər bir IR sensoru təxminən 25mA çəkir, 120 sensor üçün cəmi 3A.

Arduino: 100mA, 9V

Multiplexerlər: Hər biri 16 kanallı və 8 kanallı multiplekserdən ibarət olan beş 24 kanallı multipleksor var. 8 kanal və 16 kanallı MUX hər biri təxminən 100mA istehlak edir. Buna görə də, bütün MUX -in ümumi enerji istehlakı 1A -dır.

Bu komponentlərə əlavə olaraq, ümumi enerji istehlakının 9A ətrafında olması gözlənilir. LED şeridi, İQ sensorlar və multipleksorların giriş gərginliyi 5V, Arduino isə 9V giriş gərginliyinə malikdir. Buna görə 12V 15A enerji təchizatı, 12V -ni 5V -ə çevirmək üçün 15A buck çevirici və Arduino üçün 12V -ı 9V -ə çevirmək üçün 3A buck çevirici seçdim.

Addım 12: Dairəvi Dome Baza

Dairəvi Günbəz Baza
Dairəvi Günbəz Baza
Dairəvi Günbəz Baza
Dairəvi Günbəz Baza
Dairəvi Günbəz Baza
Dairəvi Günbəz Baza

Günbəz, elektronikaya asanlıqla daxil olmaq üçün ortadan beşbucaqlı kəsilmiş dairəvi bir ağac parçası üzərində dayanır. Bu dairəvi bazanı yaratmaq üçün taxta bir CNC router istifadə edərək 4x6 düymlük kontrplak kəsilmişdir. Bu addım üçün bir yapboz da istifadə edilə bilər. Bünövrə kəsildikdən sonra günbəz 2x3 düymlük kiçik taxta bloklardan istifadə edərək ona bərkidilmişdir.

Baza üstündə, güc mənbəyini epoksi və PCB dayaq aralıqları olan MUX və Buck çeviriciləri ilə bağladım. Aralayıcılar E-Z Lok iplik adapterlərindən istifadə edərək kontrplaka bərkidilmişdir.

Addım 13: Pentaqon Dome Base

Pentaqon Günbəz Bazası
Pentaqon Günbəz Bazası
Pentaqon Günbəz Bazası
Pentaqon Günbəz Bazası
Pentaqon Günbəz Bazası
Pentaqon Günbəz Bazası

Dairəvi bazaya əlavə olaraq, altındakı şüşəli pəncərəsi olan günbəz üçün beşbucaqlı bir baza da tikdim. Bu təməl və görünüşlü pəncərə də taxta CNC router ilə kəsilmiş kontrplakdan hazırlanmışdır. Beşbucağın tərəfləri bağlayıcıların keçməsi üçün bir tərəfi çuxur olan taxta taxtalardan hazırlanmışdır. Metal mötərizələr və 2x3 blok birləşmələri istifadə edərək, taxta taxtalar beşbucaqlı bazaya bərkidilir. Güc açarı, MIDI bağlayıcıları və USB konnektoru lazer kəsici istifadə edərək yaratdığım bir ön paneldə yerləşdirilmişdir. Bütün beşbucaqlı baza Adım 12 -də təsvir olunan dairəvi bazaya vidalanmışdır.

Günbəzin altına bir pəncərə quraşdırdım ki, hər kəs elektronikanı görmək üçün günbəzə baxsın. Görünən şüşə lazer kəsici ilə akril kəsilmiş və dairəvi bir kontrplak parçasına epoksiyalaşdırılmışdır.

Addım 14: Dome proqramlaşdırılması

Günbəzin proqramlaşdırılması üçün sonsuz imkanlar var. Kodun hər dövrü, İQ sensorlarından birinin toxunduğu üçbucaqları göstərən siqnalları alır. Bu məlumatla günbəzi hər hansı bir RGB rəngi ilə rəngləndirə və/və ya MIDI siqnalı verə bilərsiniz. Günbəz üçün yazdığım bir neçə proqram nümunəsi:

Günbəzi rəngləndirin: Hər üçbucaq toxunduqda dörd rəngdən keçir. Rənglər dəyişdikcə arpej çalınır. Bu proqramla günbəzi minlərlə fərqli şəkildə rəngləndirə bilərsiniz.

Dome musiqisi: Günbəz beş rənglə rənglənir, hər bölmə fərqli bir MIDI çıxışına uyğundur. Proqramda hər üçbucağın hansı notları çalacağını seçə bilərsiniz. Günbəzin üstündəki C ortasından başlamağı və üçbucaqlar bazaya yaxınlaşdıqca sahəni artırmağı seçdim. Beş çıxış olduğu üçün bu proqram eyni anda bir neçə insanın günbəz çalması üçün idealdır. Bir MIDI aləti və ya MIDI proqramı istifadə edərək, bu MIDI siqnalları hər hansı bir alət kimi səsləndirilə bilər.

Simon: Klassik yaddaş işıqlandırma oyunu olan Simonun bir hissəsini yazdım. Təsadüfi bir işıq ardıcıllığı bütün günbəz boyunca bir -bir işıqlandırılır. Hər növbədə oyunçu ardıcıllığı kopyalamalıdır. Oyunçu ardıcıllıqla düzgün uyğun gəlirsə, ardıcıllığa əlavə işıq əlavə olunur. Yüksək bal günbəzin bölmələrindən birində saxlanılır. Bu oyun eyni zamanda birdən çox insanla oynamaq çox əyləncəlidir.

Pong: Niyə günbəz üzərində pong oynamırsınız? Bir top, avar vurana qədər günbəz boyunca yayılır. Etdikdə, avar topa dəydiyini göstərən bir MIDI siqnalı istehsal olunur. Digər oyunçu daha sonra kürəyi günbəzin dibinə doğru yönəltməlidir ki, top geri dəysin.

Addım 15: Tamamlanmış günbəzin fotoşəkilləri

Tamamlanmış Günbəzin fotoşəkilləri
Tamamlanmış Günbəzin fotoşəkilləri
Tamamlanmış Günbəzin fotoşəkilləri
Tamamlanmış Günbəzin fotoşəkilləri
Tamamlanmış Günbəzin fotoşəkilləri
Tamamlanmış Günbəzin fotoşəkilləri
Tamamlanmış Günbəzin fotoşəkilləri
Tamamlanmış Günbəzin fotoşəkilləri
Arduino yarışması 2016
Arduino yarışması 2016
Arduino yarışması 2016
Arduino yarışması 2016

2016 Arduino Yarışmasında Böyük Mükafat

Remix yarışması 2016
Remix yarışması 2016
Remix yarışması 2016
Remix yarışması 2016

2016 -cı il Remix Müsabiqəsində ikinci mükafat

2016 Parlaq Yarışması olun
2016 Parlaq Yarışması olun
2016 Parlaq Yarışması olun
2016 Parlaq Yarışması olun

2016 Parlaqlaşdır Yarışmasında İkinci Mükafat

Tövsiyə: