Мазмуну:
- 1 -кадам: Жеткирүү тизмеси
- 2 -кадам: Геодезиялык куполдун долбоору
- 3 -кадам: Struts жана Connectors менен Dome куруу
- 4 -кадам: Лазердик кесүү жана базалык плиталарды орнотуу
- 5 -кадам: Электроникага жалпы сереп
- 6 -кадам: LEDлерди куполго орнотуу
- 7 -кадам: Sensor Mount дизайн жана ишке ашыруу
- 8 -кадам: Multiplexing Sensor Output
- 9 -кадам: Жарыкты акрил менен чачуу
- 10 -кадам: MIDI колдонуу менен купол менен музыка жасоо
- 11 -кадам: Куполго кубат берүү
- 12 -кадам: Circular Dome Base
- 13 -кадам: Пентагондун купол базасы
- 14 -кадам: Күмбөздү программалоо
- 15 -кадам: Аякталган куполдун сүрөттөрү
Video: Интерактивдүү геодезиялык LED купол: 15 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Мен 120 үч бурчтуктан турган геодезиялык күмбөздү LED жана сенсор менен курдум. Ар бир LEDди жекече чечүүгө болот жана ар бир сенсор бир үч бурчтук үчүн атайын жөнгө салынат. Күмбөз Arduino менен программаланып, колуңузду кайсы үч бурчтукка койгонуңузга жараша MIDI сигналын жарыктандырат жана чыгарат.
Мен күмбөздү адамдарды жарыкка, электроникага жана үнгө кызыктырган кызыктуу дисплей кылып иштеп чыккам. Күмбөз беш бөлүккө жакшы бөлүнгөндүктөн, мен күмбөздү ар бир башка үндө боло турган беш өзүнчө MIDI чыгышы үчүн иштеп чыккам. Бул күмбөздү бир эле учурда бир нече адам менен музыканы ойнотуу үчүн идеалдуу ири музыкалык аспапка айландырат. Музыкадан тышкары, күмбөздү жарык шоу жана Симон менен Понгдун рендисин ойнотуу үчүн программаладым. Акыркы структура диаметри бир метрден бир аз жогору жана 70см бийик болуп, негизинен жыгачтан, акрилден жана 3D басылган бөлүктөрдөн курулган.
Бул долбоорду баштоого шыктандырган LED столдорунда жана кубдарында бир нече улуу Instructables бар. Бирок, мен LEDди башка геометрияда жайгаштырып көргүм келди. Мен долбоор үчүн геодезиялык күмбөзгө караганда жакшыраак структура жөнүндө ойлоно алган жокмун, ал да Instructables боюнча жакшы жазылган. Ошентип, бул долбоор LED столдорунун жана геодезиялык куполдордун ремикси/машупу. Төмөндө мен долбоордун башында текшерген LED столуна жана геодезиялык куполго Instructables шилтемелери.
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-…
Геодезиялык купол:
www.instructables.com/id/Folding-Geodesic-D…
www.instructables.com/id/Geodesic-dome-kit/
1 -кадам: Жеткирүү тизмеси
Материалдар:
1. Күмбөздүн таянычы жана куполдун негизи үчүн жыгач (сумма куполдун түрүнө жана өлчөмүнө жараша болот)
2. Даректүү LED тилкеси (16.4ft/5m Addressable Color LED Pixel Strip 160leds Ws2801 Dc5v)
3. Arduino Uno (Atmega328 - чогултулган)
4. Прототип тактасы (Penta Angel Double-Side Prototype PCB Universal (7x9cm))
5. Диффузия диоддору үчүн акрил (Cast Acrylic Sheet, Clear, 12 "x 12" x 0.118 "Size)
6. Электр энергиясы менен камсыздоо (Ayposen 110/220V DC12V 30A 360W Switch Power Supply Driver)
7. Arduino үчүн Бак конвертер (RioRand LM2596 DC-DC Бак Конвертер 1.23V-30V)
8. LED жана сенсорлор үчүн Бак конвертери (DROK Mini Electric Buck Voltage Converter 15A)
9. 120 IR сенсорлору (Infrared тоскоолдуктарды болтурбоо сенсор модулу)
10. Беш 16 канал мультиплексорлору (Analog/Digital MUX Breakout - CD74HC4067)
11. Алты 8 канал мультиплексорлору (Multiplexer Breakout - 8 Channel (74HC4051))
12. Беш 2 каналдуу мультиплексор (MAX4544CPA+)
13. Wire ороо зым (PCB Solder 0.25mm калай капталган жез корд Dia Wire-ороо Wire 305M 30AWG Кызыл)
14. Илинүүчү зым (Solid Core, 22 AWG)
15. Pin Headers (Gikfun 1 x 40 Pin 2.54mm Single Row Breakaway Male Pin Header)
16. Беш MIDI уячасы (Breadboard-достук MIDI Jack (5-пин DIN))
17. MIDI уячалары үчүн он 220 Ом резисторлор
18. Электрониканы куполго орнотуу үчүн стенд-офферлер (Stand-off Spacer Hex M3 Male x M3 Female)
19. Жыгачка стенддерди туташтыруу үчүн жип адаптерлери (E-Z Lok Threaded Insert, Brass, Knife Thread)
20. Эпоксид же Gorilla Superglue
21. Электр тасмасы
22. Solder
Куралдар:
1. Soldering Station
2. Power matkap
3. Тегерек араа
4. Орбиталык тегиздөөчү
5. Jig saw
6. Митер араа
7. Транспектор
8. 3D принтер
9. Сым кескичтер
10. Зым ороо куралы
11. LED плиталарын кесүү үчүн лазер кескич (милдеттүү эмес)
12. Куполдун негизи үчүн CNC дүкөнү (милдеттүү эмес)
2 -кадам: Геодезиялык куполдун долбоору
Киришүүдө айткандай, жеке геодезиялык купол куруу үчүн бир нече онлайн булактары бар. Бул сайттар ар бир тараптын узундугун (б.а. тирөөчтү) жана каалаган куполдун түрү үчүн керектүү болгон туташтыргычтардын санын аныктоочу куполдуу эсептегичтерди камсыз кылат. Геодезиялык куполдун татаалдыгы (б.а. үч бурчтуктардын тыгыздыгы) анын классы (1V, 2V, 3V ж. Өзүңүздүн күмбөзүңүздү куруу үчүн, адегенде куполдун диаметри менен классын тандашыңыз керек.
Мен Domerama аттуу сайтты колдонуп, радиусу 40см болгон шардын 5/12 бөлүгүнө кесилген 4V куполун долбоорлоого жардам бердим. Күмбөздүн бул түрү үчүн алты түрдүү узундугу бар:
30 X "A" - 8.9см
30 X "B" - 10.4см
50 X "C" - 12,4 см
40 X "D" - 12,5 см
20 X "E" - 13.0см
20 X "F" - 13.2см
Бул 2223см (73 фут) материалга чейин кошулган 190 стутст. Мен бул күмбөздөгү тирөөчтөр үчүн 1x3 (3/4 "× 2-1/2") карагай жыгачын колдондум. Strutsту туташтыруу үчүн мен Autocadдын жардамы менен 3D принтерлерди иштеп чыктым. Бул кадамдын аягында STL файлдары жүктөлүп алынат. 4V 5/12 куполдун туташтыргычтарынын саны:
20 X 4 туташтыргычы
6 X 5 туташтыргычы
45 X 6-туташтыргычы
Кийинки кадамда мен бул күмбөздүн жыгач таякчалар жана мен ойлогон 3D принтер коннекторлору менен кантип курулганын сүрөттөп берем.
3 -кадам: Struts жана Connectors менен Dome куруу
Домерамадан 4V 5/12 купол үчүн эсептөөлөрдү колдонуп, тегерек араа менен струттарды кесип алдым. 190 тирөөчкө этикетка коюлуп, кесилгенден кийин кутуга салынган. 71 туташтыргычы (20 төрт коннектор, 6 беш туташтыргыч жана 45 алты туташтыргыч) Makerbotтун жардамы менен 3D түрдө басылган. Жыгач таякчалар бириктиргичтерге Domerama түзгөн схемага ылайык киргизилген. Мен курулушту жогору жактан баштап, радиалдуу түрдө сыртка жылдым.
Бардык тирөөчтөр туташтырылгандан кийин, мен бирден тирөөчтү алып салып, жыгачка жана туташтыргычка эпоксидин коштум. Коннекторлор структураларды туташтырууда ийкемдүүлүккө ээ болуу үчүн иштелип чыккан, андыктан эпоксиден мурун күмбөздүн симметриясын текшерүү маанилүү болгон.
4 -кадам: Лазердик кесүү жана базалык плиталарды орнотуу
Эми куполдун скелети курулган соң, үч бурчтуу астынкы тактайчаларды кесүү мезгили келди. Бул табличкалар тирөөчтөрдүн түбүнө тиркелет жана LEDди куполго орнотуу үчүн колдонулат. Мен башында 5 мм (3/16”) фанеранын астындагы плиталарды куполдогу беш түрдүү үч бурчтукту өлчөө менен кесип салдым: AAB (30 үч бурчтук), BCC (25 үч бурчтук), DDE (20 үч бурчтук), CDF (40 үч бурчтук)), жана EEE (5 үч бурчтук). Ар бир тараптын өлчөмдөрү жана үч бурчтуктардын формасы купол калкулятору (Домерама) жана кээ бир геометриянын жардамы менен аныкталган. Сыноо табличкаларын мозаика менен кескенден кийин, Coral Draw менен үч бурчтуктун дизайнын чийдим жана калган тактайчаларды лазер кескич менен кесип алдым (алда канча тез!). Эгерде сизде лазердик кескичке мүмкүнчүлүгүңүз жок болсо, анда сызгычты жана транспортирди колдонуп, фанеранын астына плиталарды тартып, алардын бардыгын пигзаж менен кесип салсаңыз болот. Негизги плиталар кесилгенден кийин, купол оодарылып, плиталар жыгач желиминин жардамы менен куполго жабыштырылган.
5 -кадам: Электроникага жалпы сереп
Жогорудагы сүрөттө куполдун электроникасынын схемасы көрсөтүлгөн. An Arduino Uno куполго сигналдарды жазуу жана окуу үчүн колдонулат. Күмбөздү жарык кылуу үчүн, куполдун үстүндө RGB LED тилкеси иштейт, андыктан LED 120 үч бурчтуктун ар бирине жайгаштырылган. LED тасмасы кантип иштээри жөнүндө маалымат алуу үчүн, бул нускаманы текшериңиз. Ар бир светодиод Arduino аркылуу өзүнчө чечилиши мүмкүн, ал тилке үчүн сериялык маалыматтарды жана саат сигналын чыгарат (схемада A0 жана A1 төөнөгүчтү караңыз). Тасма жана бул эки сигналдын жардамы менен сиз керемет күмбөзгө ээ боло аласыз. Charlieplexing жана сменалык регистрлер сыяктуу Arduinoдан келген көп LED сигналдарын жазуунун башка жолдору бар.
Купол менен иштешүү үчүн, мен ар бир светодиоддун үстүнө IR сенсорун койгом. Бул сенсорлор кимдир бирөөнүн күмбөздөгү үч бурчтукка жакын экенин аныктоо үчүн колдонулат. Куполдогу ар бир үч бурчтуктун жеке IR сенсору бар жана 120 үч бурчтуктары бар болгондуктан, Arduinoго чейин кандайдыр бир мультиплекс жасоого туура келет. Мен күмбөздөгү 120 сенсор үчүн беш 24 каналдуу мультиплексорлорду (MUX) колдонууну чечтим. Бул жерде мультиплексинг боюнча көрсөтмө бар, эгер сиз тааныш эмес болсоңуз. 24 канал MUX беш көзөмөл сигналын талап кылат. Мен Arduino боюнча 8-12-казыктарды тандап алдым, ошондуктан порт манипуляциясын жасай алам (Көбүрөөк маалымат үчүн 10-кадамды караңыз). MUX такталарынын чыгарылышы 3-7-пиндин жардамы менен окулат.
Мен ошондой эле үндү чыгарышы үчүн күмбөзгө беш MIDI чыгарууну киргиздим (11 -кадам). Башкача айтканда, беш адам ар бир үндү башка үндө ойнотуу менен бир убакта купол ойной алат. Arduinoдо бир гана TX пин бар, ошондуктан беш MIDI сигналы демультиплекстөөнү талап кылат. MIDI чыгаруу IR сенсорунун окуусунан башка убакта өндүрүлгөндүктөн, мен ошол эле башкаруу сигналдарын колдондум.
Бардык IR туташтыргычтары Arduinoго киргенден кийин, купол күйүп, үндөрдү ойной алат, бирок сиз Arduino программасы. Мен бул көрсөтмө 14 -кадамда бир нече мисалдар бар.
6 -кадам: LEDлерди куполго орнотуу
Купол ушунчалык чоң болгондуктан, LED тилкесин ар бир үч бурчтукка бирден LED коюу үчүн кесүү керек. Ар бир LED супер клей менен үч бурчтукка чапталган. Светодиоддун эки тарабында кабелдин куполдон өтүшү үчүн тешик тешилет. Мен андан кийин диоддун ар бир контактында (5V, жер, саат, сигнал) ширетип, зымдарды табличка аркылуу берем. Бул зымдар куполдун кийинки LEDине жетүү үчүн жетишерлик узун болуш үчүн кесилет. Зымдар кийинки LEDге тартылып, процесс уланат. Мен LEDдерди конфигурацияга туташтырдым, алар керектүү зымдын көлөмүн минималдаштырат, ал эми кийинчерээк Arduino аркылуу LEDди чечүү үчүн мааниси бар. Кичинекей купол тилкени кесүү муктаждыгын жок кылып, ширетүүгө көп убакытты үнөмдөйт. Дагы бир вариант - нөөмөт регистрлери менен өзүнчө RGB LED'лерин колдонуу.
Тилкеге сериялык байланыш Arduinoдон эки казык (маалымат жана саат пин) аркылуу ишке ашат. Башкача айтканда, күмбөздү жарыктандыруу үчүн маалыматтар бир пинден башка LEDге өтөт, анткени ал маалымат пининен чыгат. Бул жерде бул Arduino форумунан өзгөртүлгөн код:
// Бүт түстү күчөтүү жана азайтуу куполун жасаңыз
#define numLeds 120 // Светодиоддордун саны // ЧЫГУУ ПИНСИ // int clockPin = A1; // int pinPoint = A0 саатын аныктоо; // маалымат түйүнүн аныктоо // ӨЗГӨРМӨЛӨР // int red [numLeds]; // Жашыл LED тилкеси үчүн массивди баштоо [numLeds]; // LED тилкеси үчүн массивди баштоо int blue [numLeds]; // LED тилкеси үчүн массивди инициализациялоо // ТУРУКТУУ эки масштабдуу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}; // Светодиоддун интенсивдүүлүгүнүн үлүшү боштукту орнотуу () {pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); memset (кызыл, 0, numLeds); memset (жашыл, 0, numLeds); memset (көк, 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 ++) // куполдун жарык интенсивдүүлүгүн жогорулатуу үчүн цикл {double scale = scaleA [p]; кечигүү (20); үчүн (int i = 0; i <numLeds; i ++) // бардык LEDS аркылуу цикл {red = 255 * масштабы; жашыл = 80 * масштаб; көк = 0; } updatestring (кызыл, жашыл, көк); // LED тилкесин жаңыртуу}}
7 -кадам: Sensor Mount дизайн жана ишке ашыруу
Мен купол үчүн IR сенсорлорун колдонууну чечтим. Бул сенсорлордо IR LED жана алуучу бар. Объект сенсордун алдына келгенде, IR LEDдин кээ бир IR нурлары алуучуга чагылдырылат. Мен бул долбоорду Ричардовинанын көрсөтмөсүнө негизделген жеке IR сенсорлорумду түзүү менен баштадым. Бардык ширетүү өтө көп убакытты алды, ошондуктан мен eBayден 120 IR сенсорлорун сатып алдым, алардын ар бири санарип өндүрүштү чыгарат. Сенсордун босогосу доскадагы потенциометр менен белгиленет, ошондо колу ошол үч бурчтуктун жанында болгондо гана жогору болот.
Ар бир үч бурчтук LED фанерадан, LED плитасынан 2,5 см бийиктикте орнотулган диффузиялык акрилден жана IR сенсорунан турат. Ар бир үч бурчтуктун сенсору куполдун абалына жараша беш бурчтуу же алты бурчтуу формадагы жука фанеранын баракчасына орнотулган (жогорудагы сүрөттү караңыз). Мен IR сенсорлорун орнотуу үчүн IR сенсорунун базасына тешиктерди бурдум, андан кийин жерди жана 5V казыктарды зым оролгон зым жана зым ороочу курал (кызыл жана кара зымдар) менен туташтырдым. Жер менен 5В туташтыргандан кийин, күмбөз аркылуу өтүү үчүн ар бир чыгууга (сары), жерге жана 5Вга узун зым оролуучу зымды ороп койдум.
Алты бурчтуу же беш бурчтуу IR сенсорлору зым куполдун ичине өтүшү үчүн, 3D басылган туташтыргычтардын үстүнөн куполго эпоксидделген. Коннекторлордун үстүндөгү сенсорлордун жардамы менен мен сенсорлордун сезгичтигин көзөмөлдөгөн IR сенсорлорундагы потенциометрлерге жетип, тууралай алдым. Кийинки кадамда мен IR сенсорлорунун чыгышы мультиплексорлорго кантип туташтырылганын жана Arduinoдо кантип окуларын сүрөттөп берем.
8 -кадам: Multiplexing Sensor Output
Анткени Arduino Uno 14 гана санариптик I/O казыктары жана 6 аналогдук киргизүү казыктары бар жана 120 сенсор сигналдары окулушу керек, купол мультиплексорлордун бардык сигналдарда окушун талап кылат. Мен 24 каналдуу беш мультиплексорлорду курууну чечтим, алардын ар бири 24 IR сенсорун окуйт (электрониканын сереп сүрөтүн караңыз). 24 каналдуу MUX 8 каналдуу MUX үзүлүү тактасынан, 16 каналдуу MUX үзүлүү тактасынан жана 2 каналдуу MUXтен турат. Pin протоколдору тактасына туташтырылышы үчүн пин баштары ар бир сынык тактасына ширетилген. Зымды ороочу куралды колдонуп, мен жерге, 5Vга жана MUX үзүлүү такталарынын башкаруу сигналынын казыктарын туташтырдым.
24 каналдуу MUX мен Arduinoдогу 8-12 пинге туташуу үчүн тандап алган беш көзөмөл сигналын талап кылат. Бардык 24 каналдуу MUX Ардуинодон бирдей башкаруу сигналдарын алышат, ошондуктан мен Arduino казыгынан зымды 24 каналдуу MUXке туташтырдым. IR сенсорлорунун санариптик чыгуулары 24 каналдуу MUXтин кирүү казыктарына туташкан, ошондуктан аларды Arduinoго сериялык окууга болот. Бардык 120 сенсордук чыгармада окуу үчүн беш башка казык бар болгондуктан, күмбөз 24 үч бурчтуктан турган беш бөлүккө бөлүнгөнүн элестетүү пайдалуу (сүрөттөгү куполдун түстөрүн текшерүү).
Arduino порт манипуляциясын колдонуп, 8-12 пиндер аркылуу жиберилген башкаруу сигналдарын тез көбөйтө аласыз. Мен бул жерде мультиплексорлорду иштетүү үчүн кээ бир мисал коддорун тиркемеледим:
int numChannel = 24;
// ЧЫГУУЧУЛАР // int s0 = 8; // MUX көзөмөлү 0 - PORTbD int s1 = 9; // MUX контролу 1 - PORTb int s2 = 10; // MUX контролу 2 - PORTb int s3 = 11; // MUX көзөмөлү 3 - PORTb int s4 = 12; // MUX контролу 4 - PORTb // КИРГИЗҮҮЛӨРҮ // int m0 = 3; // MUX киргизүү 0 int m1 = 4; // MUX киргизүү 1 int m2 = 5; // MUX киргизүү 2 int m3 = 6; // MUX киргизүү 3 int m4 = 7; // MUX киргизүү 4 // VARIABLES // int arr0r; // санарип окуу MUX0 int arr1r; // санарип окуу MUX1 int arr2r; // санарип окуу MUX2 int arr3r; // санарип окуу MUX3 int arr4r; // санарип окуу MUX4 void setup () {// орнотуу кодун бул жерге коюп, бир жолу иштетүү үчүн: DDRB = B11111111; // Arduino казыктарын 8ден 13кө чейин 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 () {// кайра иштетүү үчүн негизги кодуңузду бул жерге коюңуз: PORTB = B00000000; // SET контролдоо түйүндөрү mux үчүн төмөн (int i = 0; i <numChannel; i ++) {// IR сенсор i үчүн MUX0 - MUX4 санариптик окуу чыгымы // Эгерде IR сенсор LO болсо, үч бурчтукка оюнчу тийип жатат. arr0r = digitalRead (m0); // Mux 0ден окуу, IR сенсор i arr1r = digitalRead (m1); // Mux 1ден окуу, IR сенсор i arr2r = digitalRead (m2); // Mux 2ден окуу, IR сенсор i arr3r = digitalRead (m3); // Mux 3төн окуу, IR сенсор i arr4r = digitalRead (m4); // Mux 4, IR сенсорунан окуу // БУЛ ЖЕРДЕ МУКС КИРИШТЕР МЕНЕН ДҮКӨНДӨРДҮ ЭМНЕ БОЛОТ // ПОРТБ ++; // MUX үчүн контролдук сигналдарды көбөйтүү}}
9 -кадам: Жарыкты акрил менен чачуу
Жарык диоддорунан чачыратуу үчүн мен тунук акрилди тегерек орбиталык тегирмен менен сүргүм кылдым. Сандер акрилдин эки тарабында бир фигура-8 кыймылы менен жылдырылган. Мен бул ыкманы "тоңгон айнек" спрей боегуна караганда алда канча жакшы деп таптым.
Акрилди кум менен тазалагандан кийин, мен лазердик кескичти колдонуп, үч бурчтуктарды светодиоддорго ылайыкташтырдым. Эгерде акрил жарылып кетпесе, акрилди акрил кесүүчү куралды же ал тургай пигзажды колдонуп кесүүгө болот. Акрил диоддордун үстүндө 5 мм калың фанера тик бурчтары менен өткөрүлүп, лазер кескич менен кесилген. Бул кичинекей тактайлар куполдун устундарына чапталып, акрил үч бурчтугу тактайларга эпоксидден өткөрүлгөн.
10 -кадам: MIDI колдонуу менен купол менен музыка жасоо
Мен куполдун үн чыгарууга жөндөмдүү болушун кааладым, ошондуктан күмбөздүн ар бир бөлүмүнө бирден MIDI каналын койдум. Сиз адегенде беш MIDI уячасын сатып алып, схемада көрсөтүлгөндөй туташтырышыңыз керек (көбүрөөк маалымат алуу үчүн Arduino колдоо бул окуу куралын караңыз).
Arduino Unoдо бир гана берүүчү сериялык пин бар болгондуктан (TX пини деп белгиленген 2-пин), беш MIDI уячасына жөнөтүлүп жаткан сигналдарды мультиплексдеш керек. Мен ошол эле башкаруу сигналдарын колдондум (8-12-пин), анткени MIDI сигналдары IR сенсорлору Arduinoго окулганга караганда башка убакта жөнөтүлөт. Бул башкаруу сигналдары 8 каналдуу демультиплексорго жөнөтүлөт, андыктан кайсы MIDI уячасы Arduino тарабынан түзүлгөн MIDI сигналын алаарын көзөмөлдөйсүз. MIDI сигналдары Arduino тарабынан Франсуа Бест тарабынан түзүлгөн керемет MIDI сигналдар китепканасы менен түзүлгөн. Бул жерде Arduino Uno менен ар кандай MIDI уячаларына бир нече MIDI чыгарууну чыгаруу үчүн кээ бир мисал коду келтирилген:
#include // MIDI китепканасын камтыйт
#define numChannel 24 // Үч бурчтукка ИК саны #аныктоо numSections 5 // куполдогу бөлүмдөрдүн саны, 24каналдын MUX саны, MIDI уячаларынын саны // OUTPUTS // int s0 = 8; // MUX көзөмөлү 0 - PORTbD int s1 = 9; // MUX контролу 1 - PORTb int s2 = 10; // MUX контролу 2 - PORTb int s3 = 11; // MUX көзөмөлү 3 - PORTb int s4 = 12; // MUX контролу 4 - PORTb // КИРГИЗҮҮЛӨРҮ // int m0 = 3; // MUX киргизүү 0 int m1 = 4; // MUX киргизүү 1 int m2 = 5; // MUX киргизүү 2 int m3 = 6; // MUX киргизүү 3 int m4 = 7; // MUX киргизүү 4 // VARIABLES // int arr0r; // санарип окуу MUX0 int arr1r; // санарип окуу MUX1 int arr2r; // санарип окуу MUX2 int arr3r; // санарип окуу MUX3 int arr4r; // санарип окуу MUX4 int midArr [numSections]; // int note2play [numSections] оюнчуларынын бири нота басылганын же басылбаганын сактаңыз; // Эскертмени ойнотуу керек, эгерде сенсор тийсе int [notChannel] = {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 сигналдарынын ортосундагы тыныгуу (); void setup () {// орнотуу кодуңузду бул жерге коюңуз, бир жолу иштетүү үчүн: DDRB = B11111111; // Arduino казыктарын 8ден 13кө чейин 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 () {// кайра иштетүү үчүн негизги кодуңузду бул жерге коюңуз: PORTB = B00000000; // SET контролдоо түйүндөрү mux үчүн төмөн (int i = 0; i <numChannel; i ++) {// IR сенсор i үчүн MUX0 - MUX4 санариптик окуу чыгымы // Эгерде IR сенсор LO болсо, үч бурчтукка оюнчу тийип жатат. arr0r = digitalRead (m0); // Mux 0ден окуу, IR сенсор i arr1r = digitalRead (m1); // Mux 1ден окуу, IR сенсор i arr2r = digitalRead (m2); // Mux 2ден окуу, IR сенсор i arr3r = digitalRead (m3); // Mux 3төн окуу, IR сенсор i arr4r = digitalRead (m4); // Mux 4, IR сенсор i окуу (arr0r == 0) // 0 бөлүмдөгү сенсор бөгөттөлгөн {midArr [0] = 1; // 0 -оюнчу нотага тийди, HI'ди 0 -плеер үчүн MIDI чыгаруу үчүн койгула 0 note2play [0] = ноталар ; // 0 оюнчу үчүн ойноо үчүн эскертүү} if (arr1r == 0) // 1 -бөлүмдөгү сенсор бөгөттөлгөн {midArr [1] = 1; // 0 -оюнчу нотага урунду, HIди 0 ойноткучтун MIDI чыгышы үчүн койгула note2play [1] = ноталар ; // 0 оюнчу үчүн ойноо үчүн эскертүү} if (arr2r == 0) // 2 -бөлүмдөгү сенсор бөгөттөлгөн {midArr [2] = 1; // 0 -оюнчу нотага урунду, HI'ди 0 -плеерде MIDI чыгаруу үчүн жазыңыз2 note2play [2] = ноталар ; // 0 оюнчу үчүн ойноо үчүн эскертүү} if (arr3r == 0) // 3 -бөлүмдөгү сенсор бөгөттөлгөн {midArr [3] = 1; // 0 -оюнчу нотага урунду, HI'ди 0 -плеерде MIDI чыгаруу үчүн белгилеңиз2 note2play [3] = ноталар ; // 0 оюнчу үчүн ойноо үчүн эскертүү} if (arr4r == 0) // 4 -бөлүмдөгү сенсор бөгөттөлгөн {midArr [4] = 1; // 0 -оюнчу нотага урунду, HIди 0 ойноткучтун MIDI чыгышы үчүн койгула note2play [4] = ноталар ; // 0 оюнчу үчүн ойноо үчүн эскертүү} PORTB ++; // MUX} үчүн жогорулатуучу башкаруу сигналдары} updateMIDI (); } жараксыз updateMIDI () {PORTB = B00000000; // mux төмөн болсо, SET контролдоо төөнөгүчтөрү (midArr [0] == 1) // Player 0 MIDI output {MIDI.sendNoteOn (note2play [0], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [0], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // көбөйтүү MUX if (midArr [1] == 1) // 1 -оюнчу MIDI чыгаруу {MIDI.sendNoteOn (note2play [1], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [1], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // көбөйтүү MUX if (midArr [2] == 1) // 2 -оюнчу MIDI чыгаруу {MIDI.sendNoteOn (note2play [2], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [2], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // көбөйтүү MUX if (midArr [3] == 1) // 3 -оюнчу MIDI чыгаруу {MIDI.sendNoteOn (note2play [3], 127, 1); delayMicroseconds (pauseMidi); MIDI.sendNoteOff (note2play [3], 127, 1); delayMicroseconds (pauseMidi); } PORTB ++; // көбөйтүү MUX if (midArr [4] == 1) // 4 -оюнчу 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; }
11 -кадам: Куполго кубат берүү
Күмбөздө иштөө керек болгон бир нече компоненттер бар. Демек, сатып алуу керек болгон электр менен камсыздоону аныктоо үчүн ар бир компоненттен тартылган амперди эсептөөңүз керек болот.
LED тасмасы: Мен болжол менен 3.75 метр Ws2801 LED тилкесин колдонгом, ал 6.4W/метрди керектейт. Бул 24W (3.75*6.4) туура келет. Муну амперге айландыруу үчүн Power = current*volts (P = iV) колдонуңуз, мында V - LED тилкесинин чыңалуусу, бул учурда 5V. Ошондуктан, Светодиоддон алынган ток 4.8A (24W/5V = 4.8A).
IR сенсорлору: Ар бир IR сенсор 25mA тартат, 120 сенсорлор үчүн 3A.
Arduino: 100mA, 9V
Мультиплексорлор: Ар бири 16 каналдуу жана 8 каналдуу мультиплексордон турган беш 24 каналдуу мультиплексорлор бар. 8 канал жана 16 канал MUX ар бири болжол менен 100 мА керектейт. Ошондуктан, бардык MUXтин жалпы энергия керектөөсү 1А.
Бул компоненттерди кошкондо, жалпы энергия керектөө 9А тегерегинде болот деп күтүлүүдө. LED тилкеси, IR сенсорлору жана мультиплексорлорунда 5В кирүү чыңалуусу бар, Arduinoдо 9В киргизүү чыңалуусу бар. Ошондуктан, мен 12V 15A электр менен камсыздоону, 12Vны 5Vга айлантуу үчүн 15A buck converterди жана Arduino үчүн 12Vны 9Vга 3A buck converterди тандап алдым.
12 -кадам: Circular Dome Base
Купол электроникага оңой жетүү үчүн ортосунан беш бурчтуу кесилген тегерек жыгачтын үстүндө турат. Бул тегерек базаны түзүү үчүн жыгач CNC роутеринин жардамы менен 4х6 'фанеранын баракчасы кесилген. Бул кадам үчүн джигсо да колдонулушу мүмкүн. Негизи кесилгенден кийин, күмбөз ага 2х3 дюймдук кичинекей жыгач блоктору аркылуу бекитилген.
Базанын үстүнө, мен эпоксидия менен MUX жана Бак конвертерлерин электр менен камсыздоону тиркөөчү тирөөчтөрдү тиркеп койгом. Аралыктар фанерага E-Z Lok жип адаптерлеринин жардамы менен бекитилген.
13 -кадам: Пентагондун купол базасы
Циркулярдык базадан тышкары, мен күмбөз үчүн беш бурчтуу пайдубал кургам, асты жагында айнек терезеси бар. Бул база жана карап турган терезе да жыгач CNC роутери менен кесилген фанерадан жасалган. Беш бурчтуктун капталдары жыгач тактайлардан жасалып, бир жагы тешиги бар, туташтыргычтар аркылуу өтөт. Металл кронштейндерди жана 2х3 блок муундарын колдонуп, жыгач тактайлар беш бурчтуктун негизине бекитилет. Кубат которгуч, MIDI туташтыргычтары жана USB туташтыргычы лазер кескич менен жараткан алдыңкы панелге тиркелет. Бардык беш бурчтуу база 12 -кадамда сүрөттөлгөн тегерек негизге сайылган.
Күмбөздүн астына терезени орноттум, ошондо ар ким электрониканы көрүү үчүн күмбөздү карай алат. Көз айнек лазер кескич менен акрилден жасалган жана тегерек фанерага эпоксидделген.
14 -кадам: Күмбөздү программалоо
Күмбөздү программалоо үчүн чексиз мүмкүнчүлүктөр бар. Коддун ар бир цикли кимдир бирөө тийген үч бурчтуктарды көрсөткөн IR сенсорлорунун сигналдарын кабыл алат. Бул маалымат менен сиз күмбөздү каалаган RGB түсү менен боёо аласыз жана/же MIDI сигналын жасай аласыз. Мына, мен куполго жазган программалардын бир нече мисалдары:
Күмбөздү боёгула: Ар бир үч бурчтуктун колу тийгенде төрт түстө айланат. Түстөр өзгөргөн сайын арпеджио ойнотулат. Бул программа менен сиз күмбөздү миңдеген түрдүү жолдор менен түстөй аласыз.
Купол музыкасы: Күмбөз беш түстө боёлгон, ар бир бөлүм башка MIDI чыгармасына туура келет. Программада сиз ар бир үч бурчтуктун кайсы ноталарды ойной турганын тандай аласыз. Мен күмбөздүн жогору жагындагы С ортосунан баштоону чечтим жана үч бурчтуктар базага жакындаганда кадамын көбөйтөм. Беш жыйынтык бар болгондуктан, бул программа бир эле учурда бир нече кишинин күмбөздү ойнотушу үчүн идеалдуу. MIDI инструментин же MIDI программасын колдонуп, бул MIDI сигналдары кандайдыр бир аспап сыяктуу үн чыгарууга болот.
Саймон: Мен классикалык эс тутумду жарыктандыруучу Симон аттуу чыгарманы жаздым. Жарыктардын туш келди ырааттуулугу бүт күмбөздүн үстүндө бирден жарыктандырылат. Ар бир кезекте, оюнчу ырааттуулукту көчүрүп алышы керек. Эгерде оюнчу ырааттуулукка туура келсе, иретке кошумча жарык кошулат. Жогорку балл күмбөздүн бөлүмдөрүнүн биринде сакталат. Бул оюн бир нече адам менен ойноо үчүн да абдан кызыктуу.
Понг: Эмне үчүн куполдо понг ойнобойсуң? Топ калакка тийгенче куполдун үстүнөн жайылат. Качан ал калак топко тийгенин көрсөтүүчү MIDI сигналы чыгарылат. Башка оюнчу калакты күмбөздүн түбүнө карай багыттоосу керек, ал топту артка урат.
15 -кадам: Аякталган куполдун сүрөттөрү
Ардуино сынагынын башкы сыйлыгы 2016
Ремикс сынагынын экинчи сыйлыгы 2016
Экинчи сыйлык 2016 -ж
Сунушталууда:
Интерактивдүү LED плиткасы дубалы (көрүнгөндөн оңой): 7 кадам (сүрөттөр менен)
Интерактивдүү LED плиткасы дубалы (көрүнгөндөн оңой): Бул долбоордо мен Arduino жана 3D басылган бөлүктөрүн колдонуп интерактивдүү LED дубал дисплейин кургам. Мен өзүмдүн версиямды ойлоп тапкым келди, ал бир гана жеткиликтүү эмес, бирок
Arduino менен интерактивдүү лазер баракчасы: 11 кадам (сүрөттөр менен)
Interactive Laser Sheet Generator Arduino менен: Лазерлер укмуштуу визуалдык эффекттерди түзүү үчүн колдонулушу мүмкүн. Бул долбоордо мен интерактивдүү жана музыканы ойнотуучу лазердик дисплейдин жаңы түрүн жасадым. Түзмөк эки лазерди айлантып, айланмага окшогон эки жарык баракты түзөт. Мен аралык сенсорун коштум
Fadecandy, Processing жана Kinect менен интерактивдүү LED купол: 24 кадам (Сүрөттөр менен)
Fadecandy, Processing жана Kinect менен Interactive LED Dome: WhatWhen in Dome 4378 светодиод менен жабылган 4.2м геодезиялык купол. Светодиоддордун бардыгы жеке картага түшүрүлгөн жана даректүү. Алар Windows столунда Fadecandy жана Processing тарабынан көзөмөлдөнөт. Kinect куполдун тирөөчтөрүнүн бирине тиркелет, андыктан
Магниттик геодезиялык планетарий: 7 кадам (сүрөттөр менен)
Магниттик геодезиялык планетарий: Баарыңарга салам! Мен сизди магнит жана зым менен кармап турган геодезиялык планетарийди түзүү процессимде көргүм келет! Бул магнитти колдонуунун себеби, жамгыр убагында же идеалдуу аба ырайынын шартында алып салуунун оңойлугу. Бул жол менен сиз
Autodesk ойлоп табуучусунда Temcor стилиндеги геодезиялык күмбөздү кантип түзүү керек: 8 кадам
Autodesk ойлоп табуучусунда Temcor стилиндеги геодезиялык күмбөздү кантип түзүү керек: Бул окуу куралы бир аз математиканы колдонуу менен Temcor стилиндеги күмбөздү кантип түзүүнү көрсөтөт. эски Амундсен-Скотт Түштүк уюлдук станциясынын бөлүнүү ыкмасы