Satura rādītājs:

Lāzera arfa sintezators Zybo Board: 10 soļi (ar attēliem)
Lāzera arfa sintezators Zybo Board: 10 soļi (ar attēliem)

Video: Lāzera arfa sintezators Zybo Board: 10 soļi (ar attēliem)

Video: Lāzera arfa sintezators Zybo Board: 10 soļi (ar attēliem)
Video: Laser harp with omnichord style keyboard 2024, Jūlijs
Anonim
Lāzera arfa sintezators Zybo Board
Lāzera arfa sintezators Zybo Board

Šajā apmācībā mēs izveidosim pilnībā funkcionējošu lāzera arfu, izmantojot IR sensorus ar seriālo interfeisu, kas ļaus lietotājam mainīt instrumenta noskaņojumu un toni. Šī arfa būs 21. gadsimta vecā instrumenta pārtaisījums. Sistēma tika izveidota, izmantojot Xilinx Zybo izstrādes dēli kopā ar Vivado Design Suites. Kas jums būs nepieciešams, lai pabeigtu projektu:

  • 12 IR sensori un izstarotāji (var izmantot vairāk vai mazāk atkarībā no virkņu skaita)
  • Zybo Zynq-7000 izstrādes dēlis
  • Bezmaksas RTOS
  • Vivado dizaina "suite" numurs
  • Vads (sensoru pievienošanai pie plates)
  • 3 gabali PVC caurules ((2) 18 collas un (1) 8 collas)
  • 2 PVC elkoņi

1. darbība: iegūstiet Digilent Zybo DMA audio demonstrāciju

Šī projekta FPGA puse lielā mērā balstās uz šeit atrodamo demonstrācijas projektu. Tas izmanto tiešu piekļuvi atmiņai, lai nosūtītu datus tieši no atmiņas, uz kuru procesors var rakstīt, izmantojot AXI Stream, uz I2S audio bloku. Tālāk norādītās darbības palīdzēs jums izveidot un palaist DMA audio demonstrācijas projektu:

  1. Var būt nepieciešama jauna Zybo dēļa dēļa faila versija. Izpildiet šos norādījumus, lai iegūtu jaunus Vivado tāfeles failus.
  2. Izpildiet šajā lapā sniegto instrukciju 1. un 2. darbību, lai demonstrācijas projektu atvērtu Vivado. Izmantojiet Vivado metodi, nevis SDK aparatūras nodošanu.
  3. Jūs varat saņemt ziņojumu, kurā teikts, ka daži no jūsu ip blokiem ir jāatjaunina. Ja tā, izvēlieties "Rādīt IP statusu" un pēc tam cilnē IP statuss atlasiet visu novecojušo IP un noklikšķiniet uz "Jaunināt atlasīto". Kad tas ir pabeigts un tiek parādīts logs, kurā tiek jautāts, vai vēlaties ģenerēt izvades produktu, dodieties uz priekšu un noklikšķiniet uz "Izveidot". Ja saņemat kritisku brīdinājuma ziņojumu, ignorējiet to.
  4. Pārslēdzieties no dizaina uz cilni Avoti, lai redzētu avota failus. Ar peles labo pogu noklikšķiniet uz bloka dizaina "design_1" un atlasiet "Izveidot HDL iesaiņojumu". Kad tiek prasīts, atlasiet “kopēt ģenerēto iesaiņojumu, lai atļautu lietotāja rediģēšanu”. Tiks ģenerēts projekta iesaiņojuma fails.
  5. Tagad, kad ir pabeigtas tās kritiskās darbības, kuras kādā citā pamācībā tika izlaistas, varat atgriezties pie iepriekš saistītās apmācības un turpināt no 4. darbības līdz beigām un pārliecināties, vai demonstrācijas projekts darbojas pareizi. Ja jums nav iespējas ievadīt audio, lai to ierakstītu, vienkārši ierakstiet ar austiņām un klausieties 5-10 sekunžu neskaidru skaņu, nospiežot atskaņošanas pogu. Kamēr kaut kas iznāk no austiņu ligzdas, nospiežot atskaņošanas pogu, tas, iespējams, darbojas pareizi.

2. solis: veiciet dažas izmaiņas Vivado

Veiciet dažas izmaiņas Vivado
Veiciet dažas izmaiņas Vivado

Tagad Digilent DMA audio demonstrācija darbojas, taču tas šeit nav galīgais mērķis. Tāpēc mums ir jāatgriežas Vivado un jāveic dažas izmaiņas, lai mūsu sensorus varētu pieslēgt PMOD galvenēm un mēs varētu izmantot to vērtību programmatūras pusē.

  1. Atveriet bloka diagrammu Vivado
  2. Izveidojiet GPIO bloku, ar peles labo pogu noklikšķinot uz tukšās vietas bloka diagrammā un izvēlnē atlasot "Pievienot IP". Atrodiet un atlasiet “AXI GPIO”.
  3. Veiciet dubultklikšķi uz jaunā IP bloka un IP pielāgošanas logā dodieties uz cilni IP konfigurācija. Atlasiet visas ievades un iestatiet platumu uz divpadsmit, jo mūsu arfā būs 12 "stīgas", un tāpēc mums ir nepieciešami 12 sensori. Ja vēlaties izmantot mazāk vai vairāk sensoru, attiecīgi noregulējiet šo skaitli. Iestatiet arī iespējot pārtraukšanu.
  4. Ar peles labo pogu noklikšķiniet uz jaunā GPIO IP bloka un izvēlieties "palaist savienojuma automatizāciju". Atzīmējiet lodziņu AXI un nospiediet Labi. Tam vajadzētu automātiski savienot AXI saskarni, bet bloka izejas atstāt nesavienotas.
  5. Lai radītu vietu papildu pārtraukumam, veiciet dubultklikšķi uz IP bloka xlconcat_0 un mainiet portu skaitu no 4 uz 5. Tad jūs varat savienot ip2intc_irpt tapu no jaunā GPIO bloka ar jauno neizmantoto portu xlconcat blokā.
  6. Ar peles labo pogu noklikšķiniet uz jaunā GPIO IP bloka izvades "GPIO" un izvēlieties "make external". Atrodiet līniju un noklikšķiniet uz mazā sānu piecstūra, un kreisajā pusē jāatver logs, kurā varat mainīt nosaukumu. Mainiet nosaukumu uz "SENSORS". Ir svarīgi izmantot to pašu nosaukumu, ja vēlaties, lai mūsu sniegtais ierobežojumu fails darbotos, pretējā gadījumā jums būs jāmaina nosaukums ierobežojumu failā.
  7. Atgriezieties cilnē Avoti, atrodiet ierobežojumu failu un aizstājiet to ar mūsu piedāvāto. Jūs varat izvēlēties aizstāt failu vai vienkārši nokopēt mūsu ierobežojumu faila saturu un ielīmēt to virs vecā. Viena no svarīgākajām lietām, ko veic mūsu ierobežojumu fails, ir iespējot uzvilkšanas rezistorus PMOD galvenēs. Tas ir nepieciešams konkrētiem mūsu izmantotajiem sensoriem, tomēr ne visi sensori ir vienādi. Ja jūsu sensoriem ir nepieciešami nolaižamie rezistori, varat mainīt visus "set_property PULLUP true" gadījumus ar "set_property PULLDOWN true". Ja tiem nepieciešama atšķirīga rezistora vērtība nekā uz tāfeles, varat noņemt šīs līnijas un izmantot ārējos rezistorus. Tapu nosaukumi ir ierobežojumu faila komentāros, un tie atbilst etiķetēm pirmajā diagrammā Zybo Schematics lapa, kuru var atrast šeit. Ja vēlaties izmantot dažādus pmod tapas, vienkārši saskaņojiet ierobežojuma faila nosaukumus ar shēmas etiķetēm. Mēs izmantojam PMOD galveni JE un JD, un katrā izmantojam sešas datu tapas, izlaižot 1. un 7. tapas. Šī informācija ir svarīga, pieslēdzot sensorus. Kā parādīts shēmā, PMODS 6. un 12. tapas ir VCC, un 5. un 11. tapas ir noslīpētas.
  8. Atkārtoti izveidojiet HDL iesaiņojumu, kā iepriekš, un nokopējiet un pārrakstiet veco. Kad tas ir izdarīts, ģenerējiet bitu plūsmu un eksportējiet aparatūru, kā iepriekš, un restartējiet SDK. Ja jums tiek jautāts, vai vēlaties nomainīt veco aparatūras failu, atbilde ir jā. Iespējams, vislabāk ir aizvērt SDK, eksportējot aparatūru, lai tā tiktu pareizi nomainīta.
  9. Palaidiet SDK.

3. darbība: aktivizējiet FreeRTOS

Nākamais solis ir FreeRTOS palaišana uz Zybo plates.

  1. Ja jums vēl nav kopijas, lejupielādējiet FreeRTOS šeit un izvelciet failus.
  2. Importējiet FreeRTOS Zynq demonstrāciju, kas atrodas vietnē FreeRTOSv9.0.0 / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo. Importēšanas process ir gandrīz tāds pats kā citam demonstrācijas projektam, tomēr, tā kā FreeRTOS Zynq demonstrācija balstās uz citiem failiem mapē FreeRTOS, nevajadzētu kopēt failus savā darbvietā. Tā vietā jums vajadzētu ievietot visu FreeRTOS mapi projekta mapē.
  3. Izveidojiet jaunu tāfeles atbalsta pakotni, dodoties uz "file" -> "new" -> "board support package". Pārliecinieties, vai ir atlasīts atsevišķs, un noklikšķiniet uz Pabeigt. Pēc brīža parādīsies logs, atzīmējiet izvēles rūtiņu blakus lwip141 (tas aptur vienu no FreeRTOS demonstrācijām, ka tā nevar apkopot) un nospiediet Labi. Kad tas ir pabeigts, ar peles labo pogu noklikšķiniet uz RTOSdemo projekta un dodieties uz "rekvizīti", dodieties uz cilni "projektu atsauces" un atzīmējiet izvēles rūtiņu blakus jūsu izveidotajam jaunajam bsp. Cerams, ka tas tiks atzīts, bet dažreiz Xilinx SDK var būt dīvains par šāda veida lietām. Ja pēc šīs darbības joprojām tiek parādīta kļūda, ka trūkst xparameters.h vai tamlīdzīgi, mēģiniet atkārtot šo darbību un, iespējams, aizvērt SDK.

4. solis: pievienojiet lāzera arfa kodu

Tagad, kad FreeRTOS ir importēts, failus no lāzera arfas projekta varat iekļaut FreeRTOS demonstrācijā

  1. Izveidojiet jaunu mapi zem src mapes FreeRTOS demonstrācijā un šajā mapē nokopējiet un ielīmējiet visus piedāvātos c failus, izņemot main.c.
  2. Nomainiet RTOSDemo main.c ar piegādāto main.c
  3. Ja viss ir izdarīts pareizi, šajā brīdī jums vajadzētu būt iespējai palaist lāzera arfas kodu. Testēšanas nolūkos pogas ievade, kas tika izmantota DMA demonstrācijas projektā, tagad tiek izmantota, lai atskaņotu skaņas bez pievienotiem sensoriem (derēs jebkura no četrām galvenajām pogām). Katru reizi, kad to nospiežat, tā atskaņos virkni un vairākas reizes nospiedīs visas sistēmas virknes. Pievienojiet dažas austiņas vai skaļruņus austiņu ligzdai Zybo panelī un pārliecinieties, vai, nospiežot pogu, dzirdat stīgu skaņas.

5. darbība. Par kodu

Daudzi no jums, lasot šo apmācību, visticamāk šeit uzzinās, kā iestatīt audio vai izmantot DMA, lai kaut ko darītu citādi vai izveidotu citu mūzikas instrumentu. Šī iemesla dēļ dažas nākamās sadaļas ir veltītas aprakstam, kā sniegtais kods darbojas kopā ar iepriekš aprakstīto aparatūru, lai iegūtu funkcionālu audio izvadi, izmantojot DMA. Ja jūs saprotat, kāpēc tur ir koda gabali, jums vajadzētu būt iespējai tos pielāgot neatkarīgi no tā, ko vēlaties izveidot.

Pārtrauc

Vispirms es minēšu, kā šajā projektā tiek radīti pārtraukumi. Mēs to darījām, vispirms izveidojot pārtraukuma vektoru tabulas struktūru, kas izseko ID, pārtraukuma apstrādātāju un atsauci uz ierīci katram pārtraukumam. Pārtraukuma ID nāk no xparameters.h. Pārtraukuma apstrādātājs ir funkcija, kuru mēs rakstījām DMA un GPIO, un I2C pārtraukums nāk no Xlic I2C draivera. Ierīces atsauce norāda uz katras ierīces gadījumiem, kurus mēs inicializējam citur. Funkcijas _init_audio beigās cilpa iet caur katru pārtraukuma vektora tabulas vienumu un izsauc divas funkcijas - XScuGic_Connect () un XScuGic_Enable (), lai izveidotu savienojumu un iespējotu pārtraukumus. Tie atsaucas uz xInterruptController, kas ir pārtraukuma kontrolieris, kas pēc noklusējuma izveidots FreeRTOS main.c. Tātad būtībā mēs katru mūsu pārtraukumu pievienojam šim pārtraukuma kontrolierim, kuru mums jau ir izveidojis FreeRTOS.

DMA

DMA inicializācijas kods sākas ar lh_main.c. Vispirms tiek deklarēts statisks XAxiDma struktūras gadījums. Tad funkcijā _init_audio () tā tiek konfigurēta. Vispirms tiek izsaukta demo projekta konfigurēšanas funkcija, kas atrodas dma.c. Tas ir diezgan labi dokumentēts un nāk tieši no demonstrācijas. Tad pārtraukums tiek savienots un iespējots. Šim projektam ir nepieciešama tikai galvenā-verga pārtraukšana, jo visus datus DMA nosūta uz I2S kontrolieri. Ja vēlaties ierakstīt audio, jums būs nepieciešama arī verga-kapteiņa pārtraukšana. Galvenais-vergs pārtraukums tiek izsaukts, kad DMA pabeidz visu sūtīto datu nosūtīšanu. Šis pārtraukums ir neticami svarīgs mūsu projektam, jo katru reizi, kad DMA pabeidz viena audio paraugu bufera nosūtīšanu, tai nekavējoties jāsāk nākamā bufera izsūtīšana, pretējā gadījumā starp sūtījumiem var rasties dzirdama aizkave. Funkcijas dma_mm2s_ISR () iekšpusē varat redzēt, kā mēs apstrādājam pārtraukumu. Svarīgā daļa ir tuvu beigām, kur mēs izmantojam xSemaphoreGiveFromISR () un portYIELD_FROM_ISR (), lai paziņotu _audio_task (), ka tā var sākt nākamo DMA pārsūtīšanu. Pastāvīgu audio datu nosūtīšanas veids ir pārmaiņus starp diviem buferiem. Kad viens buferis tiek pārsūtīts uz I2C bloku, otra bufera vērtības tiek aprēķinātas un saglabātas. Tad, kad pārtraukums nāk no DMA, aktīvais buferis pārslēdzas un sāk pārrakstīt nesen rakstīto buferi, kamēr iepriekš pārsūtītais buferis sāk pārrakstīties ar jauniem datiem. Funkcijas _audio_task galvenā daļa ir vieta, kur tiek izsaukta fnAudioPlay (). fnAudioPlay () ņem DMA gadījumu, bufera garumu un rādītāju uz buferi, no kura dati tiks pārsūtīti. Dažas vērtības tiek nosūtītas uz I2S reģistriem, lai informētu, ka nāk vairāk paraugu. Tad XAxiDma_SimpleTransfer () tiek izsaukts, lai sāktu pārsūtīšanu.

I2S audio

audio.c un audio.h ir vieta, kur notiek I2S inicializācija. I2S inicializācijas kods ir diezgan izplatīta koda daļa, kas peld daudzās vietās, iespējams, atradīsit nelielas atšķirības no citiem avotiem, taču šim vajadzētu darboties. Tas ir diezgan labi dokumentēts un nav daudz jāmaina arfas projektam. DMA audio demonstrācijai, no kuras tā nāca, ir funkcijas, lai pārslēgtos uz mikrofona vai līnijas ieeju, lai jūs varētu tās izmantot, ja jums nepieciešama šī funkcionalitāte.

Skaņas sintēze

Lai aprakstītu, kā darbojas skaņas sintēze, es uzskaitīšu katru izstrādē izmantoto skaņas modeli, kas noveda pie galīgās metodes, jo tas ļaus jums saprast, kāpēc tas tiek darīts tā, kā tas tiek darīts.

1. metode. Katram virknei tiek aprēķināts viens sinusa vērtību periods ar atbilstošu frekvenci šīs virknes mūzikas notij un saglabāts masīvā. Piemēram, masīva garums būs sinusoidālā viļņa periods paraugos, kas ir vienāds ar paraugu skaitu ciklā. Ja paraugu ņemšanas ātrums ir 48 kHz un piezīmju frekvence ir 100 Hz, tad vienā ciklā ir 48 000 paraugu sekundē un 100 ciklu sekundē, un masīva garums būs 4800 paraugi, un tajā būs iekļautas viena pilnīga parauga vērtības sinusa viļņu periods. Kad tiek atskaņota virkne, audio parauga buferis tiek aizpildīts, ņemot vērtību no sinusoidālo masīvu un ievietojot to audio buferī kā paraugu, pēc tam palielinot indeksu sinusoidālo masīvu veidā, lai, izmantojot mūsu iepriekšējo piemēru no 4800 paraugiem viens sinusa viļņu cikls tiek ievietots audio buferī. Masīva indeksam tiek izmantota moduļu darbība, lai tā vienmēr būtu starp 0 un garumu, un, kad masīva indekss pārsniedz noteiktu slieksni (piemēram, paraugu 2 sekunžu vērtībā), virkne tiek izslēgta. Lai vienlaikus atskaņotu vairākas stīgas, sekojiet līdzi katrai virkņu masīvu indeksam atsevišķi un pievienojiet vērtību no katras virknes sinusa viļņa, lai iegūtu katru paraugu.

2. metode. Lai radītu muzikālāku toni, mēs sākam ar iepriekšējo modeli un katrai pamata frekvencei pievienojam harmonikas. Harmoniskās frekvences ir frekvences, kas ir pamatfrekvences veseli skaitļi. Atšķirībā no divu nesaistītu frekvenču summēšanas kopā, kā rezultātā vienlaikus tiek atskaņotas divas atšķirīgas skaņas, saskaitot kopā harmonikas, tā turpina skanēt kā tikai viena skaņa, bet ar atšķirīgu signālu. Lai to paveiktu, katru reizi, kad audio paraugam pievienojam sinusa viļņa vērtību vietā (masīva indekss % masīva garums), mēs pievienojam arī (2 * masīva indekss % masīva garums) un (3 * masīva indekss % masīva garums) un tā tālāk, lai arī cik daudz harmonikas būtu vēlamas. Šie reizinātie indeksi šķērsos sinusa vilni frekvencēs, kas ir sākotnējās frekvences veseli skaitļu reizinājumi. Lai nodrošinātu labāku toņa kontroli, katras harmonikas vērtības tiek reizinātas ar mainīgo, kas atspoguļo šīs harmonikas daudzumu kopējā skaņā. Piemēram, pamata sinusa viļņa vērtības var būt reizinātas ar 6, lai tas vairāk ietekmētu kopējo skaņu, savukārt piektajai harmonikai varētu būt reizinātājs 1, kas nozīmē, ka tās vērtības daudz mazāk veicina kopējo skaņu.

3. metode: Labi, tāpēc tagad piezīmēm ir ļoti jauks tonis, taču joprojām pastāv diezgan būtiska problēma: tās tiek atskaņotas ar noteiktu skaļumu noteiktu laiku. Lai skanētu kā īsts instruments, atskaņotās virknes skaļumam laika gaitā vajadzētu vienmērīgi samazināties. Lai to paveiktu, masīvs ir piepildīts ar eksponenciāli sabrukušas funkcijas vērtībām. Tagad, kad tiek veidoti audio paraugi, skaņa, kas nāk no katras virknes, tiek aprēķināta tāpat kā iepriekšējā metodē, bet pirms tā pievienošanas audio paraugam tā tiek reizināta ar vērtību, kas ir pie šīs virkņu masīva indeksa eksponenciālās sabrukšanas funkciju masīvā. Tādējādi skaņa vienmērīgi izkliedējas laika gaitā. Kad masīva indekss sasniedz sabrukšanas masīva beigas, virkne tiek pārtraukta.

4. metode. Šis pēdējais solis patiešām piešķir stīgu skaņām reālistisku stīgu skaņu. Pirms tie izklausījās patīkami, bet skaidri sintezēti. Lai mēģinātu labāk atdarināt reālās pasaules arfas virkni, katrai harmonikai tiek piešķirts atšķirīgs sabrukšanas ātrums. Īstās virknēs, kad virkne tiek atskaņota pirmo reizi, ir augsts augstfrekvences harmoniku saturs, kas rada tādu plūkšanas skaņu, kādu mēs sagaidām no virknes. Šīs augstfrekvences harmonikas ļoti īsā laikā ir skaņas galvenā daļa, atskanot stīgas skaņai, taču tās sabrūk ļoti ātri, kad pārņem lēnākās harmonikas. Katram skaņas sintēzē izmantotajam harmoniskajam skaitlim tiek izveidots sabrukšanas masīvs, katram ir savs sabrukšanas ātrums. Tagad katru harmoniku var patstāvīgi reizināt ar vērtību, kas atbilst tās sabrukšanas masīvam virknes masīva indeksā, un pievienot skaņai.

Kopumā skaņas sintēze ir intuitīva, taču aprēķini ir smagi. Visas virknes skaņas saglabāšana atmiņā uzreiz prasītu pārāk daudz atmiņas, bet sinusa viļņa un eksponenciālās funkcijas aprēķināšana starp katru kadru aizņemtu pārāk ilgu laiku, lai neatpaliktu no audio atskaņošanas ātruma. Lai paātrinātu aprēķinu, kodā tiek izmantoti vairāki triki. Visa matemātika, izņemot sākotnējo sinusa un eksponenciālās sabrukšanas tabulu izveidi, tiek veikta vesela skaitļa formātā, tāpēc 24 bitu audio izejā ir jāizplata pieejamā skaitliskā telpa. Piemēram, sinusa tabulas amplitūda ir 150, lai tā būtu gluda, bet ne tik liela, lai daudzas kopā atskaņotas stīgas varētu pievienot vairāk nekā 24 bitus. Tāpat eksponenciālās tabulas vērtības tiek reizinātas ar 80, pirms tās tiek noapaļotas līdz veseliem skaitļiem un saglabātas. Harmoniskie svari var iegūt diskrētas vērtības no 0 līdz 10. Arī visi paraugi faktiski dubultojas un sinusa viļņi tiek indeksēti ar 2, faktiski samazinot izlases ātrumu. Tas ierobežo maksimālo atskaņojamo frekvenci, taču tas bija nepieciešams, lai pietiekami ātri aprēķinātu pašreizējo virkņu un harmoniku skaitu.

Šī skaņas modeļa izveide un tā iedarbināšana prasīja ievērojamas pūles procesora pusē, un šī projekta laikā būtu bijis neticami grūti panākt, lai tas darbotos fpga pusē no nulles (iedomājieties, ka katru reizi jāatjauno bitu plūsma) laiks, kad tika pārbaudīts veriloga gabals, lai pārbaudītu skaņu). Tomēr, izmantojot fpga, tas varētu būt labāks veids, kā to izdarīt, iespējams, novēršot problēmu, ka nevar pietiekami ātri aprēķināt paraugus un ļaut darboties vairāk virkņu, harmoniku un pat audio efektu vai citu uzdevumu. procesora pusē.

6. darbība: sensoru pieslēgšana

Sensoru pieslēgšana
Sensoru pieslēgšana

Lai izveidotu virknes, mēs izmantojām IR pārtraukuma staru sensorus, kas noteiks, kad virkne tiek atskaņota. Mēs pasūtījām sensorus no šīs saites. Sensoriem ir strāvas, zemējuma un datu vads, savukārt izstarotājiem ir tikai strāvas un zemējuma vads. Mēs izmantojām 3.3 V un iezemētās tapas no PMOD galvenēm, lai barotu gan izstarotājus, gan sensorus. Lai darbinātu visus sensorus un izstarotājus, ir nepieciešams savienot visus sensorus un emitētāju paralēli. Katram sensoru datu vadam būs jāiet uz savu pmod tapu.

7. solis: skeleta veidošana

Skeleta veidošana
Skeleta veidošana

Lai izveidotu arfas formu, trīs gabali tiek izmantoti kā skelets sensoru un izstarotāju novietošanai. Vienā no diviem 18 collu PVC caurules gabaliem izlīdziniet sensorus un izstarotājus mainīgā secībā 1,5 collu attālumā viens no otra un pēc tam pielīmējiet tos pie caurules. Pārējās 18 collu PVC caurulēs izlīdziniet sensorus un izstarotājus mainīgā secībā, taču noteikti izlīdziniet secību (t.i., ja pirmajai caurulei vispirms bija sensors, tad otrajai vispirms vajadzētu būt izstarotājai un otrādi). Datu, strāvas un zemējuma vadiem būs nepieciešams lodēt garākus vadus, lai nodrošinātu, ka tie varēs sasniegt paneli.

8. solis: koka ārpuses veidošana

Koka ārpuses veidošana
Koka ārpuses veidošana

Šis solis nav obligāts, bet ļoti ieteicams. Koka ārpuse ne tikai padara arfu jauku, bet arī aizsargā sensorus un vadus no bojājumiem. Koka rāmi var izveidot ar taisnstūra formas gredzenu no koka. Taisnstūra iekšpusē jābūt vismaz 1-1/2 collu atverei, lai tā ietilptu caurulē un sensora skeletā. Kad rāmis ir uzbūvēts, izurbiet divus caurumus, kas ļaus izvadīt sensora un izstarotāja vadus, lai tos savienotu ar plāksni.

*Piezīme. Ieteicams pievienot piekļuves punktus, lai varētu noņemt un ievietot caurules skeletu gadījumā, ja ir jāveic remonts vai nelieli pielāgojumi.

9. solis: visu gabalu salikšana kopā

Visu gabalu salikšana kopā
Visu gabalu salikšana kopā

Kad visas iepriekšējās darbības ir pabeigtas, ir pienācis laiks veidot arfu. Vispirms ievietojiet caurules skeletu koka ārpuses iekšpusē. Pēc tam pievienojiet sensoru un izstarotāju vadus pareizajā vietā uz tāfeles. Pēc tam atveriet SDK un noklikšķiniet uz atkļūdošanas pogas, lai ieprogrammētu dēli. Kad tāfele ir ieprogrammēta, pievienojiet austiņas vai skaļruni. Atkarībā no tā, kurš sensors nonāk kādā pmod pieslēgvietā, jūsu arfas stīgas, iespējams, sākumā nebūs kārtībā. Tā kā var būt grūti noteikt, kurš vads iet uz kādu sensoru, ja ir iesaistīts tik daudz vadu, mēs iekļāvām veidu, kā kartēt virkņu numurus, lai pārtrauktu bitu pozīcijas programmatūrā. Atrodiet “static int sensor_map [NUM_STRINGS]” un pielāgojiet masīva vērtības, līdz virknes tiek atskaņotas no zemākās līdz augstākajai.

Izvēlni var izmantot, atverot seriālo termināli (piemēram, RealTerm) un iestatot pārraides ātrumu uz 115200 un displeju uz ANSI. Izvēlnē var pārvietoties, izmantojot taustiņus w un s, lai pārvietotos uz augšu un uz leju, un taustiņus a un d, lai mainītu vērtības.

10. solis: ROCK OUT

Kad arfa ir pilnībā funkcionāla. Apgūstiet arfu un klausieties savas mūzikas saldo skaņu!

Ieteicams: