Tartalomjegyzék:

Lézeres hárfa szintetizátor a Zybo Boardon: 10 lépés (képekkel)
Lézeres hárfa szintetizátor a Zybo Boardon: 10 lépés (képekkel)

Videó: Lézeres hárfa szintetizátor a Zybo Boardon: 10 lépés (képekkel)

Videó: Lézeres hárfa szintetizátor a Zybo Boardon: 10 lépés (képekkel)
Videó: Laser-Harp&Zynthian 2024, Július
Anonim
Lézeres hárfa szintetizátor a Zybo táblán
Lézeres hárfa szintetizátor a Zybo táblán

Ebben az oktatóanyagban egy teljesen működőképes lézerhárfát hozunk létre, amely infravörös érzékelőket használ, soros interfésszel, amely lehetővé teszi a felhasználó számára a hangolás és a hangszín megváltoztatását. Ez a hárfa lesz a 21. századi remake a régi hangszerről. A rendszert egy Xilinx Zybo fejlesztő tábla segítségével hozták létre a Vivado Design Suites -szal együtt. Amire szüksége lesz a projekt befejezéséhez:

  • 12 infravörös érzékelő és sugárzó (több vagy kevesebb használható a karakterláncok számától függően)
  • Zybo Zynq-7000 fejlesztőlap
  • Ingyenes RTOS
  • Vivado Design lakosztály
  • Huzal (az érzékelők csatlakoztatásához a kártyához)
  • 3 db PVC cső ((2) 18 hüvelyk és (1) 8 hüvelyk)
  • 2 PVC könyök

1. lépés: Szerezze be a Digilent Zybo DMA audiobemutatóját

A projekt FPGA oldala nagyrészt az itt található demo projekten alapul. Közvetlen memóriahozzáférést használ az adatok közvetlen küldéséhez a memóriából, amelyeket a processzor írhat AXI Streamen keresztül egy I2S audioblokkba. A következő lépések segítenek a DMA audio demo projekt elindításában:

  1. Szükség lehet a Zybo tábla fórumfájljának új verziójára. Kövesse ezeket az utasításokat a Vivado új táblafájljainak beszerzéséhez.
  2. Kövesse az ezen az oldalon található utasítások 1. és 2. lépését, hogy a demóprojekt megnyíljon a Vivadóban. Használja a Vivado módszert, ne az SDK hardverátadását.
  3. Kaphat egy üzenetet, amely azt mondja, hogy néhány ip -blokkot frissíteni kell. Ha igen, válassza az "IP -állapot megjelenítése" lehetőséget, majd az IP -állapot lapon válassza ki az összes elavult IP -címet, majd kattintson a "Kijelölt frissítése" gombra. Amikor befejeződik, és megjelenik egy ablak, amely megkérdezi, hogy szeretne -e kimeneti terméket létrehozni, kattintson a "Generálás" gombra. Ha kritikus figyelmeztető üzenetet kap, hagyja figyelmen kívül.
  4. A forrásfájlok megtekintéséhez váltson a tervezésről a Vivado források lapjára. Kattintson a jobb gombbal a „design_1” blokktervre, és válassza a „HDL csomagoló létrehozása” lehetőséget. Amikor a rendszer kéri, válassza a "Másolja a létrehozott csomagolást a felhasználói szerkesztések engedélyezése" lehetőséget. Létrejön egy csomagoló fájl a projekthez.
  5. Most, hogy befejeződtek azok a kritikus lépések, amelyek valahogy kimaradtak a másik oktatóanyagból, visszatérhet a korábban linkelt oktatóanyaghoz, és folytathatja a 4. lépéstől a végéig, és győződjön meg arról, hogy a bemutató projekt megfelelően fut. Ha nincs módja annak, hogy hangot vigyen be a rögzítéshez, akkor csak rögzítse a fejhallgatót, és hallgassa meg a 5-10 másodperces homályos hangot, amikor megnyomja a lejátszás gombot. Amíg a lejátszó gomb megnyomásakor valami kijön a fejhallgató -csatlakozóból, valószínűleg megfelelően működik.

2. lépés: Végezzen néhány változtatást a Vivado -ban

Változtasson Vivadóban
Változtasson Vivadóban

Tehát most a Digilent DMA audio demója működik, de ez egyáltalán nem a végcél. Tehát vissza kell térnünk Vivadóba, és néhány változtatást kell végrehajtanunk annak érdekében, hogy érzékelőink csatlakoztathatók legyenek a PMOD fejlécekhez, és felhasználhassuk értéküket a szoftver oldalon.

  1. Nyissa meg a blokkdiagramot a Vivadóban
  2. Hozzon létre egy GPIO blokkot a jobb egérgombbal a blokkdiagram üres helyén, és válassza a "IP hozzáadása" lehetőséget a menüből. Keresse meg és válassza az "AXI GPIO" lehetőséget.
  3. Kattintson duplán az új IP-blokkra, és az IP-testreszabás ablakban lépjen az IP-konfiguráció fülre. Válassza ki az összes bemenetet, és állítsa a szélességet tizenkettőre, mivel 12 „karakterlánc” lesz a hárfán, és ezért 12 érzékelőre van szükségünk. Ha kevesebb vagy több érzékelőt szeretne használni, akkor állítsa be ezt a számot megfelelően. Állítsa be a megszakítás engedélyezését is.
  4. Kattintson a jobb gombbal az új GPIO IP -blokkra, és válassza a "kapcsolat automatizálása futtatása" lehetőséget. Jelölje be az AXI négyzetet, és nyomja meg az OK gombot. Ennek automatikusan csatlakoztatnia kell az AXI interfészt, de a blokk kimeneteit nem kell csatlakoztatni.
  5. Annak érdekében, hogy helyet adjon az extra megszakításnak, kattintson duplán az xlconcat_0 IP -blokkra, és módosítsa a portok számát 4 -ről 5 -re. Ezután csatlakoztathatja az ip2intc_irpt pin -t az új GPIO blokkból az xlconcat blokk új, nem használt portjához.
  6. Kattintson jobb gombbal az új GPIO IP blokk "GPIO" kimenetére, és válassza a "make external" lehetőséget. Keresse meg, hová megy a vonal, és kattintson a kis oldalirányú ötszögre, és a bal oldalon egy ablaknak kell megnyílnia, ahol megváltoztathatja a nevet. Módosítsa a nevet "ÉRZÉKELŐK" -re. Fontos, hogy ugyanazt a nevet használja, ha azt szeretné, hogy az általunk kínált kényszerfájl működjön, különben módosítania kell a kényszerfájl nevét.
  7. A források lapon keresse meg a korlátozási fájlt, és cserélje le az általunk megadott fájlra. Választhatja, hogy kicseréli -e a fájlt, vagy csak lemásolja a kényszerfájlunk tartalmát, és beilleszti a régi tartalomba. A kényszerfájlunk egyik fontos dolga, hogy engedélyezze a felhúzó ellenállásokat a PMOD fejlécekben. Ez szükséges az általunk használt érzékelőkhöz, de nem minden érzékelő egyforma. Ha az érzékelők lehúzható ellenállásokat igényelnek, a "set_property PULLUP true" minden példányát "set_property PULLDOWN true" értékre cserélheti. Ha más ellenállási értéket igényelnek, mint a táblán, akkor eltávolíthatja ezeket a vonalakat, és külső ellenállásokat használhat. A tűnevek a megszorítások fájl megjegyzéseiben találhatók, és megegyeznek a Zybo Schematics első diagramjának címkéivel oldal, amely itt található. Ha különböző pmod csapokat szeretne használni, akkor csak illessze a kényszerfájlban szereplő neveket a sematikus címkékhez. A PME JE és JD fejlécet használjuk, és mindegyiken hat adótűt használunk, kihagyva az 1. és a 7. érintkezőt. Ez az információ fontos az érzékelők csatlakoztatásakor. Amint az a sematikus ábrán látható, a PMODS 6. és 12. csapja VCC, az 5. és 11. csap földelt.
  8. Regenerálja a HDL csomagolót, mint korábban, és másolja és írja felül a régit. Ha ez megtörtént, hozzon létre bitfolyamot és exportálja a hardvert, mint korábban, és indítsa újra az SDK -t. Ha megkérdezi, hogy le szeretné -e cserélni a régi hardverfájlt, a válasz igen. Valószínűleg a legjobb, ha az SDK -t bezárja, amikor hardvert exportál, hogy megfelelően kicserélődjön.
  9. Indítsa el az SDK -t.

3. lépés: Indítsa el a FreeRTOS futtatását

A következő lépés a FreeRTOS futtatása a Zybo táblán.

  1. Ha még nincs másolata, töltse le a FreeRTOS -t innen, és bontsa ki a fájlokat.
  2. Importálja a FreeRTOS Zynq demót, amely a FreeRTOSv9.0.0 / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo címen található. Az importálási folyamat nagyjából ugyanaz, mint a másik demóprojektnél, azonban mivel a FreeRTOS Zynq demó a FreeRTOS mappában található más fájlokra támaszkodik, ne másolja a fájlokat a munkaterületre. Ehelyett a teljes FreeRTOS mappát a projektmappába kell helyeznie.
  3. Hozzon létre egy új tábla támogatási csomagot a "file" -> "new" -> "board support package" menüpontban. Győződjön meg arról, hogy az önálló van kiválasztva, majd kattintson a Befejezés gombra. Egy pillanat múlva megjelenik egy ablak, jelölje be az lwip141 melletti jelölőnégyzetet (ez leállítja a FreeRTOS demók egyikének fordítási sikertelenségét), majd nyomja meg az OK gombot. Miután befejezte a jobb egérgombbal az RTOSdemo projektet, és lépjen a "tulajdonságok" elemre, lépjen a "projektreferenciák" fülre, és jelölje be a létrehozott új bsp melletti négyzetet. Remélhetőleg felismerik, de néha a Xilinx SDK furcsa lehet az ilyesmiben. Ha a hiba után továbbra is hibaüzenetet kap, hogy az xparameters.h hiányzik, vagy valami hasonló, akkor próbálja megismételni ezt a lépést, és esetleg kilépni és újraindítani az SDK -t.

4. lépés: Adjon hozzá lézeres hárfakódot

Most, hogy a FreeRTOS importált, a lézerhárfa projekt fájljait beviheti a FreeRTOS bemutatóba

  1. Hozzon létre egy új mappát a FreeRTOS demo src mappája alatt, és másolja és illessze be ebbe a mappába az összes mellékelt c fájlt, kivéve a main.c fájlt.
  2. Cserélje ki az RTOSDemo main.c -t a mellékelt main.c -re.
  3. Ha mindent helyesen hajtott végre, akkor ezen a ponton képesnek kell lennie a lézerhárfa kód futtatására. Tesztelési célokra a DMA demo projektben használt gombbemenetet használják hangok lejátszására érzékelők nélkül (a négy fő gomb bármelyike működik). Minden karakterláncot lejátszik, amikor megnyomja, és többszörös megnyomással végigböngészi a rendszer összes karakterláncát. Csatlakoztasson néhány fejhallgatót vagy hangszórót a Zybo tábla fejhallgató -csatlakozójához, és győződjön meg arról, hogy hallja -e a húrok hangjait, amikor megnyom egy gombot.

5. lépés: A kódról

Sokan, akik ezt az oktatóanyagot olvassák, valószínűleg itt tanulják meg, hogyan kell beállítani a hangot, vagy a DMA -t használni valami máshoz, vagy más hangszert létrehozni. Ezért a következő néhány szakasz annak ismertetésével foglalkozik, hogy a megadott kód hogyan működik a korábban leírt hardverrel együtt, hogy működő hangkimenetet kapjon a DMA használatával. Ha megérti, hogy miért vannak a kódrészletek, akkor képesnek kell lennie arra, hogy beállítsa azokat, bármit is szeretne létrehozni.

Megszakítja

Először megemlítem, hogyan jönnek létre megszakítások ebben a projektben. Ezt úgy hajtottuk végre, hogy először létrehoztunk egy megszakítási vektoros táblázatstruktúrát, amely nyomon követi az azonosítót, a megszakításkezelőt és minden megszakításnál az eszközre mutató hivatkozást. A megszakítási azonosítók az xparameters.h -ból származnak. A megszakításkezelő olyan funkció, amelyet a DMA és a GPIO számára írtunk, és az I2C megszakítás az Xlic I2C illesztőprogramból származik. Az eszközreferencia minden eszköz példányára mutat, amelyeket máshol inicializálunk. Az _init_audio függvény vége felé egy ciklus végigmegy a megszakítási vektor tábla minden elemén, és két függvényt hív meg, az XScuGic_Connect () és az XScuGic_Enable () függvényeket a megszakítások csatlakoztatásához és engedélyezéséhez. Hivatkoznak az xInterruptControllerre, amely alapértelmezés szerint a FreeRTOS main.c -ben létrehozott megszakításvezérlő. Tehát alapvetően minden megszakításunkat ehhez a megszakításvezérlőhöz csatoljuk, amelyet a FreeRTOS készített nekünk.

DMA

A DMA inicializáló kód az lh_main.c fájlban kezdődik. Először egy XAxiDma szerkezet statikus példányát deklarálják. Ezután az _init_audio () függvényben konfigurálódik. Először a demo projekt konfigurációs függvényét hívják meg, amely a dma.c. Elég jól dokumentált, és közvetlenül a demóból származik. Ezután a megszakítás kapcsolódik és engedélyezve van. Ehhez a projekthez csak a master-slave megszakításra van szükség, mivel a DMA minden adatot elküld az I2S vezérlőnek. Ha hangot szeretne rögzíteni, akkor a slave-master megszakításra is szükség lesz. A master-slave megszakítás hívásra kerül, amikor a DMA befejezi az adatok elküldését. Ez a megszakítás hihetetlenül fontos a projektünk szempontjából, mert minden alkalommal, amikor a DMA befejezi az egyik hangminta -puffer küldését, azonnal el kell kezdenie a következő puffer küldését, különben hallható késés lépne fel az küldések között. A dma_mm2s_ISR () függvényben láthatja, hogyan kezeljük a megszakítást. A fontos rész a vége közelében van, ahol az xSemaphoreGiveFromISR () és a portYIELD_FROM_ISR () használatával értesítjük _audio_task (), hogy kezdeményezheti a következő DMA -átvitelt. Az állandó audioadatokat két puffer váltakozásával küldjük. Amikor az egyik puffert az I2C blokkra továbbítják, a másik puffer értékeit kiszámítják és tárolják. Amikor a megszakítás a DMA -ból érkezik, az aktív puffer átkapcsol, és az újabban írt puffer átvitele megkezdődik, miközben az előzőleg átvitt puffer új adatokkal kezd felülíródni. A _audio_task függvény legfontosabb része az, ahol az fnAudioPlay () meghívásra kerül. Az fnAudioPlay () felveszi a DMA -példányt, a puffer hosszát és egy mutatót arra a pufferre, amelyről az adatokat továbbítani kell. Néhány értéket elküldünk az I2S regisztereknek, hogy tudassuk, újabb minták érkeznek. Ezután az XAxiDma_SimpleTransfer () meghívást kap az átvitel kezdeményezéséhez.

I2S Audio

Az audio.c és az audio.h az I2S inicializálása. Az I2S inicializáló kód egy meglehetősen gyakori kódrészlet, amely számos helyen lebeg, előfordulhat, hogy más forrásoktól eltéréseket talál, de ennek működnie kell. Elég jól dokumentált, és nem kell sokat változtatni a hárfa projekten. A DMA audio demó, amelyből származik, funkciókkal rendelkezik a mikrofonra vagy a vonal bemenetre való váltáshoz, így használhatja azokat, ha szüksége van erre a funkcióra.

Hangszintézis

A hangszintézis működésének leírásához felsorolom a fejlesztés során használt összes hangmodellt, amelyek a végső módszerhez vezettek, mivel ez érzékelni fogja, miért történik ez így.

1. módszer: Egy szinuszérték periódust számítunk ki minden karakterláncra az adott karakterlánc megfelelő hangfrekvenciájával, és tároljuk egy tömbben. Például a tömb hossza a minták szinuszhullámának periódusa lesz, ami megegyezik a minták / ciklusok számával. Ha a mintavételi frekvencia 48 kHz és a hangfrekvencia 100 Hz, akkor 48 000 minta/másodperc és 100 ciklus/másodperc 4800 mintát eredményez ciklusonként, és a tömb hossza 4800 minta lesz, és egy teljes értéket tartalmaz szinuszhullám időszak. A karakterlánc lejátszásakor a hangminta -puffert úgy töltik fel, hogy a szinuszhullám tömbből vesznek egy értéket, és mintavételként az audio pufferbe helyezik, majd az indexet a szinuszhullám tömbbe növelik úgy, hogy az előző példánk alapján 4800 mintából egy szinuszhullámú ciklus kerül az audio pufferbe. A tömbindexen modulos műveletet alkalmaznak, így az mindig 0 és a hossz közé esik, és amikor a tömbindex meghalad egy bizonyos küszöböt (például 2 másodperc értékű mintákat), a karakterlánc kikapcsol. Ha több húrt szeretne egyszerre lejátszani, kövesse nyomon az egyes karakterláncok tömbindexét, és adja hozzá az egyes szintek szinuszhullámának értékét, hogy minden mintát megkapjon.

2. módszer: A zenei hangzás létrehozásához az előző modellel kezdjük, és minden alapfrekvenciához felharmonikusokat adunk. A harmonikus frekvenciák olyan frekvenciák, amelyek az alapfrekvencia egész többszörösei. Ellentétben két egymástól független frekvencia összesítésével, amely két különböző hang egyidejű lejátszását eredményezi, a harmonikusok összeadása után továbbra is csak egy hangként szól, de más hangszínnel. Ennek eléréséhez minden egyes alkalommal, amikor hozzáadjuk a szinuszhullám értékét a helyszínen (tömbindex % tömbhossz) az audio mintához, hozzáadjuk a (2 * tömbindex % tömbhossz) és a (3 * tömbindex % tömbhossz), és így tovább, bármennyire is sok harmonikusra van szükség. Ezek a megszorzott indexek olyan frekvenciákon haladnak át a szinuszon, amelyek az eredeti frekvencia egész többszörösei. A hangzás jobb szabályozása érdekében minden felharmonikus értékét megszorozzuk egy változóval, amely az adott felharmonikus mennyiségét képviseli a teljes hangban. Például az alapvető szinuszhullám értékei 6 -szorosak lehetnek, hogy jobban befolyásolják az összhangot, míg az ötödik felharmonikus 1 -es szorzóval rendelkezhetnek, ami azt jelenti, hogy értékei sokkal kevésbé járulnak hozzá a teljes hangzáshoz.

3. módszer: Rendben, így most nagyon szép hangot kaptunk a hangjegyekről, de még mindig van egy nagyon fontos probléma: rögzített hangerőn, meghatározott ideig játszanak. Ahhoz, hogy egyáltalán úgy hangozzon, mint egy igazi hangszer, a lejátszott húr hangerejének idővel simán le kell bomlania. Ennek elérése érdekében egy tömb kitöltődik egy exponenciálisan bomló függvény értékeivel. Most, amikor a hangmintákat hozzák létre, az egyes karakterláncokból származó hangot az előző módszerhez hasonlóan számítják ki, de mielőtt hozzáadják az audio mintához, megszorozzák az adott karakterlánc tömbindexének értékével az exponenciális bomlásfüggvény tömbben. Ezáltal a hang simán eloszlik az idő múlásával. Amikor a tömbindex eléri a bomlási tömb végét, a karakterlánc leáll.

4. módszer: Ez az utolsó lépés az, ami valóban megadja a húrhangoknak a valósághű hangzást. Mielőtt kellemesnek, de egyértelműen szintetizáltnak hangzottak. Annak érdekében, hogy jobban meg lehessen emulálni a valódi hárfa húrját, minden felharmonikushoz más bomlási arány van hozzárendelve. Valódi karakterláncokban, amikor a karakterláncot először ütik, magas a magas frekvenciájú felharmonikus tartalom, amely azt a fajta pengető hangot hozza létre, amelyet egy húrról elvárunk. Ezek a nagyfrekvenciás felharmonikusok nagyon röviden a hang fő részei, a húr hangját ütik, de a lassabb felharmonikusok hatására nagyon gyorsan elbomlanak. A hangszintézisben használt minden harmonikus számhoz egy bomlási tömb jön létre, mindegyik saját bomlási sebességgel. Most minden harmonikus egymástól függetlenül megszorozható a megfelelő bomlási tömb értékével a karakterlánc tömbindexén, és hozzáadható a hanghoz.

Összességében a hangszintézis intuitív, de nehéz számolni. A teljes húrhang egyszerre történő tárolása a memóriában túl sok memóriát igényelne, de a szinuszhullám és az exponenciális függvény kiszámítása minden képkocka esetében túl sok időt vesz igénybe ahhoz, hogy lépést tudjunk tartani az audiolejátszás sebességével. A kódban számos trükköt használnak a számítás felgyorsítására. A szinusz- és az exponenciális bomlástáblák kezdeti létrehozása kivételével minden matematika egész formátumban történik, ami megköveteli a rendelkezésre álló számterület szétosztását a 24 bites hangkimenetben. Például a szinuszasztal 150 amplitúdójú, így sima, de nem olyan nagy, hogy sok együtt játszott karakterlánc 24 bit felett legyen. Hasonlóképpen, az exponenciális táblázat értékeit 80 -szor megszorozzuk, mielőtt egész számokra kerekítjük és tároljuk. A harmonikus súlyok diszkrét értékeket vehetnek fel 0 és 10 között. Ezenkívül minden minta ténylegesen megduplázódik, és a szinuszhullámok 2 -vel vannak indexelve, gyakorlatilag megfelezve a mintavételi gyakoriságot. Ez korlátozza a lejátszható maximális frekvenciát, de szükséges volt ahhoz, hogy a karakterláncok és a felharmonikusok számát elég gyorsan kiszámítsák.

Ennek a hangmodellnek a létrehozása és működésbe hozása jelentős erőfeszítéseket igényelt a processzor oldalán, és hihetetlenül nehéz lett volna ezt a projekt időszaka alatt az alapoktól kezdve működésbe hozni (képzeljük el, hogy minden alkalommal újra kell készítenünk a bitfolyamot) amikor egy darab verilogot megváltoztattak a hang teszteléséhez). Az fpga -val való végrehajtás azonban valószínűleg jobb módja lehet ennek, kiküszöbölve azt a problémát, hogy nem lehet elég gyorsan kiszámítani a mintákat, és lehetővé teszi több karakterlánc, felharmonikus, sőt hanghatások vagy egyéb feladatok futtatását a számítógépen. processzor oldalon.

6. lépés: Az érzékelők bekötése

Az érzékelők bekötése
Az érzékelők bekötése

A karakterláncok létrehozásához infravörös megszakítási sugárérzékelőket használtunk, amelyek érzékelik, amikor a karakterláncot lejátszják. Az alábbi linkről rendeltük érzékelőinket. Az érzékelők táp-, föld- és adatvezetékkel rendelkeznek, míg a kibocsátók csak táp- és földelővezetékkel rendelkeznek. A kibocsátók és az érzékelők táplálásához a PMOD fejlécek 3,3 V -os és földelt csapjait használtuk. Az összes érzékelő és emitter áramellátásához párhuzamosan kell csatlakoztatni az összes érzékelőt és kibocsátót. Az érzékelők adatvezetékeinek mindegyikének saját pmod -tűjére kell mennie.

7. lépés: A csontváz felépítése

A csontváz építése
A csontváz építése

A hárfa alakjának kialakítása érdekében a három darabot csontvázként használják az érzékelők és sugárzók elhelyezésére. A két 18 hüvelykes PVC cső egyikén helyezze az érzékelőket és a kibocsátókat váltakozó sorrendben 1,5 hüvelykre egymástól, majd ragasztja őket a csőre. A másik 18 hüvelykes PVC csövön váltakozó sorrendben illessze az érzékelőket és a kibocsátókat, de ügyeljen arra, hogy a sorrendet eltolja (azaz ha az első csőben először volt érzékelő, akkor a másodiknak először kell kibocsátónak lennie, és fordítva). Szükség lesz hosszabb vezetékek forrasztására az adat-, táp- és földvezetékeken, hogy biztosítani tudják, hogy elérjék a táblát.

8. lépés: A fa külső kialakítása

A fa külső kialakítása
A fa külső kialakítása

Ez a lépés nem kötelező, de erősen ajánlott. A fa külső megjelenése nemcsak a hárfát teszi szépnek, hanem védi az érzékelőket és a vezetékeket a sérülésektől. A fa keretet egy hallow téglalap alakú gyűrű hozhatja létre fából. A téglalap belsejének legalább 1-1/2 hüvelyk nyílással kell rendelkeznie, hogy illeszkedjen a csőhöz és az érzékelő vázához. A keret felépítése után fúrjon két lyukat, amelyek lehetővé teszik az érzékelő és a sugárzó vezetékeinek kivezetését, hogy összekapcsolhassák őket a táblával.

*Megjegyzés: Javasoljuk, hogy adjon hozzá hozzáférési pontokat a csőváz eltávolításához és behelyezéséhez, ha javításra vagy enyhe beállításokra van szükség.

9. lépés: Az összes darab összerakása

Az összes darab összerakása
Az összes darab összerakása

Miután az összes előző lépés befejeződött, ideje megépíteni a hárfát. Először helyezze a csővázat a fa külső részébe. Ezután csatlakoztassa az érzékelők és kibocsátók vezetékeit a megfelelő helyre a táblán. Ezután nyissa meg az SDK -t, és kattintson a hibakeresési gombra a tábla programozásához. Ha a kártya be van programozva, csatlakoztasson egy fejhallgatót vagy egy hangszórót. Attól függően, hogy melyik érzékelő melyik pmod portba kerül, a hárfa húrai valószínűleg kezdetben nem működnek. Mivel nehéz lehet megmondani, hogy melyik vezeték melyik érzékelőhöz megy, ha ennyi vezeték érintett, ezért beillesztettünk egy módszert a karakterláncok leképezésére, hogy megszakítsák a szoftver bithelyeit. Keresse meg a "static int sensor_map [NUM_STRINGS]" elemet, és módosítsa a tömb értékeit, amíg a karakterláncok a legalacsonyabbtól a legmagasabb sorrendig nem játszanak.

A menü segítségével soros terminált (pl. RealTerm) nyithat meg, és az átviteli sebességet 115200 -ra, a kijelzőt pedig ANSI -re állíthatja. A menüben navigálhat a w és s gombokkal a fel és le mozgatáshoz, az a és d gombokkal pedig az értékek megváltoztatásához.

10. lépés: ROCK OUT

Miután a hárfa teljesen működőképes. Sajátítsd el a hárfát és hallgasd saját zenéd édes hangját!

Ajánlott: