Мазмұны:

Zybo тақтасындағы лазерлік арфа синтезаторы: 10 қадам (суреттермен)
Zybo тақтасындағы лазерлік арфа синтезаторы: 10 қадам (суреттермен)

Бейне: Zybo тақтасындағы лазерлік арфа синтезаторы: 10 қадам (суреттермен)

Бейне: Zybo тақтасындағы лазерлік арфа синтезаторы: 10 қадам (суреттермен)
Бейне: Java Tech Talk: Hand-made Spring Boot Starter 2024, Қараша
Anonim
Zybo тақтасындағы лазерлік арфа синтезаторы
Zybo тақтасындағы лазерлік арфа синтезаторы

Бұл оқулықта біз сериялық интерфейсі бар инфрақызыл сенсорлардың көмегімен толық функционалды лазерлі арфа жасаймыз, ол пайдаланушыға аспаптың реттелуі мен үнін өзгертуге мүмкіндік береді. Бұл арфа XXI ғасырдағы ескі аспаптың ремейкі болады. Жүйе Vilado Design Suite -пен бірге Xilinx Zybo даму тақтасының көмегімен жасалды. Жобаны аяқтау үшін сізге қажет:

  • 12 IR сенсорлары мен эмитенттері (жолдардың санына байланысты көп немесе аз қолданылуы мүмкін)
  • Zybo Zynq-7000 даму тақтасы
  • Тегін RTOS
  • Vivado дизайн жиынтығы
  • Сым (сенсорларды тақтаға қосу үшін)
  • ПВХ құбырының 3 дана ((2) 18 дюйм және (1) 8 дюйм)
  • ПВХ 2 шынтақ

1 -қадам: Digilent Zybo DMA аудио демонстрациясын алыңыз

Бұл жобаның FPGA жағы негізінен осы жерде орналасқан демо -жобаға негізделген. Ол процессор AXI Stream арқылы I2S аудио блогына жаза алатын деректерді жадыдан тікелей жіберу үшін жадқа тікелей қатынауды қолданады. Келесі қадамдар DMA аудио демо жобасын іске қосуға көмектеседі:

  1. Zybo тақтасы үшін тақта файлының жаңа нұсқасы қажет болуы мүмкін. Vivado үшін жаңа тақта файлдарын алу үшін осы нұсқауларды орындаңыз.
  2. Vivado -да демо -жобаны ашу үшін осы беттегі нұсқаулардағы 1 және 2 -қадамдарды орындаңыз. SDK аппараттық құралдарын беру емес, Vivado әдісін қолданыңыз.
  3. Сізге кейбір IP -блоктарды жаңарту керек деген хабарлама келуі мүмкін. Олай болса, «IP күйін көрсету» тармағын таңдаңыз, содан кейін IP күйі қойындысында барлық ескірген IP таңдаңыз және «Таңдалғанды жаңарту» түймесін басыңыз. Аяқтағаннан кейін терезе пайда болады, егер сіз өнімді шығарғыңыз келсе, жалғастырыңыз және «Жасау» түймесін басыңыз. Егер сізге маңызды ескерту хабарламасы келсе, оны елемеңіз.
  4. Бастапқы файлдарды көру үшін дизайндан Vivado бағдарламасындағы көздер қойындысына ауысыңыз. «Design_1» блогының дизайнын тінтуірдің оң жақ түймесімен нұқыңыз және «HDL орауышын жасауды» таңдаңыз. Сұралған кезде «пайдаланушы өңдеуге рұқсат беру үшін жасалған орауышты көшіруді» таңдаңыз. Жобаның орауыш файлы жасалады.
  5. Енді басқа оқулықта қандай да бір түрде қалдырылған маңызды қадамдар аяқталғаннан кейін, сіз бұрын байланыстырылған оқулыққа оралып, 4 -қадамнан соңына дейін жалғастыра аласыз және демо -жобаның дұрыс жұмыс істейтініне көз жеткізе аласыз. Егер сізде аудионы жазуға мүмкіндік болмаса, құлаққапты жазып алып, ойнату түймесін басқан кезде 5-10 секундтық анық емес дыбысты тыңдаңыз. Ойнату түймесін басқанда құлаққап ұясынан бірдеңе шықса, ол дұрыс жұмыс істеп тұрған шығар.

2 -қадам: Vivado -да кейбір өзгерістер жасаңыз

Вивадода кейбір өзгерістер жасаңыз
Вивадода кейбір өзгерістер жасаңыз

Енді сізде Digilent DMA аудио демо жұмыс істейді, бірақ бұл түпкі мақсат емес. Сондықтан біз Vivado -ға оралып, біздің датчиктерді PMOD тақырыптарына қосуға және олардың мәнін бағдарламалық қамтамасыз етуде қолдануға болатындай етіп өзгертуге тура келді.

  1. Vivado -да блок -схеманы ашыңыз
  2. Блок-схемадағы бос орынды тінтуірдің оң жақ түймесімен шертіп, мәзірден «IP қосу» тармағын таңдау арқылы GPIO блогын жасаңыз. «AXI GPIO» табыңыз және таңдаңыз.
  3. Жаңа IP блогын екі рет нұқыңыз және IP-ді қайта баптау терезесінде IP конфигурациясы қойындысына өтіңіз. Барлық кірістерді таңдап, енін он екіге орнатыңыз, өйткені бізде арфада 12 «жіп» болады, сондықтан 12 сенсор қажет. Егер сіз сенсорларды азырақ немесе көп қолданғыңыз келсе, бұл санды сәйкесінше реттеңіз. Сонымен қатар үзілісті қосуды орнатыңыз.
  4. Жаңа GPIO IP блогын тінтуірдің оң жақ түймесімен нұқыңыз және «қосылымды автоматтандыруды іске қосу» таңдаңыз. AXI ұяшығына құсбелгі қойып, Жарайды түймесін басыңыз. Бұл AXI интерфейсін автоматты түрде қосуы керек, бірақ блоктың шығуын қосылмай қалдыруы керек.
  5. Қосымша үзіліс орын алу үшін xlconcat_0 IP блогын екі рет нұқыңыз және порттардың санын 4 -тен 5 -ке өзгертіңіз. Содан кейін ip2intc_irpt түйреуішін жаңа GPIO блогынан xlconcat блогындағы пайдаланылмаған жаңа портқа қосуға болады.
  6. Жаңа GPIO IP блогының «GPIO» шығуын тінтуірдің оң жақ түймешігімен нұқыңыз және «сыртқы етуді» таңдаңыз. Жолдың қайда кететінін табыңыз және кішкене бесбұрышты басыңыз, сол жақта терезенің атын өзгертуге болады. Атауын «SENSORS» етіп өзгертіңіз. Егер біз ұсынатын шектеулер файлының жұмыс істеуін қаласаңыз, сол атауды пайдалану маңызды, әйтпесе шектеулер файлындағы атауды өзгертуге тура келеді.
  7. Көздер қойындысына қайтып оралыңыз, шектеулер файлын тауып, оны біз ұсынған файлмен ауыстырыңыз. Сіз файлды ауыстыруды немесе біздің шектеулер файлының мазмұнын көшіруді таңдап, оны ескі файлдың үстіне қоюға болады. Біздің шектеулер файлының маңызды нәрселерінің бірі - PMOD тақырыптарындағы тартылатын резисторларды қосу. Бұл біз қолданатын сенсорлар үшін қажет, бірақ сенсорлардың бәрі бірдей емес. Егер сіздің датчиктерге резисторлар қажет болса, «set_property PULLUP true» әр данасын «set_property PULLDOWN true» арқылы өзгертуге болады. Егер олар тақтадағыдан басқа резистордың мәнін қажет етсе, онда сіз бұл сызықтарды алып тастай аласыз және сыртқы резисторларды қолдана аласыз, түйреуіштер атаулары шектеулер файлындағы түсініктемелерде берілген және олар Zybo схемаларының бірінші диаграммасындағы белгілерге сәйкес келеді. бетті осы жерден табуға болады. Егер сіз әртүрлі pmod түйреуіштерін қолданғыңыз келсе, шектеу файлындағы атауларды схемадағы белгілерге сәйкестендіріңіз. Біз PMOD тақырыбы JE мен JD -ді қолданамыз және әрқайсысында 1 және 7 түйреуіштерді көрсетпейтін алты деректер түйреуішін қолданамыз. Бұл ақпарат сенсорларды қосу кезінде маңызды. Схемада көрсетілгендей, PMODS -тегі 6 және 12 түйреуіштер VCC болып табылады және 5 және 11 түйреуіштер жерленеді.
  8. HDL орауышын бұрынғыдай жаңартыңыз, ал ескісін көшіріп, қайта жазыңыз. Бұл аяқталған кезде, ағынды шығарыңыз және бұрынғыдай аппараттық құралдарды экспорттаңыз және SDK қайта іске қосыңыз. Егер сіз ескі аппараттық файлды ауыстырғыңыз келетінін сұрасаңыз, жауап - иә. Аппараттық құралдарды дұрыс ауыстыру үшін экспорттаған кезде SDK жабық болған дұрыс.
  9. SDK іске қосыңыз.

3 -қадам: FreeRTOS іске қосуды алыңыз

Келесі қадам - FreeRTOS -ты Zybo тақтасында іске қосу.

  1. Егер сізде көшірме жоқ болса, мұнда FreeRTOS жүктеп алып, файлдарды шығарыңыз.
  2. FreeRTOSv9.0.0 / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo мекенжайында орналасқан FreeRTOS Zynq демонстрациясын импорттаңыз. Импорт процесі басқа демо -жобадағыдай, бірақ FreeRTOS Zynq демонстрациясы FreeRTOS қалтасындағы басқа файлдарға сүйенетіндіктен, файлдарды жұмыс кеңістігіне көшіруге болмайды. Оның орнына, сіз FreeRTOS қалтасын жобаның қалтасына орналастыруыңыз керек.
  3. «Файл» -> «жаңа» -> «тақтаны қолдау пакеті» бөліміне өту арқылы тақтаның жаңа қолдау пакетін жасаңыз. Дербес таңдалғанына көз жеткізіңіз және «Аяқтау» түймесін басыңыз. Біраз уақыттан кейін терезе ашылады, lwip141 жанындағы құсбелгіні қойыңыз (бұл FreeRTOS демонстрацияларының біреуін құрастыруды тоқтатады) және OK түймесін басыңыз. Аяқтағаннан кейін RTOSdemo жобасын тінтуірдің оң жақ түймесімен нұқыңыз және «қасиеттерге» өтіңіз, «жоба сілтемелері» қойындысына өтіңіз және сіз жасаған жаңа bsp жанындағы құсбелгіні қойыңыз. Бұл танылады деп үміттенемін, бірақ кейде Xilinx SDK мұндай нәрсеге таңқаларлық болуы мүмкін. Егер сіз осы қадамнан кейін xparameters.h жетіспейтін қате алсаңыз немесе осыған ұқсас нәрсе болса, онда бұл қадамды қайталап көріңіз, мүмкін SDK -тен шығып, қайта іске қосыңыз.

4 -қадам: Лазерлік арфа кодын қосыңыз

Енді FreeRTOS импортталса, сіз файлдарды лазерлік арфа жобасынан FreeRTOS демонстрациясына енгізе аласыз.

  1. FreeRTOS демонстрациясында src қалтасының астында жаңа қалта жасаңыз және осы қалтаға main.c -тен басқа барлық берілген c файлдарын көшіріп қойыңыз.
  2. RTOSDemo main.c орнына берілген main.c. ауыстырыңыз.
  3. Егер бәрі дұрыс жасалса, лазерлік арфа кодын осы сәтте іске қосу керек. Тексеру мақсатында DMA демо -жобасында қолданылған батырмалар енді сенсорларсыз дыбыстарды ойнату үшін қолданылады (төрт негізгі түйменің кез келгені жұмыс істейді). Ол әр басқан сайын жолды ойнатады және жүйенің барлық жолдарын бірнеше рет басу арқылы айналдырады. Кейбір құлаққаптарды немесе динамиктерді Zybo тақтасындағы құлақаспап ұясына жалғаңыз және түймені басқанда дыбыстардың естілетініне көз жеткізіңіз.

5 -қадам: Кодекс туралы

Бұл оқулықты оқитын көпшілігіңіз аудионы қалай орнатуды немесе DMA -ны басқа нәрсені жасауды немесе басқа музыкалық аспапты жасауды үйрену үшін осында болуы мүмкін. Осы себепті келесі бірнеше бөлімдер DMA көмегімен жұмыс істейтін аудио шығысын алу үшін бұрын сипатталған аппараттық құралмен бірге қалай жұмыс істейтінін сипаттауға арналған. Егер сіз кодтық бөліктердің не үшін бар екенін түсінсеңіз, оларды сіз жасағыңыз келетін нәрсеге қарай реттеуіңіз керек.

Үзілістер

Алдымен мен бұл жобада үзілістер қалай жасалатынын айтамын. Біз мұны алдымен идентификаторды, үзуді өңдеушіні және әр үзіліс үшін құрылғыға сілтемені бақылайтын үзіліс векторлық кесте құрылымын құру арқылы жасадық. Үзіліс идентификаторлары xparameters.h сайтынан келеді. Үзіліс өңдегіші - біз DMA мен GPIO үшін жазған функция, ал I2C үзілуі Xlic I2C драйверінен келеді. Құрылғы сілтемесі біз басқа жерде инициализациялайтын әр құрылғының даналарын көрсетеді. _Init_audio функциясының соңына жақын үзіліс векторлық кестенің әр элементі арқылы цикл өтеді және үзілісті қосу және қосу үшін XScuGic_Connect () және XScuGic_Enable () екі функциясын шақырады. Олар xInterruptController -ге сілтеме жасайды, ол әдепкі бойынша FreeRTOS main.c -те жасалған үзіліс контроллері. Негізінде біз әр үзілісті FreeRTOS біз үшін бұрын жасаған осы үзіліс контроллеріне қосамыз.

DMA

DMA инициализация коды lh_main.c -те басталады. Алдымен XAxiDma құрылымының статикалық данасы жарияланады. Содан кейін _init_audio () функциясында ол конфигурацияланады. Алдымен демо жобадан конфигурация функциясы шақырылады, ол dma.c. Бұл өте жақсы құжатталған және демонстрациядан тікелей келеді. Содан кейін үзіліс қосылады және қосылады. Бұл жоба үшін тек қана басты-құлдыққа үзіліс қажет, себебі барлық деректер DMA арқылы I2S контроллеріне жіберіледі. Егер сіз аудиожазбаны жазғыңыз келсе, онда сізге «мастерден құлға» үзіліс қажет болады. DMA сіз жіберуге айтқан кез келген деректерді жіберуді аяқтаған кезде, негізгі қызметшіге қоңырау шалынады. Бұл үзіліс біздің жоба үшін өте маңызды, себебі DMA аудио үлгілерінің бір буферін жіберуді аяқтаған сайын, ол келесі буферді жібере бастайды, әйтпесе жіберулер арасында дыбыстық кідіріс пайда болады. Dma_mm2s_ISR () функциясының ішінде үзілісті қалай өңдей алатынымызды көре аласыз. _Audio_task () келесі DMA тасымалын бастай алатыны туралы xSemaphoreGiveFromISR () және portYIELD_FROM_ISR () қолданатын маңызды бөлік соңына жақын. Тұрақты аудио деректерді жіберу әдісі - екі буфердің ауысуы. Бір буфер I2C блогына жіберілгенде, басқа буфердің мәндері есептеледі және сақталады. Содан кейін үзіліс DMA -дан келгенде белсенді буфер ауысады және жақында жазылған буфер тасымалдана бастайды, ал бұрын берілген буфер жаңа деректермен қайта жазыла бастайды. _Audio_task функциясының негізгі бөлігі - fnAudioPlay () шақырылатын жер. fnAudioPlay () DMA данасын, буфердің ұзындығын және деректер тасымалданатын буферге көрсеткішті қабылдайды. Үлгілердің көп келетінін білу үшін I2S регистрлеріне бірнеше мәндер жіберіледі. Содан кейін тасымалдауды бастау үшін XAxiDma_SimpleTransfer () шақырылады.

I2S аудио

audio.c және audio.h - бұл I2S инициализациясы. I2S инициализация коды - бұл көптеген жерлерде айналатын кодтың өте таралған бөлігі, сіз басқа көздерден шамалы өзгерістерді таба аласыз, бірақ бұл жұмыс істеуі керек. Бұл өте жақсы құжатталған және арфа жобасы үшін оны өзгертудің қажеті жоқ. Ол шыққан DMA аудио демонстрациясында микрофонға немесе желілік кірістерге ауысу функциялары бар, сондықтан сізге бұл функция қажет болса, оларды пайдалануға болады.

Дыбыс синтезі

Дыбыс синтезінің қалай жұмыс жасайтынын сипаттау үшін мен соңғы әдіске әкелген әзірлеуде қолданылатын дыбыстық модельдердің әрқайсысын тізімдеймін, себебі бұл сізге не үшін жасалынғанын түсінуге мүмкіндік береді.

1 -әдіс: Синусты мәндердің бір периоды әрбір жол үшін музыкалық нотаның сәйкес жиілігінде есептеледі және массивте сақталады. Мысалы, массивтің ұзындығы сынамалар / циклдердің # санына тең болатын синусоидалық толқын кезеңі болады. Егер іріктеу жиілігі 48 кГц және нота жиілігі 100 Гц болса, онда 48 000 сынама/секунд және 100 цикл/секунд бар, бұл циклде 4800 сынамаға әкеледі, ал массив ұзындығы 4800 сынама болады және бір толық мәнді қамтиды синусоидалық период. Жол ойналған кезде дыбыс үлгісі буфері синусоидылық жиымынан мәнді алу және оны аудио буферге үлгі ретінде енгізу арқылы толтырылады, содан кейін индексті синусоидалық массивке ұлғайту арқылы біздің алдыңғы мысалды қолданады. 4800 сынаманың бір синусолқынды циклі дыбыстық буферге енгізілген. Модульдік операция массив индексінде әрқашан 0 мен ұзындық аралығында болатындай қолданылады, ал массив индексі белгілі бір шекті мәннен асып кеткенде (мысалы, 2 секундтық үлгілер сияқты) жол өшіріледі. Бір уақытта бірнеше жолдарды ойнату үшін әр жолдың массив индексін бөлек қадағалаңыз және әрбір үлгіні алу үшін әр жолдың синус толқынының мәнін қосыңыз.

2 -әдіс: Музыкалық тонды құру үшін біз алдыңғы модельден бастаймыз және әр негізгі жиілікке гармониканы қосамыз. Гармоникалық жиіліктер - бұл негізгі жиіліктің бүтін еселігі болатын жиіліктер. Бір -бірімен байланыспаған екі жиіліктің жиынтығынан айырмашылығы, бұл бір мезгілде екі түрлі дыбыстың шығуына әкеледі, гармоника қосылған кезде ол тек бір дыбыс сияқты, бірақ басқа реңкте естіледі. Бұл әрекетті орындау үшін аудиожазбаға синус толқынының мәнін (массив индексі % массивінің ұзындығы) қосқан сайын, сонымен қатар (2 * массив индексі % массив ұзындығы) және (3 * массив индексі % жиым ұзындығы) қосамыз.) және тағы басқалар, бірақ көптеген гармоника қажет. Бұл көбейтілген индекстер бастапқы жиіліктің бүтін еселігі болып табылатын жиіліктегі синусоиды өтеді. Тонды көбірек бақылауға мүмкіндік беру үшін әр гармониканың мәндері жалпы дыбыстағы гармониканың мөлшерін көрсететін айнымалыға көбейтіледі. Мысалы, негізгі синус толқынының мәндері 6 -ға көбейтіліп, жалпы дыбыстың факторы бола алады, ал 5 -гармоникада 1 -ге көбейткіш болуы мүмкін, яғни оның мәндері жалпы дыбысқа әлдеқайда аз үлес қосады.

3 -әдіс: Жарайды, сондықтан бізде нотада өте жақсы үн бар, бірақ әлі де маңызды мәселе бар: олар белгілі бір уақыт көлемінде белгіленген көлемде ойнайды. Нағыз аспап сияқты дыбыс шығару үшін ойналатын ішектің көлемі уақыт өте келе біртіндеп ыдырауы керек. Мұны істеу үшін массив экспоненциалды ыдырайтын функцияның мәндерімен толтырылады. Енді аудио үлгілер жасалып жатқан кезде, әрбір жолдан шығатын дыбыс алдыңғы әдіс сияқты есептеледі, бірақ ол дыбыстық үлгіге қосылмай тұрып, экспоненциалды ыдырау функциясының массивіндегі осы жолдардың массив индексіндегі мәнге көбейтіледі. Бұл уақыт өте келе дыбыстың біркелкі таралуын қамтамасыз етеді. Массив индексі ыдырау массивінің соңына жеткенде, жол тоқтатылады.

4 -әдіс: Бұл соңғы қадам - бұл шын мәнінде шынжырлы дыбысты береді. Олар жағымды естілгенге дейін, бірақ айқын синтезделген. Арфаның шынайы әлеміне жақсы еліктеу үшін әр гармониканың ыдырау жылдамдығы әр түрлі болады. Нақты жолдарда, жолды бірінші рет соққанда, жоғары жиілікті гармониканың көп мөлшері болады, ол біз жолдан күтетін дыбыс шығарады. Бұл жоғары жиілікті гармоника - бұл қысқаша түрде дыбыстың негізгі бөлігі, соғылған жіптің дыбысы, бірақ баяу гармоникалар енген кезде олар өте тез ыдырайды. Дыбыс синтезінде қолданылатын әрбір гармоникалық сан үшін әрқайсысының өзіндік ыдырау жиілігі бар ыдырау массиві құрылады. Енді әр гармониканы жолдың жиым индексіндегі сәйкес ыдырау массивінің мәніне дербес көбейтуге және дыбысқа қосуға болады.

Жалпы дыбыс синтезі интуитивті, бірақ есептеулер ауыр. Бүкіл жолдық дыбысты жадта сақтау тым көп жадты қажет етеді, бірақ синусоиды және әр кадр арасындағы экспоненциалды функцияны есептеу аудионы ойнату жылдамдығына сәйкес келу үшін тым ұзақ уақыт алады. Есептеуді жылдамдату үшін кодта бірнеше амалдар қолданылады. Синус және экспоненциалды ыдырау кестелерінің бастапқы құрылуын қоспағанда, барлық математика бүтін форматта орындалады, бұл 24 биттік аудио шығысында қол жетімді сандық кеңістікті таратуды талап етеді. Мысалы, синус кестесі 150 амплитудасы, сондықтан ол тегіс, бірақ соншалықты үлкен емес, сондықтан бірге ойналатын көптеген жолдар 24 биттен асады. Сол сияқты, экспоненциалды кесте мәндері бүтін сандарға дөңгелектеліп, сақталмас бұрын 80 -ге көбейтіледі. Гармоникалық салмақтар 0 мен 10 арасындағы дискретті мәндерді қабылдай алады. Сонымен қатар барлық үлгілер екі еселенеді және синус толқындары 2 -ге индекстеледі, бұл іріктеу жылдамдығын екі есе азайтады. Бұл ойнауға болатын максималды жиілікті шектейді, бірақ ағымдағы жолдар мен гармоникалардың тез есептелуі үшін қажет болды.

Бұл дыбыстық модельді құру және оны іске қосу процессор жағынан көп күш жұмсады, және оны осы жобаның уақытында fpga жағында нөлден бастап жұмыс істету өте қиын болар еді (әрбір ағынды қайта құру қажет деп елестетіңіз). дыбысты тексеру үшін верилогтың бір бөлігі өзгерді). Алайда, оны fpga -де жасау, мүмкін, үлгілерді тез есептей алмау мәселесін жояды және қосымша жолдарды, гармониканы, тіпті аудио эффектілерді немесе басқа тапсырмаларды орындауға мүмкіндік береді. процессор жағы.

6 -қадам: сенсорларды қосу

Сенсорларды қосу
Сенсорларды қосу

Сызықтарды құру үшін біз жолдың ойнатылып жатқанын анықтайтын инфрақызыл сәулелердің сенсорларын қолдандық. Біз сенсорларға келесі сілтеме бойынша тапсырыс бердік. Сенсорларда қуат, жер және деректер сымы бар, ал эмитенттерде тек қуат пен жерге сым бар. Біз эмитенттер мен сенсорларды қуаттандыру үшін PMOD тақырыптарынан 3.3 В және жерге түйреуіштерді қолдандық. Барлық датчиктер мен эмитенттерді қосу үшін барлық датчиктер мен эмитенттерді параллель қосу қажет. Датчиктерден алынған деректер сымдарының әрқайсысы өздерінің pmod түйреуішіне өтуі керек.

7 -қадам: қаңқаның құрылысы

Қаңқаның құрылысы
Қаңқаның құрылысы

Арфаның пішінін жасау үшін сенсорлар мен эмитенттерді орналастыру үшін қаңқа ретінде үш бөлік қолданылады. ПВХ құбырының 18 дюймдік екі бөлігінің бірінде датчиктер мен эмитенттерді бір -бірінен 1,5 дюймдік кезекпен туралаңыз, содан кейін оларды құбырға бекітіңіз. Басқа 18 дюймдік ПВХ құбыры датчиктер мен эмитенттерді ауыспалы тәртіпте туралайды, бірақ олардың орнын ауыстыруды ұмытпаңыз (яғни бірінші құбырда бірінші сенсор болса, екіншісінде алдымен эмитент болуы керек). Деректерге, қуатқа және жерге қосылатын сымдардың тақтаға жетуін қамтамасыз ету үшін ұзын сымдарды дәнекерлеу қажет болады.

8 -қадам: Ағаштың сыртын салу

Ағаштың сыртын салу
Ағаштың сыртын салу

Бұл қадам міндетті емес, бірақ өте ұсынылады. Ағаштың сыртқы түрі арфаны әдемі етіп қана қоймайды, сонымен қатар сенсорлар мен сымдарды зақымданудан қорғайды. Ағаш жақтауды ағаштан жасалған төртбұрышты сақина жасай алады. Тіктөртбұрыштың ішкі жағында құбыр мен сенсор қаңқасына сәйкес келу үшін кемінде 1-1/2 дюймдік тесік болуы керек. Рамка салынғаннан кейін сенсор мен сымдарды тақтаға қосу үшін шығаратын екі тесік бұрғылаңыз.

*Ескертпе: жөндеу жұмыстарын жүргізу немесе аздап түзету қажет болған жағдайда құбыр қаңқасын алып тастау және кіргізу үшін кіру нүктелерін қосу ұсынылады.

9 -қадам: барлық бөлшектерді біріктіру

Барлық бөліктерді біріктіру
Барлық бөліктерді біріктіру

Алдыңғы қадамдардың бәрі аяқталғаннан кейін арфаны жасау уақыты келді. Алдымен құбырдың қаңқасын ағаштың сыртқы жағына салыңыз. Содан кейін датчиктер мен эмитенттердің сымдарын тақтадағы дұрыс жерге қосыңыз. Содан кейін SDK ашыңыз және тақтаны бағдарламалау үшін отладка түймесін басыңыз. Тақтаны бағдарламалағаннан кейін, құлақаспапты немесе динамикті қосыңыз. Қай сенсор аяқталатынына байланысты сіздің арфаның жіптері басталмауы мүмкін. Көптеген сымдар тартылған кезде қай сым қай сенсорға өтетінін айту қиын болғандықтан, біз бағдарламалық жасақтаманың разрядтарын үзу үшін жол сандарын салыстыру әдісін енгіздік. «Static int sensor_map [NUM_STRINGS]» табыңыз және жолдар төменнен жоғарыға қарай ретімен ойнағанша массивтің мәндерін реттеңіз.

Мәзірді сериялық терминалды (мысалы, RealTerm) ашып, беру жылдамдығын 115200 -ге, дисплейді ANSI -ге орнату арқылы пайдалануға болады. Мәзірді өзгерту үшін w және s пернелерін, ал жоғары және төмен жылжу үшін a және d пернелерін пайдалану арқылы шарлауға болады.

10 -қадам: ROCK OUT

Арфа толық жұмыс істей бастағанда. Арфаны меңгеріңіз және өзіңіздің музыкаңыздың тәтті дыбысын тыңдаңыз!

Ұсынылған: