Innehållsförteckning:

Interaktiv geodetisk LED -kupol: 15 steg (med bilder)
Interaktiv geodetisk LED -kupol: 15 steg (med bilder)

Video: Interaktiv geodetisk LED -kupol: 15 steg (med bilder)

Video: Interaktiv geodetisk LED -kupol: 15 steg (med bilder)
Video: Mars Rover Garage - Insulated Multilayer Geodesic Dome home. Cite l'espace, Toulouse, France. 2024, Juli
Anonim
Image
Image
Interaktiv geodetisk LED -kupol
Interaktiv geodetisk LED -kupol
Interaktiv geodetisk LED -kupol
Interaktiv geodetisk LED -kupol
Interaktiv geodetisk LED -kupol
Interaktiv geodetisk LED -kupol

Jag konstruerade en geodesisk kupol bestående av 120 trianglar med en LED och sensor vid varje triangel. Varje LED kan adresseras individuellt och varje sensor är avstämd specifikt för en enda triangel. Kupolen är programmerad med en Arduino för att lysa upp och producera en MIDI -signal beroende på vilken triangel du placerar din hand.

Jag utformade kupolen för att vara en rolig display som får folk att intressera sig för ljus, elektronik och ljud. Eftersom kupolen delar sig fint i fem delar, konstruerade jag kupolen för att ha fem separata MIDI -utgångar som var och en kan ha ett annat ljud. Detta gör kupolen till ett gigantiskt musikinstrument, perfekt för att spela musik med flera personer samtidigt. Förutom att spela musik, programmerade jag också kupolen för ljusshower och spelade en återgivning av Simon och Pong. Den slutliga strukturen är lite mer än en meter i diameter och 70 cm hög och är främst konstruerad med trä, akryl och 3D -tryckta delar.

Det finns flera bra instruktioner på LED -bord och kuber som inspirerade mig att starta detta projekt. Jag ville dock försöka ordna lysdioderna i en annan geometri. Jag kunde inte tänka mig en bättre struktur för projektet än en geodetisk kupol, som också är väl dokumenterad på Instructables. Så det här projektet är en remix/mashup av LED -bord och geodesiska kupoler. Nedan finns länkar till LED -bordet och geodetiska kupolinstruktioner som jag checkade ut i början av projektet.

LED -bord och kuber:

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

Geodetisk kupol:

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

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

Steg 1: Utbudslista

Utbudslista
Utbudslista
Utbudslista
Utbudslista
Utbudslista
Utbudslista

Material:

1. Trä för kupolben och kupolbotten (mängden beror på kupolens typ och storlek)

2. Adresserbar LED -remsa (16,4ft/5m adresserbar färg LED -pixelremsa 160leds Ws2801 Dc5v)

3. Arduino Uno (Atmega328 - monterad)

4. Prototypkort (Penta Angel Double-Side Prototype PCB Universal (7x9cm))

5. Akryl för spridning av lysdioder (gjutet akrylark, klart, 12 "x 12" x 0,118 "storlek)

6. Strömförsörjning (Aiposen 110/220V till DC12V 30A 360W switch strömförsörjningsdrivrutin)

7. Buck-omvandlare för Arduino (RioRand LM2596 DC-DC Buck Converter 1.23V-30V)

8. Buck -omvandlare för lysdioder och sensorer (DROK Mini Electric Buck Voltage Converter 15A)

9. 120 IR -sensorer (Infraröd Obstakel Undvikande Sensormodul)

10. Fem 16 -kanals multiplexrar (Analog/Digital MUX Breakout - CD74HC4067)

11. Sex 8 -kanals multiplexrar (Multiplexer Breakout - 8 -kanals (74HC4051))

12. Fem 2 -kanals multiplexrar (MAX4544CPA+)

13. Wire wrap wire (PCB Solder 0.25mm Tin Plated Copper Cord Dia Wire-wrapping Wire 305M 30AWG Red)

14. Anslutningstråd (Solid Core, 22 AWG)

15. Pin Headers (Gikfun 1 x 40 Pin 2.54mm Single Row Breakaway Male Pin Header)

16. Fem MIDI-uttag (Breadboard-vänliga MIDI-uttag (5-stifts DIN))

17. Tio 220ohm -motstånd för MIDI -uttag

18. Distansdistanser för montering av elektronik till kupol (Stand-off distans Hex M3 hane x M3 hona)

19. Gängadaptrar för att ansluta avstånd till trä (E-Z Lok gängad insats, mässing, knivgänga)

20. Epoxi eller Gorilla Superlim

21. Eltejp

22. Lödning

Verktyg:

1. Lödstation

2. Kraftmaskin

3. Cirkelsåg

4. Orbital slipmaskin

5. Jiggsåg

6. Geringssåg

7. Vridskiva

8. 3D -skrivare

9. Trådskärare

10. Trådlindningsverktyg

11. Laserskärare för skärning av LED -plattor (tillval)

12. CNC -shopbot för kupolbas (tillval)

Steg 2: Designa den geodesiska kupolen

Designa den geodesiska kupolen
Designa den geodesiska kupolen
Designa den geodesiska kupolen
Designa den geodesiska kupolen

Som jag nämnde i inledningen finns det flera onlinekällor för att bygga din egen geodesiska kupol. Dessa platser tillhandahåller kupolräknare som bestämmer längden på varje sida (dvs stag) och antalet kontakter som krävs för vilken typ av kupol du vill bygga. Komplexiteten hos en geodesisk kupol (dvs. trianglarnas densitet) specificeras av dess klass (1V, 2V, 3V och så vidare), med högre komplexitet som blir en bättre approximation av en perfekt sfärisk yta. För att bygga din egen kupol måste du först välja en kupeldiameter och klass.

Jag använde en webbplats som heter Domerama för att hjälpa mig att designa en 4V -kupol som var stympad till 5/12 av en sfär med en radie på 40 cm. För denna typ av kupol finns det sex olika längdstag:

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

Det är totalt 190 stag som lägger till upp till 2223 cm (73 fot) material. Jag använde 1x3 (3/4 "× 2-1/2") tallvirke för stagen i denna kupol. För att ansluta fjäderbenen konstruerade jag och 3D -utskrivna kontakter med Autocad. STL -filerna finns tillgängliga för nedladdning i slutet av detta steg. Antalet kontakter för en 4V 5/12 kupol är:

20 X 4-kontakt

6 X 5-kontakt

45 X 6-kontakt

I nästa steg beskriver jag hur denna kupol är konstruerad med träbenen och de 3D -tryckta kontakterna som jag designat.

Steg 3: Konstruera kupolen med fjäderben och kontakter

Konstruera kupolen med fjäderben och kontakter
Konstruera kupolen med fjäderben och kontakter
Konstruera kupolen med fjäderben och kontakter
Konstruera kupolen med fjäderben och kontakter
Konstruera kupolen med fjäderben och kontakter
Konstruera kupolen med fjäderben och kontakter
Konstruera kupolen med fjäderben och kontakter
Konstruera kupolen med fjäderben och kontakter

Med hjälp av beräkningarna från Domerama för en 4V 5/12 kupol, skar jag stagen med en cirkelsåg. De 190 stagarna märktes och placerades i en låda efter skärning. De 71 kontakterna (20 fyrkontakter, 6 femkontakter och 45 sexkontakter) trycktes i 3D med en Makerbot. Trästagen sattes in i kopplingarna enligt diagrammet som skapats av Domerama. Jag började konstruktionen från toppen och rörde mig radiellt utåt.

Efter att alla fjäderben var anslutna tog jag bort en stag i taget och tillsatte epoxi till träet och kopplingen. Kontaktdonen var utformade för att ha flexibilitet i hur de kopplade strukturerna, så det var viktigt att kontrollera kupolens symmetri innan du lägger till någon epoxi.

Steg 4: Laserskärning och montering av basplattor

Laserskärning och montering av basplattor
Laserskärning och montering av basplattor
Laserskärning och montering av basplattor
Laserskärning och montering av basplattor
Laserskärning och montering av basplattor
Laserskärning och montering av basplattor
Laserskärning och montering av basplattor
Laserskärning och montering av basplattor

Nu när kupolens skelett är konstruerat är det dags att klippa de trekantiga bottenplattorna. Dessa bottenplattor är fästa på botten av stagarna och används för att montera lysdioderna på kupolen. Jag klippte inledningsvis bottenplattorna av 5 mm (3/16”) tjock plywood genom att mäta de fem olika trianglarna som finns på kupolen: AAB (30 trianglar), BCC (25 trianglar), DDE (20 trianglar), CDF (40 trianglar)) och EEE (5 trianglar). Dimensionerna på varje sida och trianglarnas form bestämdes med hjälp av en kupolräknare (Domerama) och viss geometri. Efter att ha klippt testbottenplattor med en sticksåg ritade jag triangelns design med Coral Draw och klippte de återstående bottenplattorna med en laserskärare (mycket snabbare!). Om du inte har tillgång till en laserskärare kan du rita bottenplåtarna på plywood med hjälp av en linjal och gradskiva och klippa dem alla med en sticksåg. När bottenplattorna har skurits vänds kupolen och plattorna limmas på kupolen med hjälp av trälim.

Steg 5: Elektroniköversikt

Elektroniköversikt
Elektroniköversikt

I figuren ovan visas en schematisk bild av elektroniken för kupolen. En Arduino Uno används för att skriva och läsa signaler för kupolen. För att tända kupolen, körs en RGB LED -remsa över kupolen så att en LED placeras vid var och en av de 120 trianglarna. För information om hur en LED -remsa fungerar, kolla in den här instruerbara. Varje lysdiod kan adresseras separat med Arduino, som producerar seriell data och klocksignal för remsan (se A0 och A1 -stiftet i schemat). Med remsan och dessa två signaler ensamma kan du få en fantastisk upplyst kupol. Det finns andra sätt att skriva signaler för massor av LED från en Arduino, till exempel Charlieplexing och skiftregister.

För att interagera med kupolen satte jag upp en IR -sensor ovanför varje lysdiod. Dessa sensorer används för att upptäcka när någons hand är nära en triangel på kupolen. Eftersom varje triangel på kupolen har sin egen IR -sensor och det finns 120 trianglar, måste du göra någon form av multiplexing innan Arduino. Jag bestämde mig för att använda fem 24-kanals multiplexrar (MUX) för de 120 sensorerna på kupolen. Här är en instruktion om multiplexing, om du är obekant. En 24 -kanals MUX kräver fem styrsignaler. Jag valde stift 8-12 på Arduino, så jag kunde göra portmanipulation (se steg 10 för mer information). MUX-kortens utmatning läses in med stift 3-7.

Jag inkluderade också fem MIDI -utgångar på kupolen så att den kunde producera ljud (steg 11). Med andra ord kan fem personer spela kupolen samtidigt med varje utgång som spelar ett annat ljud. Det finns bara en TX -stift på Arduino, så fem MIDI -signaler kräver demultiplexering. Eftersom MIDI -utgången produceras vid en annan tidpunkt än IR -sensoravläsningen använde jag samma styrsignaler.

Efter att alla IR -sensoringångar har lästs in i Arduino kan kupolen tändas och spela ljud men du programmerar Arduino. Jag har några exempel i steg 14 av denna instruerbara.

Steg 6: Montering av lysdioder på kupolen

Montering av lysdioder på kupolen
Montering av lysdioder på kupolen
Montering av lysdioder på kupolen
Montering av lysdioder på kupolen
Montering av lysdioder på kupolen
Montering av lysdioder på kupolen

Eftersom kupolen är så stor måste LED -remsan klippas för att placera en lysdiod på varje triangel. Varje lysdiod limmas på triangeln med hjälp av superlim. På vardera sidan av lysdioden borras ett hål genom bottenplattan för att kablar ska ledas genom kupolen. Jag lödde sedan anslutningstråd vid varje kontakt på lysdioden (5V, jord, klocka, signal) och matar ledningarna genom bottenplattan. Dessa ledningar är kapade så att de är tillräckligt långa för att nå nästa lysdiod på kupolen. Ledningarna dras igenom till nästa lysdiod och processen fortsätter. Jag anslöt lysdioderna i en konfiguration som skulle minimera mängden tråd som krävs samtidigt som det är meningsfullt att adressera lysdioderna med Arduino senare. En mindre kupol skulle eliminera behovet av att klippa remsan och spara mycket tid vid lödning. Ett annat alternativ är att använda separata RGB -lysdioder med skiftregister.

Seriell kommunikation till remsan uppnås med två stift (en data- och klockstift) från Arduino. Med andra ord, data för belysning av kupolen överförs från en lysdiod till nästa när den lämnar datapinnen. Här är exempelkod modifierad från detta Arduino -forum:

// Få hela kupolen att öka och minska intensiteten för enfärg

#define numLeds 120 // Antal lysdioder // OUTPUT PINS // int clockPin = A1; // definiera klocknål int dataPin = A0; // definiera datapinne // VARIABLES // int red [numLeds]; // Initiera array för LED -remsa int grönt [numLeds]; // Initiera array för LED -remsa int blue [numLeds]; // Initiera array för LED -remsa // KONSTANT dubbelskala 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}; // bråkdel av intensiteten för lysdioder ogiltig installation () {pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); memset (röd, 0, numLeds); memset (grön, 0, numLeds); memset (blå, 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 för att öka ljusintensiteten för dome {dubbel skala = skalaA [p]; fördröjning (20); för (int i = 0; i <numLeds; i ++) // bläddra igenom alla lysdioder {röd = 255 * skala; grön = 80 * skala; blå = 0; } updatestring (röd, grön, blå); // uppdatera led strip}}

Steg 7: Sensormonterad design och implementering

Sensormonterad design och implementering
Sensormonterad design och implementering
Sensormonterad design och implementering
Sensormonterad design och implementering
Sensormonterad design och implementering
Sensormonterad design och implementering

Jag bestämde mig för att använda IR -sensorer för kupolen. Dessa sensorer har en IR -LED och mottagare. När ett föremål hamnar framför sensorn reflekteras lite IR -strålning från IR -lysdioden mot mottagaren. Jag startade detta projekt med att göra mina egna IR -sensorer, som var baserade på Richardouvinas instruerbara. Allt lödning tog alldeles för lång tid, så jag köpte 120 IR -sensorer från eBay som var och en producerar en digital utgång. Sensorns tröskelvärde är inställd med en potentiometer på kortet så att utgången är hög endast när en hand är nära den triangeln.

Varje triangel består av en plywood LED-basplatta, ett ark diffusivt akryl monterat cirka 2,5 cm ovanför LED-plattan och en IR-sensor. Sensorn för varje triangel monterades på ett ark tunn plywood formad som en femkant eller sexkant beroende på positionen på kupolen (se figuren ovan). Jag borrade hål i IR-sensorbasen för att montera IR-sensorerna och kopplade sedan marken och 5V-stiften med trådlindningstråd och ett trådlindningsverktyg (röda och svarta trådar). Efter att ha anslutit jord och 5V lindade jag in lång trådtråd på varje utgång (gul), mark och 5V för att springa genom kupolen.

De sexkantiga eller femkantiga IR -sensorfästena epoxades sedan till kupolen, precis ovanför de 3D -tryckta kontakterna, så att tråden kunde gå genom kupolen. Genom att ha sensorerna ovanför kontakterna kunde jag också komma åt och justera potentiometrarna på IR -sensorerna som styr sensornas känslighet. I nästa steg kommer jag att beskriva hur utgångarna från IR -sensorerna är anslutna till multiplexrar och läses in i Arduino.

Steg 8: Multiplexing sensorutgång

Multiplexing sensorutgång
Multiplexing sensorutgång
Multiplexing sensorutgång
Multiplexing sensorutgång
Multiplexing sensorutgång
Multiplexing sensorutgång

Eftersom Arduino Uno bara har 14 digitala I/O -stift och 6 analoga ingångsstiften och det finns 120 sensorsignaler som måste läsas, kräver kupolen att multiplexrar läser in alla signaler. Jag valde att konstruera fem 24-kanals multiplexrar, som var och en läste 24 av IR-sensorerna (se figuren för elektroniköversikt). 24-kanals MUX består av ett 8-kanals MUX-brytkort, 16-kanals MUX-brytkort och 2-kanals MUX. Stifthuvuden löddes till varje utbrottskort så att de kunde anslutas till prototypkort. Med ett trådlindningsverktyg anslöt jag sedan jord, 5V och styrsignalstift på MUX-brytkort.

En 24-kanals MUX kräver fem styrsignaler, som jag valde att ansluta till stift 8-12 på Arduino. Alla fem 24-kanals MUX tar emot samma styrsignaler från Arduino så jag kopplade ledningen från Arduino-stiften till 24-kanals MUX. De digitala utgångarna från IR-sensorerna är anslutna till ingångsstiften på 24-kanals MUX så att de kan läsas in i serie till Arduino. Eftersom det finns fem separata stift för avläsning i alla 120 sensorutgångar, är det bra att tänka sig att kupolen delas upp i fem separata sektioner bestående av 24 trianglar (kolla kupolens färger i figur).

Med Arduino-portmanipulation kan du snabbt öka de styrsignaler som skickas av stift 8-12 till multiplexrarna. Jag har bifogat några exempelkoder för drift av multiplexorerna här:

int numChannel = 24;

// UTGÅNG // int s0 = 8; // MUX -kontroll 0 - PORTbD int s1 = 9; // MUX -kontroll 1 - PORTb int s2 = 10; // MUX -kontroll 2 - PORTb int s3 = 11; // MUX -kontroll 3 - PORTb int s4 = 12; // MUX -kontroll 4 - PORTb // INGÅNGAR // int m0 = 3; // MUX -ingång 0 int m1 = 4; // MUX -ingång 1 int m2 = 5; // MUX -ingång 2 int m3 = 6; // MUX -ingång 3 int m4 = 7; // MUX -ingång 4 // VARIABLES // int arr0r; // digital läsning från MUX0 int arr1r; // digital läsning från MUX1 int arr2r; // digital läsning från MUX2 int arr3r; // digital läsning från MUX3 int arr4r; // digital läsning från MUX4 void setup () {// lägg din installationskod här, för att köra en gång: DDRB = B11111111; // ställer in Arduino -stift 8 till 13 som ingångar pinMode (s0, OUTPUT); pinMode (s1, OUTPUT); pinMode (s2, OUTPUT); pinMode (s3, OUTPUT); pinMode (s4, OUTPUT); pinMode (m0, INPUT); pinMode (m1, INPUT); pinMode (m2, INGÅNG); pinMode (m3, INPUT); pinMode (m4, INPUT); } void loop () {// lägg din huvudkod här för att köra upprepade gånger: PORTB = B00000000; // SET -kontrollpinnar för mux low för (int i = 0; i <numChannel; i ++) {// Digital läsutgång för MUX0 - MUX4 för IR -sensor i // Om IR -sensor är LO berör triangeln av spelaren. arr0r = digitalRead (m0); // läsning från Mux 0, IR -sensor i arr1r = digitalRead (m1); // läsning från Mux 1, IR -sensor i arr2r = digitalRead (m2); // läsning från Mux 2, IR -sensor i arr3r = digitalRead (m3); // läsning från Mux 3, IR -sensor i arr4r = digitalRead (m4); // läsning från Mux 4, IR -sensor i // GÖR NÅGOT MED MUX -INGÅNGAR ELLER LAGR I EN ARRAY HÄR // PORTB ++; // ökningsstyrsignaler för MUX}}

Steg 9: Spridande ljus med akryl

Spridande ljus med akryl
Spridande ljus med akryl
Spridande ljus med akryl
Spridande ljus med akryl
Spridande ljus med akryl
Spridande ljus med akryl

För att sprida ljuset från lysdioderna slipade jag genomskinlig akryl med en cirkelslipmaskin. Slipmaskinen fördes över båda sidorna av akrylen i en figur-8-rörelse. Jag tyckte att denna metod var mycket bättre än "frostat glas" sprayfärg.

Efter slipning och rengöring av akryl använde jag en laserskärare för att skära ut trianglar så att de passade över lysdioderna. Det är möjligt att skära akryl med ett skärverktyg i akryl eller till och med en sticksåg om akrylen inte spricker. Akrylen hölls över lysdioderna med 5 mm tjocka plywood -rektanglar som också skärs med en laserskärare. Dessa små plankor limmades på stagen på kupolen, och akryl trianglarna epoxades på plankorna.

Steg 10: Gör musik med kupolen med MIDI

Gör musik med kupolen med MIDI
Gör musik med kupolen med MIDI
Gör musik med kupolen med MIDI
Gör musik med kupolen med MIDI
Gör musik med kupolen med MIDI
Gör musik med kupolen med MIDI

Jag ville att kupolen skulle kunna producera ljud, så jag satte upp fem MIDI -kanaler, en för varje delmängd av kupolen. Du måste först köpa fem MIDI -uttag och ansluta det som visas i schemat (se denna handledning från Arduino -support för mer information).

Eftersom det bara finns en sändningsseriell stift på Arduino Uno (stift 2 märkt som TX-stift) måste du avmultiplexera signalerna som skickas till de fem MIDI-uttagen. Jag använde samma styrsignaler (stift 8-12), eftersom MIDI-signaler skickas vid en annan tidpunkt än när IR-sensorerna läses in i Arduino. Dessa styrsignaler skickas till en 8-kanals demultiplexer så att du styr vilken MIDI-kontakt som tar emot MIDI-signalen som skapas av Arduino. MIDI -signalerna genererades av Arduino med det fantastiska MIDI -signalbiblioteket skapat av Francois Best. Här är några exempelkoder för att producera flera MIDI -utgångar till olika MIDI -uttag med en Arduino Uno:

#inkludera // inkludera MIDI -bibliotek

#define numChannel 24 // Antal IR per triangel #define numSections 5 // antal sektioner i dome, antal 24channel MUX, antal MIDI -uttag // OUTPUTS // int s0 = 8; // MUX -kontroll 0 - PORTbD int s1 = 9; // MUX -kontroll 1 - PORTb int s2 = 10; // MUX -kontroll 2 - PORTb int s3 = 11; // MUX -kontroll 3 - PORTb int s4 = 12; // MUX -kontroll 4 - PORTb // INGÅNGAR // int m0 = 3; // MUX -ingång 0 int m1 = 4; // MUX -ingång 1 int m2 = 5; // MUX -ingång 2 int m3 = 6; // MUX -ingång 3 int m4 = 7; // MUX -ingång 4 // VARIABLES // int arr0r; // digital läsning från MUX0 int arr1r; // digital läsning från MUX1 int arr2r; // digital läsning från MUX2 int arr3r; // digital läsning från MUX3 int arr4r; // digital läsning från MUX4 int midArr [numSections]; // Spara om en anteckning har tryckts ned av någon av spelarna int note2play [numSections]; // Spara anteckning som ska spelas upp om sensorn trycks int toner [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; // paustid mellan midisignaler MIDI_CREATE_DEFAULT_INSTANCE (); void setup () {// lägg din installationskod här, för att köra en gång: DDRB = B11111111; // ställer in Arduino -stift 8 till 13 som ingångar 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, INGÅNG); pinMode (m3, INPUT); pinMode (m4, INPUT); } void loop () {// lägg din huvudkod här för att köra upprepade gånger: PORTB = B00000000; // SET -kontrollpinnar för mux low för (int i = 0; i <numChannel; i ++) {// Digital läsutgång för MUX0 - MUX4 för IR -sensor i // Om IR -sensor är LO berör triangeln av spelaren. arr0r = digitalRead (m0); // läsning från Mux 0, IR -sensor i arr1r = digitalRead (m1); // läsning från Mux 1, IR -sensor i arr2r = digitalRead (m2); // läsning från Mux 2, IR -sensor i arr3r = digitalRead (m3); // läsning från Mux 3, IR -sensor i arr4r = digitalRead (m4); // läsning från Mux 4, IR -sensor i om (arr0r == 0) // Sensor på sektion 0 blockerades {midArr [0] = 1; // Spelare 0 har träffat en ton, ställ in HI så att det finns MIDI -utgång för spelare 0 note2play [0] = noter ; // Obs för att spela för spelare 0} om (arr1r == 0) // Sensor på avsnitt 1 blockerades {midArr [1] = 1; // Spelare 0 har träffat en ton, ställ in HI så att det finns MIDI -utgång för spelare 0 note2play [1] = noter ; // Obs för att spela för spelare 0} om (arr2r == 0) // Sensor på avsnitt 2 blockerades {midArr [2] = 1; // Spelare 0 har träffat en ton, ställ in HI så att det finns MIDI -utgång för spelare 0 note2play [2] = noter ; // Obs för att spela för spelare 0} om (arr3r == 0) // Sensor på avsnitt 3 blockerades {midArr [3] = 1; // Spelare 0 har träffat en ton, ställ in HI så att det finns MIDI -utgång för spelare 0 note2play [3] = noter ; // Obs för att spela för spelare 0} om (arr4r == 0) // Sensor på avsnitt 4 blockerades {midArr [4] = 1; // Spelare 0 har träffat en ton, ställ in HI så att det finns MIDI -utgång för spelare 0 note2play [4] = noter ; // Obs för att spela för spelare 0} PORTB ++; // ökningsstyrsignaler för MUX} updateMIDI (); } void updateMIDI () {PORTB = B00000000; // SET -kontrollpinnar för mux low if (midArr [0] == 1) // Player 0 MIDI -utgång {MIDI.sendNoteOn (note2play [0], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // öka MUX if (midArr [1] == 1) // Player 1 MIDI -utgång {MIDI.sendNoteOn (note2play [1], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // öka MUX if (midArr [2] == 1) // Player 2 MIDI -utgång {MIDI.sendNoteOn (note2play [2], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // öka MUX if (midArr [3] == 1) // Player 3 MIDI -utgång {MIDI.sendNoteOn (note2play [3], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // öka MUX if (midArr [4] == 1) // Player 4 MIDI -utgång {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; }

Steg 11: Driva kupolen

Driva kupolen
Driva kupolen
Driva kupolen
Driva kupolen
Driva kupolen
Driva kupolen
Driva kupolen
Driva kupolen

Det finns flera komponenter som måste drivas i kupolen. Du måste därför beräkna förstärkarna från varje komponent för att avgöra vilken strömförsörjning du behöver köpa.

LED -remsan: Jag använde ungefär 3,75 meter Ws2801 LED -remsa, som förbrukar 6,4 W/meter. Detta motsvarar 24W (3,75*6,4). För att konvertera detta till ampere, använd effekt = ström*volt (P = iV), där V är spänningen på LED -remsan, i detta fall 5V. Därför är strömmen från lysdioderna 4,8A (24W/5V = 4,8A).

IR -sensorerna: Varje IR -sensor drar cirka 25mA, totalt 3A för 120 sensorer.

Arduino: 100mA, 9V

Multiplexorerna: Det finns fem 24 -kanals multiplexrar som var och en består av en 16 -kanals multiplexer och 8 -kanals multiplexer. 8 -kanals och 16 -kanals MUX förbrukar var och en ca 100mA. Därför är den totala strömförbrukningen för hela MUX 1A.

Sammanlagt dessa komponenter förväntas den totala energiförbrukningen vara cirka 9A. LED -remsan, IR -sensorer och multiplexrar har ingångsspänning vid 5V, och Arduino har 9V ingångsspänning. Därför valde jag en 12V 15A strömförsörjning, en 15A buck converter för att konvertera 12V till 5V och en 3A buck converter för att konvertera 12V till 9V för Arduino.

Steg 12: Cirkulär kupolbas

Cirkulär kupolbas
Cirkulär kupolbas
Cirkulär kupolbas
Cirkulär kupolbas
Cirkulär kupolbas
Cirkulär kupolbas

Kupolen vilar på ett cirkulärt trästycke med en femkant skuren ur mitten för enkel åtkomst till elektroniken. För att skapa denna cirkulära bas klippdes ett 4x6 'ark plywood med en trä CNC -router. En sticksåg kan också användas för detta steg. Efter att basen skurits fästes kupolen på den med små 2x3”träblock.

Ovanpå basen anslöt jag strömförsörjningen med epoxi och MUX- och Buck-omvandlarna med PCB-distansdistanser. Distanserna fästes på plywooden med hjälp av E-Z Lok-trådadaptrar.

Steg 13: Pentagon Dome Base

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

Förutom den cirkulära basen konstruerade jag också en femkantig bas för kupolen med ett fönster i glas i botten. Den här basen och fönstret såg också ut av plywoodskär med en trä CNC -router. Pentagonens sidor är gjorda av träplankor med ena sidan som har ett hål i den för anslutningarna att gå igenom. Med metallfästen och 2x3 blockfogar fästs träplankorna på femkantens bas. En strömbrytare, MIDI -kontakter och USB -kontakt är anslutna till en frontpanel som jag skapade med en laserskärare. Hela femkantens bas skruvas fast på den cirkulära basen som beskrivs i steg 12.

Jag installerade ett fönster i kupolens botten så att vem som helst kan titta upp i kupolen för att se elektroniken. Glaset är tillverkat av akrylsnitt med en laserskärare och epoxeras till en cirkulär bit plywood.

Steg 14: Programmering av kupolen

Det finns oändliga möjligheter att programmera kupolen. Varje cykel i koden tar in signalerna från IR -sensorerna, som anger trianglarna som någon har rört. Med denna information kan du färga kupolen med valfri RGB -färg och/eller producera en MIDI -signal. Här är några exempel på program som jag skrev för kupolen:

Färg kupolen: Varje triangel går igenom fyra färger när den rörs. När färgerna ändras spelas en arpeggio. Med det här programmet får du färga kupolen på tusentals olika sätt.

Kupolmusik: Kupolen är färgad med fem färger, varje sektion motsvarar en annan MIDI -utgång. I programmet kan du välja vilka toner varje triangel spelar. Jag valde att börja i mitten C högst upp på kupolen och öka tonhöjden när trianglarna rörde sig närmare basen. Eftersom det finns fem utgångar är detta program idealiskt för att flera personer ska spela kupolen samtidigt. Med hjälp av ett MIDI -instrument eller MIDI -programvara kan dessa MIDI -signaler låta som alla instrument.

Simon: Jag skrev en återgivning av Simon, det klassiska minnesbelysningsspelet. En slumpmässig sekvens av ljus tänds en i taget över hela kupolen. I varje tur måste spelaren kopiera sekvensen. Om spelaren matchar sekvensen korrekt läggs ytterligare ett ljus till sekvensen. Den höga poängen lagras på en av sektionerna av kupolen. Det här spelet är också väldigt roligt att spela med flera personer.

Pong: Varför inte spela pong på en kupol? En boll sprider sig över kupolen tills den träffar paddeln. När den gör det, produceras en MIDI -signal som indikerar att paddeln träffade bollen. Den andra spelaren måste sedan rikta paddeln längs kupolens botten så att den träffar bollen tillbaka.

Steg 15: Foton av färdig kupol

Foton av färdig kupol
Foton av färdig kupol
Foton av färdig kupol
Foton av färdig kupol
Foton av färdig kupol
Foton av färdig kupol
Foton av färdig kupol
Foton av färdig kupol
Arduino Contest 2016
Arduino Contest 2016
Arduino Contest 2016
Arduino Contest 2016

Stora priset i Arduino -tävlingen 2016

Remix tävling 2016
Remix tävling 2016
Remix tävling 2016
Remix tävling 2016

Andra pris i Remix -tävlingen 2016

Gör det Glow Contest 2016
Gör det Glow Contest 2016
Gör det Glow Contest 2016
Gör det Glow Contest 2016

Andra priset i Make it Glow Contest 2016

Rekommenderad: