Spisu treści:

Interaktywna kopuła geodezyjna LED: 15 kroków (ze zdjęciami)
Interaktywna kopuła geodezyjna LED: 15 kroków (ze zdjęciami)

Wideo: Interaktywna kopuła geodezyjna LED: 15 kroków (ze zdjęciami)

Wideo: Interaktywna kopuła geodezyjna LED: 15 kroków (ze zdjęciami)
Wideo: Дубай Шок От Все Включено! ОАЭ это вам не Египет! Отдых в Дубае 2024, Lipiec
Anonim
Image
Image
Interaktywna kopuła geodezyjna LED
Interaktywna kopuła geodezyjna LED
Interaktywna kopuła geodezyjna LED
Interaktywna kopuła geodezyjna LED
Interaktywna kopuła geodezyjna LED
Interaktywna kopuła geodezyjna LED

Zbudowałem kopułę geodezyjną składającą się ze 120 trójkątów z diodą LED i czujnikiem w każdym trójkącie. Każda dioda LED może być adresowana indywidualnie, a każdy czujnik jest dostrojony specjalnie do pojedynczego trójkąta. Kopuła jest zaprogramowana za pomocą Arduino, aby zapalała się i generowała sygnał MIDI w zależności od tego, który trójkąt umieścisz w dłoni.

Zaprojektowałem kopułę jako zabawny wyświetlacz, który zainteresuje ludzi światłem, elektroniką i dźwiękiem. Ponieważ kopuła dzieli się ładnie na pięć części, zaprojektowałem ją tak, aby miała pięć oddzielnych wyjść MIDI, z których każde może mieć inny dźwięk. Dzięki temu kopuła jest gigantycznym instrumentem muzycznym, idealnym do odtwarzania muzyki z wieloma osobami jednocześnie. Oprócz odtwarzania muzyki zaprogramowałem również kopułę do pokazów świetlnych i grania interpretacji Simona i Ponga. Ostateczna konstrukcja ma nieco ponad metr średnicy i 70 cm wysokości i składa się głównie z elementów drewnianych, akrylowych i drukowanych w 3D.

Jest kilka świetnych instrukcji na stołach i kostkach LED, które zainspirowały mnie do rozpoczęcia tego projektu. Chciałem jednak spróbować ułożyć diody LED w innej geometrii. Nie mogłem wymyślić lepszej konstrukcji dla projektu niż kopuła geodezyjna, która jest również dobrze udokumentowana w Instructables. Tak więc ten projekt jest remiksem/mashupem stołów LED i kopuł geodezyjnych. Poniżej znajdują się linki do tabeli LED i instrukcji kopuły geodezyjnej, które sprawdziłem na początku projektu.

Stoły i kostki 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-…

Kopuła geodezyjna:

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

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

Krok 1: Lista dostaw

Lista dostaw
Lista dostaw
Lista dostaw
Lista dostaw
Lista dostaw
Lista dostaw

Materiały:

1. Drewno na rozpórki kopuły i podstawę kopuły (ilość zależna od typu i wielkości kopuły)

2. Adresowalna taśma LED (16,4 stopy / 5 m adresowalna kolorowa taśma pikselowa LED 160 diod Ws2801 Dc5v)

3. Arduino Uno (Atmega328 - zmontowany)

4. Płytka prototypowa (Penta Angel dwustronna płytka prototypowa uniwersalna (7x9cm))

5. Akryl do rozpraszania diod LED (arkusz akrylowy odlewany, przezroczysty, rozmiar 12 "x 12" x 0,118")

6. Zasilanie (Aiposen 110/220 V do DC12V 30A 360 W przełącznik zasilania sterownika)

7. Przetwornica buck dla Arduino (przetwornica RioRand LM2596 DC-DC buck 1,23V-30V)

8. Przetwornica buck do diod LED i czujników (przetwornica DROK Mini Electric Buck Voltage 15A)

9. 120 czujników podczerwieni (moduł czujnika unikania przeszkód na podczerwień)

10. Pięć 16-kanałowych multiplekserów (analogowy/cyfrowy MUX Breakout - CD74HC4067)

11. Sześć 8-kanałowych multiplekserów (Multiplekser Breakout - 8-kanałowy (74HC4051))

12. Pięć dwukanałowych multiplekserów (MAX4544CPA+)

13. Drut do owijania drutu (lut do PCB 0,25 mm cynowany przewód miedziany Dia drut do owijania drutu 305M 30AWG czerwony)

14. Przewód przyłączeniowy (Solid Core, 22 AWG)

15. Nagłówki pinów (Gikfun 1 x 40 Pin 2,54 mm jednorzędowy męski nagłówek pinów)

16. Pięć gniazd MIDI (gniazdo MIDI przyjazne dla płytek chlebowych (5-pin DIN))

17. Dziesięć rezystorów 220 omów dla gniazd MIDI

18. Dystanse dystansowe do montażu elektroniki na kopule (Stand-off Spacer Hex M3 Male x M3 Female)

19. Adaptery gwintowe do łączenia elementów dystansowych z drewnem (wkładka gwintowana E-Z Lok, mosiądz, gwint nożowy)

20. Klej epoksydowy lub Gorilla Superglue

21. Taśma elektryczna

22. Lutowane

Narzędzia:

1. Stacja lutownicza

2. Wiertarka elektryczna

3. Piła tarczowa

4. Szlifierka orbitalna

5. Piła wyrzynarka

6. Piła ukośna

7. Kątomierz

8. Drukarka 3D

9. Przecinaki do drutu

10. Narzędzie do owijania drutu

11. Wycinarka laserowa do cięcia płyt LED (opcja)

12. Shopbot CNC do podstawy kopuły (opcja)

Krok 2: Projektowanie kopuły geodezyjnej

Projektowanie kopuły geodezyjnej
Projektowanie kopuły geodezyjnej
Projektowanie kopuły geodezyjnej
Projektowanie kopuły geodezyjnej

Jak wspomniałem we wstępie, istnieje kilka źródeł internetowych do budowy własnej kopuły geodezyjnej. Witryny te udostępniają kalkulatory kopuły, które określają długość każdej strony (tj. rozpórki) i liczbę złączy wymaganych dla dowolnego typu kopuły, którą chcesz zbudować. Złożoność kopuły geodezyjnej (tj. gęstość trójkątów) jest określona przez jej klasę (1V, 2V, 3V itd.), przy czym większa złożoność staje się lepszym przybliżeniem idealnej powierzchni kulistej. Aby zbudować własną kopułę, musisz najpierw wybrać średnicę i klasę kopuły.

Użyłem strony o nazwie Domerama, która pomogła mi zaprojektować kopułę 4V, która została przycięta do 5/12 kuli o promieniu 40cm. W przypadku tego typu kopuły istnieje sześć rozpórek o różnych długościach:

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 w sumie 190 rozpórek, które dają do 2223 cm (73 stopy) materiału. Użyłem tarcicy sosnowej 1x3 (3/4" × 2-1/2") do rozpórek w tej kopule. Aby połączyć rozpórki, zaprojektowałem i wydrukowałem złącza 3D za pomocą Autocad. Pliki STL są dostępne do pobrania na końcu tego kroku. Liczba złącz dla kopułki 4V 5/12 to:

20 X 4-złącze

6X5 złącze

Złącze 45X6

W następnym kroku opiszę, jak zbudowana jest ta kopuła z drewnianymi rozpórkami i zaprojektowanymi przeze mnie złączami wydrukowanymi w 3D.

Krok 3: Konstruowanie kopuły za pomocą rozpórek i łączników

Konstruowanie kopuły z rozpórkami i złączami
Konstruowanie kopuły z rozpórkami i złączami
Konstruowanie kopuły za pomocą rozpórek i łączników
Konstruowanie kopuły za pomocą rozpórek i łączników
Konstruowanie kopuły z rozpórkami i złączami
Konstruowanie kopuły z rozpórkami i złączami
Konstruowanie kopuły za pomocą rozpórek i łączników
Konstruowanie kopuły za pomocą rozpórek i łączników

Korzystając z obliczeń Domeramy dla kopuły 4V 5/12 wycinałem rozpórki piłą tarczową. 190 rozpórek zostało oznakowanych i umieszczonych w pudełku po cięciu. 71 złączy (20 czterozłączek, 6 pięciozłączek i 45 sześciozłączek) zostało wydrukowanych w 3D za pomocą Makerbota. Drewniane rozpórki zostały włożone w łączniki zgodnie ze schematem stworzonym przez Domeramę. Zacząłem budowę od góry i ruszyłem promieniście na zewnątrz.

Po połączeniu wszystkich rozpórek, usuwałem jedną rozpórkę na raz i dodałem żywicę epoksydową do drewna i złącza. Złącza zostały zaprojektowane tak, aby zapewnić elastyczność w sposobie łączenia struktur, dlatego ważne było sprawdzenie symetrii kopuły przed dodaniem żywicy epoksydowej.

Krok 4: Cięcie laserowe i montaż płyt podstawy

Cięcie laserowe i montaż płyt bazowych
Cięcie laserowe i montaż płyt bazowych
Cięcie laserowe i montaż płyt bazowych
Cięcie laserowe i montaż płyt bazowych
Cięcie laserowe i montaż płyt bazowych
Cięcie laserowe i montaż płyt bazowych
Cięcie laserowe i montaż płyt bazowych
Cięcie laserowe i montaż płyt bazowych

Teraz, gdy szkielet kopuły jest już skonstruowany, nadszedł czas na wycięcie trójkątnych płyt fundamentowych. Te płyty bazowe są przymocowane do spodu rozpórek i służą do mocowania diod LED do kopuły. Początkowo wycinałem płyty bazowe ze sklejki o grubości 5 mm (3/16”), mierząc pięć różnych trójkątów znajdujących się na kopule: AAB (30 trójkątów), BCC (25 trójkątów), DDE (20 trójkątów), CDF (40 trójkątów).) i EEE (5 trójkątów). Wymiary każdego boku i kształt trójkątów zostały określone za pomocą kalkulatora kopuły (Domerama) i pewnej geometrii. Po wycięciu testowych płytek bazowych za pomocą wyrzynarki narysowałem trójkąt za pomocą Coral Draw, a pozostałe płytki wycinałem laserowo (znacznie szybciej!). Jeśli nie masz dostępu do wycinarki laserowej, możesz narysować płyty fundamentowe na sklejce za pomocą linijki i kątomierza i wyciąć je wszystkie za pomocą wyrzynarki. Po wycięciu płyt bazowych kopuła jest odwracana, a płyty przykleja się do kopuły za pomocą kleju do drewna.

Krok 5: Przegląd elektroniki

Przegląd elektroniki
Przegląd elektroniki

Na powyższym rysunku pokazano schemat elektroniki kopuły. Arduino Uno służy do zapisywania i odczytywania sygnałów dla kopuły. Aby oświetlić kopułę, pasek LED RGB jest przesuwany po kopule, tak aby dioda LED była umieszczona w każdym ze 120 trójkątów. Aby uzyskać informacje na temat działania taśmy LED, zapoznaj się z tą instrukcją. Każda dioda LED może być adresowana oddzielnie za pomocą Arduino, które generuje szeregowe dane i sygnał zegarowy dla listwy (patrz schemat pinów A0 i A1). Dzięki samemu paskowi i tym dwóm sygnałom możesz mieć niesamowitą, podświetlaną kopułę. Istnieją inne sposoby pisania sygnałów dla wielu diod LED z Arduino, takie jak Charlieplexing i rejestry przesuwne.

W celu interakcji z kopułą ustawiłem czujnik podczerwieni nad każdą diodą LED. Czujniki te służą do wykrywania, kiedy czyjaś ręka znajduje się blisko trójkąta na kopule. Ponieważ każdy trójkąt na kopule ma swój własny czujnik podczerwieni i jest 120 trójkątów, będziesz musiał wykonać pewnego rodzaju multipleksowanie przed Arduino. Zdecydowałem się użyć pięciu 24-kanałowych multiplekserów (MUX) dla 120 czujników na kopule. Oto instrukcja na temat multipleksowania, jeśli nie jesteś zaznajomiony. 24-kanałowy MUX wymaga pięciu sygnałów sterujących. Wybrałem piny 8-12 na Arduino, aby móc manipulować portami (więcej informacji znajdziesz w Kroku 10). Wyjścia płyt MUX są wczytywane za pomocą pinów 3-7.

Dołączyłem również pięć wyjść MIDI na kopule, aby mogła generować dźwięk (krok 11). Innymi słowy, na kopule może grać jednocześnie pięć osób, a każde wyjście odtwarza inny dźwięk. W Arduino jest tylko jeden pin TX, więc pięć sygnałów MIDI wymaga demultipleksowania. Ponieważ wyjście MIDI jest wytwarzane w innym czasie niż odczyt czujnika IR, użyłem tych samych sygnałów sterujących.

Po wczytaniu wszystkich wejść czujnika podczerwieni do Arduino, kopuła może się świecić i odtwarzać dźwięki, niezależnie od tego, jak zaprogramujesz Arduino. Mam kilka przykładów w kroku 14 tej instrukcji.

Krok 6: Montaż diod LED na kopule

Montaż diod LED na kopule
Montaż diod LED na kopule
Montaż diod LED na kopule
Montaż diod LED na kopule
Montaż diod LED na kopule
Montaż diod LED na kopule

Ponieważ kopuła jest tak duża, pasek LED należy przyciąć, aby umieścić jedną diodę LED na każdym trójkącie. Każda dioda LED jest przyklejona na trójkącie za pomocą super kleju. Po obu stronach diody LED wywiercony jest otwór w płycie bazowej, przez który można poprowadzić kable przez kopułę. Następnie przylutowałem przewód przyłączeniowy przy każdym styku na diodzie LED (5V, masa, zegar, sygnał) i przepuściłem przewody przez płytkę bazową. Przewody te są cięte tak, aby były wystarczająco długie, aby dotrzeć do następnej diody LED na kopule. Przewody są przeciągane do następnej diody LED, a proces jest kontynuowany. Podłączyłem diody LED w konfiguracji, która zminimalizuje ilość wymaganego przewodu, a jednocześnie będzie miała sens w późniejszym adresowaniu diod LED za pomocą Arduino. Mniejsza kopułka wyeliminowałaby konieczność docinania paska i zaoszczędziłaby dużo czasu na lutowanie. Inną opcją jest użycie oddzielnych diod LED RGB z rejestrami przesuwnymi.

Komunikacja szeregowa z listwą realizowana jest za pomocą dwóch pinów (pin danych i pin zegarowy) z Arduino. Innymi słowy, dane do rozświetlenia kopuły są przekazywane z jednej diody LED do drugiej, gdy opuszcza ona pin danych. Oto przykładowy kod zmodyfikowany z tego forum Arduino:

// Spraw, aby cała kopuła zwiększała i zmniejszała intensywność pojedynczego koloru

#define numLeds 120 //Liczba diod LED // OUTPUT PINS // int clockPin = A1; // zdefiniuj pin zegara int dataPin = A0; // zdefiniuj pin danych // ZMIENNE // int red[numLeds]; // Zainicjuj tablicę dla taśmy LED int green[numLeds]; // Zainicjuj tablicę dla taśmy LED int blue[numLeds]; // Zainicjuj tablicę dla taśmy LED //STAŁA podwójna skalaA = {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}; // ułamek intensywności diody void setup() { pinMode(clockPin, OUTPUT); pinMode(dataPin, WYJŚCIE); memset(czerwony, 0, numLeds); memset(zielony, 0, numLeds); memset(niebieski, 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++) // pętla zwiększająca natężenie światła kopuły { podwójna skala = scaleA[p]; opóźnienie(20); for (int i = 0; i < numLeds; i++) // przejdź przez wszystkie diody LED { red = 255 * scale; zielony = 80 * skala; niebieski = 0; } updatestring(czerwony, zielony, niebieski); // zaktualizuj pasek led } }

Krok 7: Projekt i wdrożenie mocowania czujnika

Projekt i wdrożenie mocowania czujnika
Projekt i wdrożenie mocowania czujnika
Projekt i wdrożenie mocowania czujnika
Projekt i wdrożenie mocowania czujnika
Projekt i wdrożenie mocowania czujnika
Projekt i wdrożenie mocowania czujnika

Postanowiłem zastosować do kopuły czujniki podczerwieni. Czujniki te mają diodę podczerwieni i odbiornik. Gdy jakiś przedmiot znajdzie się przed czujnikiem, część promieniowania podczerwonego z diody IR jest odbijana w kierunku odbiornika. Zacząłem ten projekt od stworzenia własnych czujników podczerwieni, które były oparte na instruktażach Richardouviny. Całe lutowanie trwało zbyt długo, więc kupiłem 120 czujników podczerwieni z eBay, z których każdy wytwarza wyjście cyfrowe. Próg czujnika jest ustawiany potencjometrem na płytce tak, aby wyjście było wysokie tylko wtedy, gdy ręka znajduje się w pobliżu tego trójkąta.

Każdy trójkąt składa się z płyty bazowej LED ze sklejki, arkusza dyfuzyjnego akrylu zamontowanego około 2,5 cm nad płytą LED oraz czujnika podczerwieni. Czujnik dla każdego trójkąta został zamontowany na arkuszu cienkiej sklejki w kształcie pięciokąta lub sześciokąta w zależności od położenia na kopule (patrz rysunek powyżej). Wywierciłem otwory w podstawie czujnika IR, aby zamontować czujniki IR, a następnie połączyłem masę i piny 5V za pomocą drutu do owijania i narzędzia do owijania drutu (przewody czerwony i czarny). Po podłączeniu masy i 5V owinąłem długi drut owijki na każdym wyjściu (żółty), uziemieniu i 5V, aby przejść przez kopułę.

Sześciokątne lub pięciokątne mocowania czujników podczerwieni zostały następnie przyklejone epoksydem do kopuły, tuż nad wydrukowanymi złączami 3D, aby przewód mógł przebiegać przez kopułę. Mając czujniki nad złączami, mogłem również uzyskać dostęp i regulować potencjometry na czujnikach podczerwieni, które kontrolują czułość czujników. W kolejnym kroku opiszę, jak wyjścia czujników IR są podłączane do multiplekserów i wczytywane do Arduino.

Krok 8: Multipleksowanie wyjścia czujnika

Wyjście czujnika multipleksowania
Wyjście czujnika multipleksowania
Wyjście czujnika multipleksowania
Wyjście czujnika multipleksowania
Wyjście czujnika multipleksowania
Wyjście czujnika multipleksowania

Ponieważ Arduino Uno ma tylko 14 cyfrowych pinów I/O i 6 analogowych pinów wejściowych i jest 120 sygnałów czujników, które muszą być odczytane, kopuła wymaga multiplekserów do odczytania wszystkich sygnałów. Zdecydowałem się zbudować pięć 24-kanałowych multiplekserów, z których każdy odczytuje 24 czujniki podczerwieni (patrz rysunek przeglądowy elektroniki). 24-kanałowy MUX składa się z 8-kanałowej tablicy MUX, 16-kanałowej tablicy MUX i 2-kanałowego MUX. Do każdej płytki zaciskowej przylutowano główki pinów, aby można je było podłączyć do płytki prototypowej. Używając narzędzia do owijania drutu, podłączyłem masę, 5 V i styki sygnału sterującego płyt zaciskowych MUX.

24-kanałowy MUX wymaga pięciu sygnałów sterujących, które wybrałem do podłączenia do pinu 8-12 w Arduino. Wszystkie pięć 24-kanałowych MUX-ów otrzymuje te same sygnały sterujące z Arduino, więc podłączyłem przewód z pinów Arduino do 24-kanałowego MUX-a. Wyjścia cyfrowe czujników podczerwieni są podłączone do pinów wejściowych 24-kanałowego MUX'a, dzięki czemu można je wczytać szeregowo do Arduino. Ponieważ na wszystkich 120 wyjściach czujników jest pięć oddzielnych pinów do odczytu, warto wyobrazić sobie, że kopuła jest podzielona na pięć oddzielnych sekcji składających się z 24 trójkątów (sprawdź kolory kopuły na rysunku).

Korzystając z manipulacji portami Arduino, możesz szybko zwiększyć sygnały sterujące wysyłane przez piny 8-12 do multiplekserów. Załączam tutaj przykładowy kod do obsługi multiplekserów:

int liczba kanałów = 24;

// WYJŚCIA // int s0 = 8; // Kontrola MUX 0 - PORTbD int s1 = 9; // Kontrola MUX 1 - PORTb int s2 = 10; // Kontrola MUX 2 - PORTb int s3 = 11; // Kontrola MUX 3 - PORTb int s4 = 12; // Sterowanie MUX 4 - PORTb // WEJŚCIA // int m0 = 3; // wejście MUX 0 int m1 = 4; // wejście MUX 1 int m2 = 5; // wejście MUX 2 int m3 = 6; // wejście MUX 3 int m4 = 7; // wejście MUX 4 // ZMIENNE // int arr0r; // odczyt cyfrowy z MUX0 int arr1r; // odczyt cyfrowy z MUX1 int arr2r; // odczyt cyfrowy z MUX2 int arr3r; // odczyt cyfrowy z MUX3 int arr4r; // odczyt cyfrowy z MUX4 void setup() { // wstaw tutaj swój kod konfiguracyjny do jednorazowego uruchomienia: DDRB = B11111111; // ustawia piny Arduino od 8 do 13 jako wejścia pinMode(s0, OUTPUT); pinMode(s1, WYJŚCIE); pinMode(s2, WYJŚCIE); pinMode(s3, WYJŚCIE); pinMode(s4, WYJŚCIE); pinMode(m0, INPUT); pinMode(m1, WEJŚCIE); pinMode(m2, WEJŚCIE); pinMode(m3, WEJŚCIE); pinMode(m4, WEJŚCIE); } void loop() { // umieść tutaj swój główny kod, aby uruchamiać się wielokrotnie: PORTB = B00000000; // USTAW piny kontrolne dla mux low for (int i = 0; i < numChannel; i++) { // Cyfrowe wyjście odczytu MUX0 - MUX4 dla czujnika IR i // Jeśli czujnik IR jest LO, trójkąt jest dotykany przez gracza. arr0r = odczyt cyfrowy(m0); // odczyt z Mux 0, czujnik IR i arr1r = digitalRead(m1); // odczyt z Mux 1, czujnik IR i arr2r = digitalRead(m2); // odczyt z Mux 2, czujnik podczerwieni i arr3r = digitalRead(m3); // odczyt z Mux 3, czujnik podczerwieni i arr4r = digitalRead(m4); // odczyt z Mux 4, czujnik IR i // ZRÓB COŚ Z WEJŚCIAMI MUX LUB ZAPISZ W MATRYCE TUTAJ // PORTB ++; // inkrementuj sygnały sterujące dla MUX } }

Krok 9: Rozpraszanie światła za pomocą akrylu

Rozpraszające światło z akrylem
Rozpraszające światło z akrylem
Rozpraszające światło z akrylem
Rozpraszające światło z akrylem
Rozpraszające światło z akrylem
Rozpraszające światło z akrylem

Aby rozproszyć światło z diod LED, przeszlifowałem przezroczysty akryl za pomocą okrągłej szlifierki oscylacyjnej. Szlifierkę przesuwano po obu stronach akrylu ruchem ósemkowym. Uważam, że ta metoda jest znacznie lepsza niż farba w sprayu z „matowego szkła”.

Po przeszlifowaniu i oczyszczeniu akrylu wycinałem laserowo trójkąty pasujące do diod LED. Możliwe jest cięcie akrylu za pomocą narzędzia do cięcia akrylu lub nawet wyrzynarki, jeśli akryl nie pęka. Akryl został przytrzymany nad diodami LED przez prostokąty ze sklejki o grubości 5 mm, również wycięte laserowo. Te małe deski zostały przyklejone do rozpórek na kopule, a akrylowe trójkąty zostały nałożone epoksydem na deski.

Krok 10: Tworzenie muzyki za pomocą kopuły za pomocą MIDI

Tworzenie muzyki za pomocą kopuły za pomocą MIDI
Tworzenie muzyki za pomocą kopuły za pomocą MIDI
Tworzenie muzyki za pomocą kopuły za pomocą MIDI
Tworzenie muzyki za pomocą kopuły za pomocą MIDI
Tworzenie muzyki za pomocą kopuły za pomocą MIDI
Tworzenie muzyki za pomocą kopuły za pomocą MIDI

Chciałem, aby kopuła była w stanie generować dźwięk, więc ustawiłem pięć kanałów MIDI, po jednym dla każdego podzbioru kopuły. Najpierw musisz kupić pięć gniazd MIDI i podłączyć je tak, jak pokazano na schemacie (zobacz ten samouczek od wsparcia Arduino, aby uzyskać więcej informacji).

Ponieważ w Arduino Uno jest tylko jeden pin transmisji szeregowej (pin 2 oznaczony jako pin TX), musisz demultipleksować sygnały wysyłane do pięciu gniazd MIDI. Użyłem tych samych sygnałów sterujących (pin 8-12), ponieważ sygnały MIDI są wysyłane w innym czasie niż podczas wczytywania czujników IR do Arduino. Te sygnały sterujące są wysyłane do 8-kanałowego demultipleksera, dzięki czemu możesz kontrolować, które gniazdo MIDI odbiera sygnał MIDI utworzony przez Arduino. Sygnały MIDI zostały wygenerowane przez Arduino za pomocą wspaniałej biblioteki sygnałów MIDI stworzonej przez Francois Best. Oto przykładowy kod do tworzenia wielu wyjść MIDI do różnych gniazd MIDI za pomocą Arduino Uno:

#include // dołącz bibliotekę MIDI

#define numChannel 24 //Liczba IR na trójkąt #define numSections 5 //liczba sekcji w kopule, liczba 24-kanałowych MUX-ów, liczba gniazd MIDI // WYJŚCIA // int s0 = 8; // Kontrola MUX 0 - PORTbD int s1 = 9; // Kontrola MUX 1 - PORTb int s2 = 10; // Kontrola MUX 2 - PORTb int s3 = 11; // Kontrola MUX 3 - PORTb int s4 = 12; // Sterowanie MUX 4 - PORTb // WEJŚCIA // int m0 = 3; // wejście MUX 0 int m1 = 4; // wejście MUX 1 int m2 = 5; // wejście MUX 2 int m3 = 6; // wejście MUX 3 int m4 = 7; // wejście MUX 4 // ZMIENNE // int arr0r; // odczyt cyfrowy z MUX0 int arr1r; // odczyt cyfrowy z MUX1 int arr2r; // odczyt cyfrowy z MUX2 int arr3r; // odczyt cyfrowy z MUX3 int arr4r; // odczyt cyfrowy z MUX4 int midArr[numSections]; // Zapisz, czy notatka została naciśnięta przez jednego z graczy int note2play[numSections]; // Zapisz notatkę do odtworzenia po dotknięciu czujnika 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 pauzaMidi = 4000; // pauza między sygnałami midi MIDI_CREATE_DEFAULT_INSTANCE(); void setup() { // umieść tutaj swój kod konfiguracji, aby uruchomić raz: DDRB = B11111111; // ustawia piny Arduino od 8 do 13 jako wejścia MIDI.begin(MIDI_CHANNEL_OFF); pinMode(s0, WYJŚCIE); pinMode(s1, WYJŚCIE); pinMode(s2, WYJŚCIE); pinMode(s3, WYJŚCIE); pinMode(s4, WYJŚCIE); pinMode(m0, INPUT); pinMode(m1, WEJŚCIE); pinMode(m2, WEJŚCIE); pinMode(m3, WEJŚCIE); pinMode(m4, WEJŚCIE); } void loop() { // umieść tutaj swój główny kod, aby uruchamiać się wielokrotnie: PORTB = B00000000; // USTAW piny kontrolne dla mux low for (int i = 0; i < numChannel; i++) { // Cyfrowe wyjście odczytu MUX0 - MUX4 dla czujnika IR i // Jeśli czujnik IR jest LO, trójkąt jest dotykany przez gracza. arr0r = odczyt cyfrowy(m0); // odczyt z Mux 0, czujnik IR i arr1r = digitalRead(m1); // odczyt z Mux 1, czujnik IR i arr2r = digitalRead(m2); // odczyt z Mux 2, czujnik podczerwieni i arr3r = digitalRead(m3); // odczyt z Mux 3, czujnik podczerwieni i arr4r = digitalRead(m4); // odczyt z Mux 4, czujnik IR i if (arr0r == 0)// Czujnik na sekcji 0 został zablokowany { midArr[0] = 1; // Gracz 0 uderzył nutę, ustaw HI, aby było wyjście MIDI dla gracza 0 note2play[0] = notes; // Uwaga do gry dla Gracza 0 } if (arr1r == 0)// Czujnik w sekcji 1 został zablokowany { midArr[1] = 1; // Gracz 0 uderzył nutę, ustaw HI, aby było wyjście MIDI dla gracza 0 note2play[1] = notes; // Uwaga do gry dla Gracza 0 } if (arr2r == 0)// Czujnik w sekcji 2 został zablokowany { midArr[2] = 1; // Gracz 0 uderzył nutę, ustaw HI, aby było wyjście MIDI dla gracza 0 note2play[2] = notes; // Uwaga do gry dla Gracza 0 } if (arr3r == 0)// Czujnik w sekcji 3 został zablokowany { midArr[3] = 1; // Gracz 0 uderzył nutę, ustaw HI, aby było wyjście MIDI dla gracza 0 note2play[3] = notes; // Notatka do gry dla Gracza 0 } if (arr4r == 0)// Czujnik w sekcji 4 został zablokowany { midArr[4] = 1; // Gracz 0 uderzył nutę, ustaw HI, aby było wyjście MIDI dla gracza 0 note2play[4] = notes; // Notatka do odtworzenia dla Gracza 0 } PORTB ++; // inkrementuj sygnały sterujące dla MUX } updateMIDI(); } void updateMIDI() { PORTB = B00000000; // USTAW piny sterujące dla mux low if (midArr[0] == 1) // Player 0 MIDI output { MIDI.sendNoteOn(note2play[0], 127, 1); delayMikrosekundy(pauseMidi); MIDI.sendNoteOff(note2play[0], 127, 1); delayMikrosekundy(pauseMidi); } PORTB++; // inkrementuj MUX if (midArr[1] == 1) // Player 1 MIDI output { MIDI.sendNoteOn(note2play[1], 127, 1); delayMikrosekundy(pauseMidi); MIDI.sendNoteOff(note2play[1], 127, 1); delayMikrosekundy(pauseMidi); } PORTB++; // zwiększ MUX if (midArr[2] == 1) // Wyjście MIDI odtwarzacza 2 { MIDI.sendNoteOn(note2play[2], 127, 1); delayMikrosekundy(pauseMidi); MIDI.sendNoteOff(note2play[2], 127, 1); delayMikrosekundy(pauseMidi); } PORTB++; // zwiększ MUX if (midArr[3] == 1) // Wyjście MIDI odtwarzacza 3 { MIDI.sendNoteOn(note2play[3], 127, 1); delayMikrosekundy(pauseMidi); MIDI.sendNoteOff(note2play[3], 127, 1); delayMikrosekundy(pauseMidi); } PORTB++; // zwiększ MUX if (midArr[4] == 1) // Player 4 MIDI output { MIDI.sendNoteOn(note2play[4], 127, 1); delayMikrosekundy(pauseMidi); MIDI.sendNoteOff(note2play[4], 127, 1); delayMikrosekundy(pauseMidi); } midArr[0] = 0; midArr[1] = 0; midArr[2] = 0; midArr[3] = 0; midArr[4] = 0; }

Krok 11: Zasilanie kopuły

Zasilanie kopuły
Zasilanie kopuły
Zasilanie kopuły
Zasilanie kopuły
Zasilanie kopuły
Zasilanie kopuły
Zasilanie kopuły
Zasilanie kopuły

Jest kilka komponentów, które wymagają zasilania w kopule. Dlatego będziesz musiał obliczyć ampery pobierane z każdego komponentu, aby określić zasilacz, który musisz kupić.

Taśma LED: użyłem około 3,75 metra taśmy LED Ws2801, która zużywa 6,4 W/metr. Odpowiada to 24W (3,75*6.4). Aby przeliczyć to na ampery, użyj opcji Power = current*volts (P=iV), gdzie V jest napięciem paska LED, w tym przypadku 5V. Zatem prąd pobierany z diod LED wynosi 4,8A (24W/5V = 4,8A).

Czujniki IR: Każdy czujnik IR pobiera około 25 mA, w sumie 3 A na 120 czujników.

Arduino: 100mA, 9V

Multipleksery: Istnieje pięć 24-kanałowych multiplekserów, z których każdy składa się z 16-kanałowego i 8-kanałowego multipleksera. 8-kanałowy i 16-kanałowy MUX pobiera około 100mA. Dlatego całkowity pobór mocy wszystkich MUX-ów wynosi 1A.

Sumując te komponenty, oczekuje się, że całkowity pobór mocy wyniesie około 9A. Pasek LED, czujniki podczerwieni i multipleksery mają napięcie wejściowe 5V, a Arduino ma napięcie wejściowe 9V. Dlatego wybrałem zasilacz 12V 15A, konwerter buck 15A do konwersji 12V na 5V i konwerter buck 3A do konwersji 12V na 9V dla Arduino.

Krok 12: Podstawa z okrągłą kopułą

Podstawa z okrągłą kopułą
Podstawa z okrągłą kopułą
Podstawa z okrągłą kopułą
Podstawa z okrągłą kopułą
Podstawa z okrągłą kopułą
Podstawa z okrągłą kopułą

Kopuła spoczywa na okrągłym kawałku drewna z wyciętym w środku pięciokątem, co ułatwia dostęp do elektroniki. Aby stworzyć tę okrągłą podstawę, arkusz sklejki o wymiarach 4x6 cali został wycięty za pomocą routera CNC do drewna. Na tym etapie można również użyć wyrzynarki. Po wycięciu podstawy kopuła została do niej przymocowana za pomocą małych drewnianych klocków 2x3”.

Na górze podstawy umieściłem zasilacz z żywicą epoksydową oraz konwertery MUX i Buck z dystansowymi dystansami PCB. Przekładki zostały przymocowane do sklejki za pomocą adapterów gwintowanych E-Z Lok.

Krok 13: Podstawa kopuły Pentagonu

Podstawa kopuły Pentagonu
Podstawa kopuły Pentagonu
Baza kopuły Pentagonu
Baza kopuły Pentagonu
Baza kopuły Pentagonu
Baza kopuły Pentagonu

Oprócz okrągłej podstawy zbudowałem również pięciokątną podstawę kopuły z wziernikiem na dole. Ta podstawa i wyglądające okno zostały również wykonane ze sklejki wyciętej frezarką CNC do drewna. Boki pięciokąta wykonane są z drewnianych desek, z których jedna ma otwór, przez który przechodzą łączniki. Za pomocą metalowych wsporników i połączeń blokowych 2x3 drewniane deski są mocowane do podstawy pięciokąta. Wyłącznik zasilania, złącza MIDI i złącze USB są podłączone do przedniego panelu, który stworzyłem za pomocą wycinarki laserowej. Cała podstawa pięciokąta jest przykręcona do okrągłej podstawy opisanej w kroku 12.

Zainstalowałem okienko na dole kopuły, aby każdy mógł zajrzeć w górę kopuły i zobaczyć elektronikę. Lusterko wykonane jest z akrylu wyciętego wycinarką laserową i jest epoksydowane do okrągłego kawałka sklejki.

Krok 14: Programowanie kopuły

Możliwości programowania kopuły są nieograniczone. Każdy cykl kodu pobiera sygnały z czujników podczerwieni, które wskazują trójkąty, które zostały przez kogoś dotknięte. Dzięki tym informacjom możesz pokolorować kopułę dowolnym kolorem RGB i/lub wygenerować sygnał MIDI. Oto kilka przykładów programów, które napisałem dla kopuły:

Pokoloruj kopułę: każdy trójkąt przechodzi przez cztery kolory, gdy jest dotykany. Gdy kolory się zmieniają, grane jest arpeggio. Za pomocą tego programu możesz pokolorować kopułę na tysiące różnych sposobów.

Muzyka kopuły: Kopuła jest pokolorowana pięcioma kolorami, każda sekcja odpowiada innemu wyjściu MIDI. W programie możesz wybrać, które nuty gra każdy trójkąt. Zdecydowałem się zacząć od środka C na szczycie kopuły i zwiększać wysokość, gdy trójkąty zbliżały się do podstawy. Ponieważ istnieje pięć wyjść, ten program jest idealny do jednoczesnego grania wielu osób na kopule. Używając instrumentu MIDI lub oprogramowania MIDI, te sygnały MIDI mogą brzmieć jak każdy instrument.

Simon: Napisałem wersję Simona, klasyczną grę rozjaśniania pamięci. Losowa sekwencja świateł jest oświetlana pojedynczo na całej kopule. W każdej turze gracz musi skopiować sekwencję. Jeśli gracz prawidłowo dopasuje sekwencję, do sekwencji zostanie dodane dodatkowe światło. Wysoki wynik jest przechowywany w jednej z sekcji kopuły. Ta gra jest również bardzo przyjemna dla wielu osób.

Pong: Dlaczego nie zagrać w ponga na kopule? Kula rozchodzi się po kopule, aż do trafienia w wiosło. Kiedy tak się dzieje, wytwarzany jest sygnał MIDI, wskazujący, że wiosło uderzyło w piłkę. Drugi gracz musi następnie skierować wiosło wzdłuż dna kopuły tak, aby odbiło piłkę.

Krok 15: Zdjęcia ukończonej kopuły

Zdjęcia ukończonej kopuły
Zdjęcia ukończonej kopuły
Zdjęcia ukończonej kopuły
Zdjęcia ukończonej kopuły
Zdjęcia ukończonej kopuły
Zdjęcia ukończonej kopuły
Zdjęcia ukończonej kopuły
Zdjęcia ukończonej kopuły
Konkurs Arduino 2016
Konkurs Arduino 2016
Konkurs Arduino 2016
Konkurs Arduino 2016

Nagroda główna w konkursie Arduino 2016

Konkurs remiksów 2016
Konkurs remiksów 2016
Konkurs remiksów 2016
Konkurs remiksów 2016

II nagroda w Konkursie Remiksów 2016

Konkurs Make it Glow 2016
Konkurs Make it Glow 2016
Konkurs Make it Glow 2016
Konkurs Make it Glow 2016

II nagroda w konkursie Make it Glow 2016

Zalecana: