Mundarija:
- 1 -qadam: Uskunalar ro'yxati (Kengashning rasmini va Kevinning kompozitsiyasini oling)
- 2 -qadam: umumiy nuqtai
- 3 -qadam: Wav fayli
- 4-qadam: Python- Pylab va Scipy-dan foydalanish
- 5-qadam: Python-Sampling va FFT (Kod va uning natijalarini ko'rsatish)
- 6 -qadam: Vivado (solishtiruvchi)
- 7 -qadam: BASYS 3 -rasmlari
- 8 -qadam: Vivado (Multipleksli 7 segmentli dekoder)
- 9 -qadam: Vivado (komponentlarni birlashtirish)
Video: Tyuner: 9 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Ushbu loyiha Vivado va 7 segmentli displey yordamida gitara sozlagichini yaratish uchun mo'ljallangan. Tyuner kiritilgan tovush chastotasini topgach, tyuner bu qiymatni notaning to'g'ri balandligi uchun standart chastota sifatida ma'lum bo'lgan aniq chastotalar uchun qattiq kodlangan qiymatlar ro'yxati bilan solishtiradi. Keyin tyuner sizning kiritgan ovozingiz kerakli yozuvdan qanchalik yaqin yoki uzoq ekanligini ko'rsatadi. Qizig'i shundaki, tovush to'lqini - bu sinusoidal to'lqin shakllarining haqiqiy va xayoliy komponentlar bilan birikmasidir. Garchi notanishlarga bu bilan ishlash qiyin bo'lib tuyulsa -da, biz haqiqiy va xayoliy qadriyatlarga ega bo'lgan to'lqinni tahlil qilishning bir necha usullari mavjud.
Demo:
1 -qadam: Uskunalar ro'yxati (Kengashning rasmini va Kevinning kompozitsiyasini oling)
Birinchidan, bizga Basys 3 taxtasi va quyidagi dasturlarni qo'llab -quvvatlaydigan kompyuter kerak bo'ladi: Garageband/Audacity yoki boshqa DAW - mikrofon orqali yozib olish va wavf fayllarini eksport qilish.
Python - namuna olish va fft uchun pylab va scipy -dan foydalana oladi
Vivado - Basys 3 taxtasiga ulanish va natijalarni ingl
2 -qadam: umumiy nuqtai
Tyuner bir nechta muhim komponentlardan iborat: mikrofon, namuna oluvchi, FFT (Fast Fourier Transform), taqqoslagich, dekoder va displey. Mikrofonning maqsadi kirish to'lqin shaklini olishdir. Namuna oluvchi mikrofonning chiqish signalini oladi va FFT yordamida signalni chastotali kattalikdagi chiqishga aylantiradi. Keyin FFT chiqishidan foydalanib, maksimal kattalik va u bilan bog'liq chastotani 2 ga bo'linib, to'lqin shakli balandligi bilan bog'liq chastotani topish mumkin. Keyin bu qiymat taqqoslagichga o'tishi mumkin. Keyin u barcha yozuvlarning mukammal balandligi uchun chastota qiymatlarini allaqachon o'rnatilgan jadval bilan taqqoslanadi. Taqqoslagichga kerakli eslatmani kiritish imkoniyati beriladi, u kerakli yozuvni qidirish jadvalidan to'g'ri chastotaga mos kelishi mumkin. Keyin taqqoslovchi maksimal chastotaga eng yaqin chastotali eslatmani tanlaydi. Taqqoslovchi ikkita qiymatni taqqoslaydi va chastotaning kerakli qiymatga yaqinligini ko'radi va keyin bu ma'lumotni signalga o'tkazadi. Taqqoslovchi bu signalni dekoderga yuboradi, bu erda dekoder yozuvning to'g'riligini ko'rsatish uchun 7 segmentli displeyning anodlari uchun kirishni tanlaydi.
3 -qadam: Wav fayli
Bu bosqichda biz maydonning wav faylini olamiz va shu chastotani chiqarishga harakat qilamiz.
Birinchidan, sizga notaning wav fayli kerak. Ushbu misolda biz 44.1 kHz namuna olish tezligiga ega 16 bitli stereo wav faylini ishlatamiz. Buni DAW -da, masalan, Garageband -da yaratish yoki yuklab olish mumkin. Bu misol uchun, Garageband -da biz yaratgan A4 440Hz sinus to'lqinni bu erda yuklab olish mumkin.
4-qadam: Python- Pylab va Scipy-dan foydalanish
Biz "Fast Fourier konvertatsiyasi" uchun Python kutubxonasidan foydalandik. Internet -resurs bizga taqlid qilishga va pylab va skipyda nima foydali ekanligini ko'rishga imkon berdi.
1. Agar siz pylab yoki scipy -ni o'rnatmagan bo'lsangiz, buni qilishingiz kerak. Yoki Pycharm juda yaxshi xususiyatga ega, agar siz pylab yoki scipy -ni import qilishga urinib ko'rsangiz, siz kutubxonani hali o'rnatmaganligingizni ko'rsatib berasiz. Siz ularni qizil lampochkani bosib to'g'ridan-to'g'ri o'rnatishingiz mumkin (u kursorni pastki chiziq ostiga qo'yganingizda paydo bo'ladi).
2. scipy.io.wavfile.read funktsiyasidan foydalanib, namuna wav faylidan ma'lumotlarni o'qing va chiqarib oling. Ma'lumotlarni pylab.fft orqali ishga tushiring, u sizga kuch uchun kattalik ro'yxatini qaytaradi.
3. Keyin ro'yxatdan chiqarilgan maksimal quvvatni toping. Maksimal quvvat paydo bo'ladigan ro'yxat indeksini qidiring, chunki bu chastota bilan bog'liq bo'lgan chastotani topishning tezroq usuli. Nihoyat, maksimal chastotani qaytaring. Keyinchalik biz VHDL kodiga ikkilik chastotali signalni kiritishimiz kerak bo'lgani uchun, biz floatdagi chastotani ikkilikka aylantirishimiz va qaytarishimiz mumkin.
5-qadam: Python-Sampling va FFT (Kod va uning natijalarini ko'rsatish)
Bu bosqichda to'liq kreditlar namuna olish va FFT uchun quyidagi havolaga o'tadi.
samcarcagno.altervista.org/blog/basic-sound… Bizning kod:
Pylab va scipy o'rnatilgandan so'ng, wav fayllarini import qilish va o'qish mumkin.
pylab import*dan scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Keyin snd.shape namuna nuqtalarini va kanallar sonini ifodalaydi. Bizning holatimizda, namuna nuqtalari wavfile qancha vaqtga bog'liq va kanallar soni 2 ga bog'liq, chunki u stereo.
Keyin snd = snd / (2. ** 15) …… xlabel ('Vaqt (ms)')
vaqt signalini massivga ajratadi.
Keyin FFT chastota va kattalikdagi massivni yaratadi (Quvvat)
Vaqt oralig'ida maksimal kattalik va u bilan bog'liq chastota topiladi, bu chastota/2 wavfile pitchini ifodalaydi.
Keyin o'z kodimiz yordamida chastotani ifodalovchi butun son 12 bitli ikkilik raqamga aylantirildi va shu raqam bilan matnli fayl yaratildi.
6 -qadam: Vivado (solishtiruvchi)
Jarayonning bu qismida bizga ikkita kirish chastotasini solishtirish uchun taqqoslagich kerak.
1. Kirish (qabul qiluvchi) chastotasi yuqori, pastroq yoki 2 Gts chegarali diapazonda aniqlangan eslatmani solishtirish uchun taqqoslagich yaratildi. (odatiy gitara tyuneri e2 dan g5 gacha, 82 Gts dan 784 Gts gacha).
2. 2 Gts chegarani yaratishda biz RCA yordamida qabul qilgich chastotasiga "000000000010" ni qo'shdik va foydalanuvchi kiritishi uchun u hali juda past bo'lgan joyni tekshirdik. Agar shunday bo'lsa, bitta bitli signal "yuqori" <= "0", "past" <= "1". Keyin biz "000000000010" ni kiritamiz va qabul qiluvchining kirishi bundan ham yuqori ekanligini tekshiramiz. Agar shunday bo'lsa, "yuqori" <= '1', "past" <= '0'. Ikkala holatda ham "0" qaytmaydi.
3. Modulning keyingi qismiga qabul qiluvchining eslatmasi nima ekanligini aytib berish uchun 4 bitli aniq ma'lumotlar kerak bo'lgani uchun, faqat 2 ta qiyosiy natijani (past va yuqori) qaytaribgina qolmay, biz kod bilan bog'langan sherikni qaydga qaytarishimiz kerak. chastota. Iltimos, quyidagi jadvalga qarang:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Etti segmentli dekoder uchun kerak bo'ladigan narsalarni kodga kiritish va kodlash uchun bir nechta if iboralaridan foydalanish.
7 -qadam: BASYS 3 -rasmlari
8 -qadam: Vivado (Multipleksli 7 segmentli dekoder)
Hamma narsaga ekran kerak. Bu dizayn qiymatini belgilaydigan muhim omil. Shuning uchun, biz 7-segmentli dekoder yordamida displey yaratishimiz kerak, bu bizga B taxtasida tyunerni yaratish qobiliyatimizni namoyish etish imkonini beradi. Bundan tashqari, bu sinov va disk raskadrovka qilishda bizga yordam beradi.
Etti segmentli dekoder SSEG, AN va Fiz_Hz chiqishda Note, past, yuqori va CLK nomli kirishni o'z ichiga oladi. Dizaynni tushunishga yordam berish uchun yuqoridagi blok -diagrammaning rasmi bor.
Ikkita past va yuqori kirishning maqsadi - taqqoslagich dizayneriga ovoz (to'lqin) chastotasi foydalanuvchi solishtirmoqchi bo'lgan kirish chastotasidan (Fix_Hz) yuqori yoki pastroq bo'lishini boshqarish erkinligini ta'minlash. Bundan tashqari, SSEG chiqishi etti segmentning displeyini va keyingi nuqtani ko'rsatadi, AN esa etti segmentning to'plami yonib turadigan anodlarni ifodalaydi.
Etti segmentli dekoderda soat (CLK) ikki yoki undan ortiq turli anodlarda ikki xil qiymatni ko'rsatishda muhim rol o'ynaydi. Kengash bizga bir vaqtning o'zida ikki xil qiymatni ko'rsatishga ruxsat bermagani uchun, biz bir vaqtning o'zida qiymatni ko'rsatish uchun multiplekslashdan foydalanishimiz kerak, shu bilan birga boshqa qiymatga o'tishimiz kerakki, ko'zlarimiz uni ushlay olmaydi. Bu erda CLK usuli ishga tushadi.
Qo'shimcha ma'lumot olish uchun manba kodiga murojaat qiling.
9 -qadam: Vivado (komponentlarni birlashtirish)
Har bir modul (piton qabul qilgich, taqqoslagich, etti segmentli dekoder va boshqalar) tugallangach, biz kattaroq modul yordamida birlashtiramiz. Xuddi "Ko'rinish" bo'limidagi rasmda bo'lgani kabi, biz har bir signalni shunga mos ravishda ulaymiz. Malumot uchun "SW_Hz.vhd" manba kodimizni tekshiring.
Rahmat. Umid qilamanki, sizga yoqadi.
Tavsiya:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Arduino UNO bilan qadam motor: 3 qadam
Arduino UNO bilan qadam dvigateli: Bosqichli motorlar - bu alohida bosqichlarda harakatlanadigan shahar motorlari. Ularda "fazalar" deb nomlangan guruhlarga bo'lingan bir nechta rulon bor. Har bir fazani ketma -ket quvvatlantirganda, dvigatel birma -bir aylanadi, zinapoyali dvigatellar juda foydali
Kompyuteringizni qadam dvigateli bilan boshqaring!: 9 qadam (rasmlar bilan)
Kompyuteringizni qadam dvigateli bilan boshqaring!: Oldingi ko'rsatmalarimdan birida men sizga step motorini aylanuvchi kodlovchi sifatida qanday ishlatishni ko'rsatdim. Bu yo'riqnomada keling, undan kompyuterni boshqarish uchun qanday foydalanish kerakligini bilib olaylik. Shunday qilib, ko'p vaqt sarflamasdan, boshlaylik