Mundarija:

Zybo doskasida lazerli arfa sintezatori: 10 qadam (rasmlar bilan)
Zybo doskasida lazerli arfa sintezatori: 10 qadam (rasmlar bilan)

Video: Zybo doskasida lazerli arfa sintezatori: 10 qadam (rasmlar bilan)

Video: Zybo doskasida lazerli arfa sintezatori: 10 qadam (rasmlar bilan)
Video: Laserharp II Jean Michel Jarre 2024, Iyul
Anonim
Zybo doskasida lazerli arfa sintezatori
Zybo doskasida lazerli arfa sintezatori

Bu qo'llanmada biz foydalanuvchining asbob sozlamalari va ohangini o'zgartirish imkonini beradigan ketma -ket interfeysli IQ sensorlar yordamida to'liq ishlaydigan lazerli arfa yaratamiz. Bu arfa XXI asrning eng qadimiy asbobining remeyki bo'ladi. Tizim Vivado Design Suite bilan birga Xilinx Zybo ishlab chiqish platasi yordamida yaratilgan. Loyihani bajarish uchun sizga kerak bo'ladi:

  • 12 ta IR sensorlar va emitentlar (simlar soniga qarab ko'p yoki kamroq ishlatilishi mumkin)
  • Zybo Zynq-7000 ishlab chiqish taxtasi
  • Bepul RTOS
  • Vivado dizayn to'plami
  • Tel (datchiklarni taxtaga ulash uchun)
  • 3 ta PVX quvur ((2) 18 dyuym va (1) 8 dyuym)
  • 2 ta PVX tirsaklar

1 -qadam: Digilent -ning Zybo DMA Audio Demosini oling

Loyihaning FPGA tomoni asosan bu erda topilgan demo -loyihaga asoslangan. U protsessor AXI Stream orqali I2S audio blokiga yozishi mumkin bo'lgan ma'lumotlarni to'g'ridan -to'g'ri xotiradan yuborish uchun xotiraga to'g'ridan -to'g'ri kirishni ishlatadi. Quyidagi qadamlar DMA audio demo loyihasini ishga tushirishga yordam beradi:

  1. Zybo platasi uchun doska faylining yangi versiyasi kerak bo'lishi mumkin. Vivado uchun yangi taxta fayllarini olish uchun quyidagi ko'rsatmalarga amal qiling.
  2. Vivadoda demo -loyihani ochish uchun ushbu sahifadagi ko'rsatmalardagi 1 va 2 -bosqichlarni bajaring. SDK uskunasini topshirish emas, Vivado usulini qo'llang.
  3. Siz ba'zi IP -bloklaringizni yangilashingiz kerakligi haqida xabar olishingiz mumkin. Agar shunday bo'lsa, "IP holatini ko'rsatish" -ni tanlang, so'ng IP holati yorlig'ida eskirgan IP -ni tanlang va "Tanlanganni yangilash" -ni bosing. Ish tugagandan so'ng, siz mahsulotni ishlab chiqarishni xohlaysizmi, deb so'raydigan oyna ochiladi, davom eting va "Yaratish" tugmasini bosing. Agar siz tanqidiy ogohlantirish xabarini olgan bo'lsangiz, unga e'tibor bermang.
  4. Manba fayllarini ko'rish uchun dizayndan Vivadodagi manbalar yorlig'iga o'ting. "Design_1" blok dizaynini o'ng tugmasini bosing va "HDL o'rash moslamasini yaratish" -ni tanlang. Agar so'ralsa, "foydalanuvchi tahrirlashiga ruxsat berish uchun hosil qilingan o'rashni nusxalash" -ni tanlang. Loyiha uchun o'rash fayli yaratiladi.
  5. Endi qandaydir tarzda boshqa darslikda qoldirilgan muhim qadamlar tugallangach, siz avval bog'langan darslikka qaytishingiz va 4 -bosqichdan oxirigacha davom etishingiz va demo -loyihaning to'g'ri ishlashiga ishonch hosil qilishingiz mumkin. Agar sizda ovoz yozish imkoni bo'lmasa, quloqchinlar bilan yozib oling va ijro etish tugmasini bosganingizda 5-10 soniyali noaniq ovozni tinglang. Ijro tugmachasini bosganingizda minigarnituradan biror narsa chiqsa, u to'g'ri ishlayotgandir.

2 -qadam: Vivadoda ba'zi o'zgarishlar qiling

Vivadoda ba'zi o'zgarishlar qiling
Vivadoda ba'zi o'zgarishlar qiling

Shunday qilib, endi sizda Digilent DMA audio demosi ishlaydi, lekin bu bu erda yakuniy maqsad emas. Shunday qilib, biz Vivadoga qaytishimiz va sensorlarimiz PMOD sarlavhalariga ulanishi va dasturiy tomondan ularning qiymatidan foydalanishimiz uchun ba'zi o'zgarishlar qilishimiz kerak.

  1. Vivadodagi blok diagrammasini oching
  2. Blok-sxemadagi bo'sh joyni o'ng tugmasini bosib, menyudan "IP-ni qo'shish" -ni tanlab GPIO blokini yarating. "AXI GPIO" ni toping va tanlang.
  3. Yangi IP-blokni ikki marta bosing va IP-ni qayta sozlash oynasida IP-konfiguratsiya yorlig'iga o'ting. Barcha kirishni tanlang va kengligini o'n ikkiga o'rnating, chunki bizda arfada 12 ta "tor" bo'ladi va shuning uchun 12 ta datchik kerak. Agar siz kamroq yoki ko'proq sensorlardan foydalanmoqchi bo'lsangiz, bu raqamni mos ravishda sozlang. Shuningdek, uzilishni yoqishni sozlang.
  4. Yangi GPIO IP -blokini o'ng tugmasini bosing va "ulanishni avtomatlashtirishni ishga tushirish" -ni tanlang. AXI katagiga belgi qo'ying va OK tugmasini bosing. Bu AXI interfeysini avtomatik ravishda ulashi kerak, lekin blokning chiqishini uzilmagan holda qoldiring.
  5. Qo'shimcha uzilish uchun joy ajratish uchun xlconcat_0 IP -blokini ikki marta bosing va portlar sonini 4 dan 5 gacha o'zgartiring. Keyin ip2intc_irpt pinini yangi GPIO blokidan xlconcat blokidagi yangi ishlatilmagan portga ulashingiz mumkin.
  6. Yangi GPIO IP -blokining "GPIO" chiqishini o'ng tugmasini bosing va "tashqi qilish" -ni tanlang. Chiziq qaerga ketayotganini toping va yon tomonidagi beshburchakni bosing va chapda siz nomini o'zgartirishingiz mumkin bo'lgan oyna ochilishi kerak. Ismni "SENSORLAR" ga o'zgartiring. Agar biz taqdim etayotgan cheklovlar faylining ishlashini xohlasangiz, xuddi shu nomdan foydalanish muhim, aks holda siz cheklovlar faylidagi nomni o'zgartirishingiz kerak bo'ladi.
  7. "Manbalar" yorlig'iga qaytib, cheklovlar faylini toping va uni biz bergan fayl bilan almashtiring. Siz faylni almashtirishni yoki cheklovlar faylining tarkibini nusxalashni va eskisiga joylashtirishni tanlashingiz mumkin. Cheklovlar faylining muhim ishlaridan biri bu PMOD sarlavhalarida tortishish rezistorlarini yoqishdir. Bu biz ishlatgan sensorlar uchun zarur, lekin hamma sensorlar bir xil emas. Agar sensorlar ochiladigan rezistorlar talab qilsa, "set_property PULLUP true" ning har bir nusxasini "set_property PULLDOWN rost" bilan o'zgartirishingiz mumkin. Agar ular rezistorning qiymatini bortdagi qiymatdan farq qilsa, siz bu chiziqlarni olib tashlashingiz va tashqi rezistorlardan foydalanishingiz mumkin. bu erda topishingiz mumkin bo'lgan sahifa. Agar siz turli xil pmod pinlarini ishlatmoqchi bo'lsangiz, cheklash faylidagi nomlarni sxematik belgilarga mos keltiring. Biz PMOD sarlavhasi JE va JD -dan foydalanamiz va har birida oltita ma'lumot pinidan foydalanamiz, 1 va 7 -pinlarni tashlamaymiz. Bu ma'lumot datchiklarni ulashda muhim ahamiyatga ega. Sxemada ko'rsatilgandek, PMODSdagi 6 va 12 -pinlar VCC, 5 va 11 -pinlar esa erga ulangan.
  8. HDL o'rash paketini avvalgidek qayta yarating va eskisini nusxa ko'chiring va ustiga yozing. Bu tugagach, bit oqimini yarating va oldingi kabi uskunani eksport qiling va SDK -ni qayta ishga tushiring. Agar siz eski uskuna faylini o'zgartirmoqchimisiz deb so'ralsa, javob ha. To'g'ri o'zgartirilishi uchun uskunani eksport qilganingizda, SDK yopilishi yaxshiroqdir.
  9. SDK -ni ishga tushiring.

3 -qadam: FreeRTOS -ni ishga tushiring

Keyingi qadam - FreeRTOS -ni Zybo doskasida ishga tushirish.

  1. Agar sizda nusxasi bo'lmasa, FreeRTOS -ni bu erdan yuklab oling va fayllarni chiqarib oling.
  2. FreeRTOSv9.0.0 / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo -da joylashgan FreeRTOS Zynq demosini import qiling. Import jarayoni boshqa demo -loyihadagi kabi deyarli bir xil, biroq FreeRTOS Zynq demosi FreeRTOS papkasidagi boshqa fayllarga tayanganligi uchun siz fayllarni ish joyingizga ko'chirmasligingiz kerak. Buning o'rniga, butun FreeRTOS papkasini loyiha papkasiga joylashtirish kerak.
  3. "Fayl" -> "yangi" -> "taxtani qo'llab -quvvatlash to'plami" ga o'ting va yangi qo'llab -quvvatlash paketini yarating. Mustaqil tanlanganligiga ishonch hosil qiling va tugatish tugmasini bosing. Birozdan keyin oyna ochiladi, lwip141 yonidagi katakchani belgilang (bu FreeRTOS demolaridan birini kompilyatsiya qilishni to'xtatadi) va OK tugmasini bosing. Bu tugagandan so'ng, RTOSdemo loyihasini o'ng tugmasini bosing va "xususiyatlar" ga o'ting, "loyihaga havolalar" yorlig'iga o'ting va siz yaratgan yangi bsp yonidagi katakchani belgilang. Umid qilamanki, bu tan olinadi, lekin ba'zida Xilinx SDK bunday narsada g'alati bo'lishi mumkin. Agar siz bu qadamdan keyin xparameters.h etishmayotgan yoki shunga o'xshash biror xatoga yo'l qo'ysangiz, bu qadamni takrorlab ko'ring va SDKdan chiqib, qayta ishga tushiring.

4 -qadam: Lazerli arfa kodini qo'shing

Endi FreeRTOS import qilingan, siz fayllarni lazer arfa loyihasidan FreeRTOS demosiga olib kirishingiz mumkin.

  1. FreeRTOS demo -dagi src papkasi ostida yangi papka yarating va main.c -dan tashqari taqdim etilgan barcha fayllarni nusxalash va joylashtirish.
  2. RTOSDemo main.c ni berilgan main.c. bilan almashtiring.
  3. Agar hamma narsa to'g'ri bajarilgan bo'lsa, siz lazer arfa kodini ishga tushirishingiz kerak. Sinov maqsadida DMA demo -loyihasida ishlatilgan tugmalar usuli sensorlar ulanmagan tovushlarni ijro etish uchun ishlatiladi (to'rtta asosiy tugmachaning har biri ishlaydi). U har bosganingizda mag'lubiyatni o'ynaydi va tizimdagi barcha satrlarni bir nechta bosish orqali aylantiradi. Bir nechta minigarniturani yoki karnayni Zybo platasidagi minigarnituraga ulang va tugmani bosganingizda simlarning tovushlarini eshitishingizga ishonch hosil qiling.

5 -qadam: Kod haqida

Ko'pchiligingiz ushbu qo'llanmani o'qiyotgan bo'lsangiz, bu erda audio sozlashni yoki DMA -ni boshqacha qilish yoki boshqa musiqa asbobini yaratishni o'rganishingiz mumkin. Shu sababli, keyingi bo'limlar DMA yordamida ishlaydigan audio chiqishni olish uchun ilgari tasvirlangan apparat bilan birgalikda qanday ishlashini tasvirlashga bag'ishlangan. Agar siz nima uchun kod qismlari borligini tushunsangiz, ularni yaratmoqchi bo'lgan narsangizga moslashtirishingiz kerak.

Tanaffuslar

Birinchidan, men ushbu loyihada uzilishlar qanday yaratilganligini aytib o'taman. Biz buni qanday amalga oshirgan bo'lsak, birinchi navbatda identifikatorni, to'xtatuvchi ishlov beruvchini va har bir uzilish uchun qurilmaga havolani kuzatib boruvchi kesuvchi vektorli jadval tuzilishini yaratish edi. To'xtatish identifikatorlari xparameters.h dan keladi. To'xtatish ishlovchisi - biz DMA va GPIO uchun yozgan funktsiyamiz va I2C uzilishi Xlic I2C drayveridan keladi. Qurilma mos yozuvlari har bir qurilmaning misolini ko'rsatadi, biz uni boshqa joyda ishga tushiramiz. _Init_audio funktsiyasining oxiriga yaqin uzilishlar vektori jadvalining har bir elementidan pastadir o'tadi va ikkita funktsiyani chaqiradi: XScuGic_Connect () va XScuGic_Enable () uzilishlarni ulash va yoqish uchun. Ular xInterruptController -ga murojaat qilishadi, bu sukut bo'yicha FreeRTOS main.c -da yaratilgan uzilish boshqaruvchisi. Shunday qilib, biz har bir uzilishni FreeRTOS tomonidan biz uchun yaratilgan ushbu uzilishlar nazoratchisiga biriktiramiz.

DMA

DMA boshlash kodi lh_main.c da boshlanadi. Avval XAxiDma strukturasining statik namunasi e'lon qilinadi. Keyin _init_audio () funktsiyasida u konfiguratsiya qilinadi. Birinchidan, demo loyihasidan konfiguratsiya funktsiyasi chaqiriladi, u dma.c. da. Bu juda yaxshi hujjatlashtirilgan va to'g'ridan -to'g'ri demodan keladi. Keyin uzilish ulanadi va yoqiladi. Bu loyiha uchun faqat master-to-qul uzilishi talab qilinadi, chunki barcha ma'lumotlar DMA tomonidan I2S kontrolleriga yuboriladi. Agar siz ovoz yozishni xohlasangiz, sizga quldan xo'jayinning uzilishi ham kerak bo'ladi. DMA siz yuborgan har qanday ma'lumotlarni yuborishni tugatgandan so'ng, quldan qulga uzilish chaqiriladi. Bu uzilish bizning loyihamiz uchun nihoyatda muhim ahamiyatga ega, chunki har safar DMA bitta ovozli namuna buferini jo'natishni tugatsa, darhol keyingi buferni yuborishni boshlashi kerak, aks holda jo'natmalar o'rtasida ovozli kechikish bo'lishi mumkin. Dma_mm2s_ISR () funktsiyasida siz uzilishni qanday boshqarayotganimizni ko'rishingiz mumkin. Muhim qism oxirigacha, biz xSemaphoreGiveFromISR () va portYIELD_FROM_ISR () dan foydalanib, _audio_task () ga keyingi DMA uzatishni boshlashi mumkinligi haqida xabar beramiz. Doimiy audio ma'lumotni yuborish usuli - buferlarni almashtirish. Bir bufer I2C blokiga uzatilganda, boshqa bufer o'z qiymatlarini hisoblab, saqlaydi. Keyin uzilish DMAdan kelganda, faol bufer o'zgaradi va yaqinda yozilgan bufer o'tkazila boshlaydi, oldingi uzatilgan bufer esa yangi ma'lumotlar bilan yozila boshlaydi. _Audio_task funktsiyasining asosiy qismi bu erda fnAudioPlay () chaqiriladi. fnAudioPlay () DMA misolini, bufer uzunligini va buferga ma'lumot uzatiladigan ko'rsatgichni oladi. Ko'proq namunalar kelayotganini bilish uchun I2S registrlariga bir nechta qiymatlar yuboriladi. Keyin XAxiDma_SimpleTransfer () uzatishni boshlash uchun chaqiriladi.

I2S audio

audio.c va audio.h - bu erda I2S ishga tushirilishi. I2S boshlang'ich kodi - bu juda ko'p tarqalgan kodlar to'plami bo'lib, siz boshqa manbalarda ozgina farqlarni topishingiz mumkin, lekin bu ishlashi kerak. Bu juda yaxshi hujjatlashtirilgan va arfa loyihasi uchun uni o'zgartirishning hojati yo'q. DMA audio -demosi mikrofon yoki chiziqli kirishga o'tish funktsiyalariga ega, shuning uchun siz ushbu funktsiyaga muhtoj bo'lsangiz, ulardan foydalanishingiz mumkin.

Ovoz sintezi

Ovoz sintezi qanday ishlashini tasvirlash uchun men ishlab chiqishda ishlatilgan har bir tovush modelini sanab o'tmoqchiman, bu oxirgi usulga olib keldi, chunki bu sizga nima uchun bunday qilinganini tushunishga imkon beradi.

1 -usul: Sinusli qiymatlarning bir davri har bir satr uchun mos keladigan chastotada hisoblanib, u musiqiy notaga mos keladi va massivda saqlanadi. Masalan, massivning uzunligi namunalardagi sinus to'lqinining davri bo'ladi, bu namunalar / tsikllar soniga teng. Agar namuna olish tezligi 48 kHz va yozuv chastotasi 100 Gts bo'lsa, u holda 48 000 ta namuna/sekund va 100 tsikl/soniya bor, bu har bir tsiklda 4800 ta namunaga olib keladi va qator uzunligi 4800 ta namunadir va bitta to'liq qiymatni o'z ichiga oladi. sinus to'lqin davri. Ip chalganda, ovoz namunasi buferi sinus to'lqinlar qatoridan qiymat olish va namuna sifatida audio buferga qo'yish orqali to'ldiriladi, so'ngra indeksni sinus to'lqinlar qatoriga qo'shib, bizning oldingi misolimizni ishlatadi. 4800 ta namunadan bitta sinus to'lqin aylanishi audio buferga joylashtirilgan. Modulli operatsiya qator indeksida har doim 0 va uzunlik oralig'ida bo'ladi va massiv indeksi ma'lum chegaradan oshib ketganda (masalan, 2 soniyali namunalar) satr o'chiriladi. Bir vaqtning o'zida bir nechta satrlarni ijro etish uchun har bir satrning qator indeksini alohida kuzatib boring va har bir namunani olish uchun sinus to'lqinining qiymatini qo'shing.

2 -usul: Musiqiy ohangni yaratish uchun biz avvalgi modeldan boshlaymiz va har bir asosiy chastotaga harmonikani qo'shamiz. Garmonik chastotalar - bu asosiy chastotaning butun sonlari bo'lgan chastotalar. Bir -biriga bog'liq bo'lmagan ikkita chastota yig'ilib, natijada bir vaqtning o'zida ikkita alohida tovush eshitiladi, aksincha, harmonikalar qo'shilsa, u faqat bitta tovushga o'xshaydi, lekin boshqa ohangda. Buni amalga oshirish uchun, biz har safar sinus to'lqinning qiymatini (indeks % massiv uzunligi) audio namunaga qo'shganimizda, biz (2 * qator indeksi % qator uzunligi) va (3 * qator indeksi % qator uzunligi) qo'shamiz.) va shunga o'xshashlar uchun juda ko'p harmonikalar kerak. Bu ko'paytiriladigan indekslar sinus to'lqinni dastlabki chastotaning butun sonlari bo'lgan chastotalarda o'tadi. Ovozni ko'proq nazorat qilish uchun har bir harmonikaning qiymatlari umumiy tovushdagi harmonik miqdorini ifodalovchi o'zgaruvchiga ko'paytiriladi. Masalan, asosiy sinus to'lqinining umumiy qiymatini 6 -ga ko'paytirib, umumiy tovushda ko'proq omil bo'lishi mumkin, 5 -garmonikda esa 1 ko'paytmasi bo'lishi mumkin, ya'ni uning qiymatlari umumiy tovushga kamroq hissa qo'shadi.

3 -usul: Xo'sh, endi bizda notalarda juda yaxshi ohang bor, lekin haligacha o'ta muhim muammo bor: ular ma'lum vaqt davomida ma'lum hajmda o'ynaydi. Haqiqiy asbob kabi ovoz berish uchun chalayotgan simning ovozi vaqt o'tishi bilan bir tekisda pasayishi kerak. Buni amalga oshirish uchun massiv eksponentli parchalanuvchi funktsiya qiymatlari bilan to'ldiriladi. Endi audio namunalar yaratilayotganda, har bir satrdan keladigan ovoz oldingi usulda bo'lgani kabi hisoblab chiqiladi, lekin u audio namunaga qo'shilishidan oldin eksponentli parchalanish funktsiyasi qatoridagi satrlar qator indeksidagi qiymatga ko'paytiriladi. Bu vaqt o'tishi bilan tovushning bir tekis tarqalishiga olib keladi. Massiv indeksi parchalanish qatorining oxiriga yetganda, satr to'xtatiladi.

4 -usul: Bu oxirgi qadam, chindan ham torli tovushlarga haqiqiy simli ovoz beradi. Oldin ular yoqimli, ammo aniq sintez qilingan. Haqiqiy dunyodagi arfa simini yaxshiroq taqlid qilishga harakat qilish uchun har bir harmonikaga har xil parchalanish tezligi beriladi. Haqiqiy satrlarda, mag'lubiyatga birinchi marta zarba berilganda, yuqori chastotali harmonikaning yuqori miqdori mavjud bo'lib, u biz simdan kutayotgan tovushni chiqaradi. Bu yuqori chastotali harmonikalar qisqacha tovushning asosiy qismi, urilgan ipning ovozi, lekin sekinroq harmonikalar qabul qilinganda ular juda tez parchalanadi. Ovoz sintezida ishlatiladigan har bir harmonik raqam uchun parchalanish massivi yaratiladi, ularning har biri o'z parchalanish tezligiga ega. Endi har bir garmonikni satrning indeksidagi mos keladigan parchalanish massivi qiymatiga mustaqil ravishda ko'paytirish va tovushga qo'shish mumkin.

Umuman olganda, ovoz sintezi intuitiv, ammo hisoblash og'ir. Bir vaqtning o'zida butun simli tovushni xotirada saqlash juda ko'p xotirani talab qiladi, lekin sinus to'lqinni va har bir kadr orasidagi ekspansional funktsiyani hisoblash, audio ijro etish tezligini ushlab turish uchun juda uzoq vaqtni oladi. Hisoblashni tezlashtirish uchun kodda bir qancha fokuslar qo'llaniladi. Sinus va eksponentli parchalanish jadvallarini dastlabki tuzishdan tashqari barcha matematika tamsayı formatida amalga oshiriladi, bu esa 24 bitli audio chiqishda mavjud raqamli maydonni tarqatishni talab qiladi. Masalan, sinusli stol 150 amplitudaga ega, shuning uchun u silliq, lekin unchalik katta emas, shuning uchun ko'p satrlar birgalikda 24 bitdan oshishi mumkin. Xuddi shunday, eksponensial jadval qiymatlari butun sonlarga yaxlitlash va saqlashdan oldin 80 ga ko'paytiriladi. Garmonik og'irliklar 0 dan 10 gacha bo'lgan alohida qiymatlarni olishi mumkin. Bundan tashqari, barcha namunalar ikki barobar ko'payadi va sinus to'lqinlar 2 indeks bilan indekslanadi, bu esa namuna olish tezligini ikki baravar kamaytiradi. Bu ijro etilishi mumkin bo'lgan maksimal chastotani cheklaydi, lekin simlar va harmonikalarning hozirgi sonini etarlicha tez hisoblash uchun zarur edi.

Bu ovozli modelni yaratish va uni ishga tushirish protsessor tomondan katta kuch talab qildi va uni loyihaning vaqtida fpga tomonida noldan ishlash juda qiyin bo'lar edi (har bir bit oqimini qayta yaratish kerakligini tasavvur qiling). ovozni tekshirish uchun verilogning bir qismi o'zgartirildi). Biroq, buni fpga -da qilish, ehtimol, namunalarni etarlicha tez hisoblab chiqa olmaslik muammosini bartaraf etishi va qo'shimcha simlar, harmonikalar va hatto audio effektlar yoki boshqa vazifalarni bajarishga imkon beradi. protsessor tomoni.

6 -qadam: Sensorlarni ulash

Sensorlarni ulash
Sensorlarni ulash

Iplarni yaratish uchun biz IQ nurlarini uzatish datchiklaridan foydalanganmiz, ular simlar ijro etilganda aniqlanadi. Biz sensorlarimizni quyidagi havola orqali buyurtma qildik. Datchiklarda quvvat, topraklama va ma'lumot uzatish simlari mavjud, emitentlarda faqat quvvat va er simlari bor. Biz emitentlarni ham, datchiklarni ham quvvatlantirish uchun PMOD sarlavhalaridagi 3.3 V va er pinlarini ishlatdik. Barcha sensorlar va emitentlarni quvvatlantirish uchun barcha sensorlar va emitentlarni parallel ulash lozim. Datchiklarning ma'lumot simlari har birining o'z pin -piniga o'tishi kerak bo'ladi.

7 -qadam: skeletning qurilishi

Skeletning qurilishi
Skeletning qurilishi

Arfa shaklini yaratish uchun uch qism skelet sifatida datchiklar va emitrlarni joylashtirish uchun ishlatiladi. PVX quvurli 18 dyuymli ikkita bo'lakning birida datchiklar va emitentlarni bir -biridan 1,5 dyuymli navbat bilan joylashtiring va keyin ularni quvurga yopishtiring. Boshqa 18 dyuymli PVX trubkasi datchiklar va emitentlarni navbatma -navbat joylashtirib turing, lekin buyurtmani almashtirganingizga ishonch hosil qiling (ya'ni birinchi trubkada birinchi sensori bo'lsa, ikkinchisida emitent bo'lishi kerak va aksincha). Kengashga etib borishini ta'minlash uchun ma'lumot, quvvat va er simlariga uzunroq simlarni lehimlash kerak bo'ladi.

8 -qadam: Yog'ochning tashqi qismini qurish

Yog'ochning tashqi qismini qurish
Yog'ochning tashqi qismini qurish

Bu qadam ixtiyoriy, lekin tavsiya etiladi. Yog'ochning tashqi ko'rinishi nafaqat arfani chiroyli qiladi, balki sensorlar va simlarni shikastlanishdan himoya qiladi. Yog'och ramka yog'ochdan yasalgan to'rtburchaklar halqa yordamida yaratilishi mumkin. To'rtburchakning ichki qismi quvur va datchik skeletiga mos keladigan kamida 1-1/2 dyuymli teshikka ega bo'lishi kerak. Ramka qurilgandan so'ng, ikkita teshikni burang, ular datchik va emitent simlarini taxtaga ulashga imkon beradi.

*Eslatma: Ta'mirlash yoki ozgina o'zgartirishlar kiritish zarur bo'lganda, quvur skeletini olib tashlash va joylashtirish uchun kirish nuqtalarini qo'shish tavsiya etiladi.

9 -qadam: Barcha qismlarni birlashtirish

Barcha qismlarni birlashtirish
Barcha qismlarni birlashtirish

Oldingi barcha harakatlar tugagandan so'ng, arfa yasash vaqti keldi. Birinchidan, quvur skeletini yog'och tashqi qismga joylashtiring. Keyin datchiklar va emitentlar uchun simlarni bortdagi to'g'ri joyga ulang. Keyin SDK -ni oching va taxtani dasturlash uchun disk raskadrovka tugmasini bosing. Kengash dasturlashtirilgandan so'ng, bir nechta minigarniturani yoki karnayni ulang. Qaysi sensor qaysi pmod portida tugashiga qarab, sizning arfa torlaringiz boshlashi mumkin. Ko'p simlar ishtirok etganda, qaysi sim qaysi sensorga o'tishini aniqlash qiyin bo'lishi mumkin, shuning uchun biz dasturiy ta'minotdagi bit pozitsiyalarini uzish uchun simli raqamlarni xaritalash usulini qo'shdik. "Statik int sensor_map [NUM_STRINGS]" ni toping va satrlar pastdan yuqoriga qarab tartibda o'ynaguncha qatordagi qiymatlarni moslang.

Menyudan ketma -ket terminalni ochish (masalan, RealTerm) yordamida va tezlikni 115200 ga, displeyni ANSI ga o'rnatish orqali foydalanish mumkin. Menyuga o'tish uchun w va s tugmachalari yordamida yuqoriga va pastga, qiymatlarni o'zgartirish uchun esa a va d tugmalaridan foydalanish mumkin.

10 -qadam: ROCK OUT

Arfa to'liq ishlay boshlagach. Arfa chalishni o'rganing va o'z musiqangizning yoqimli ovozini tinglang!

Tavsiya: