Sisukord:
- Samm 1: Digitaalse järjestuse kasutaja toimimine
- Samm: tehnilised üksikasjad
- Samm: tehnilised üksikasjad
- 4. samm: 7-segmendiline kellajagur
- 5. samm: lööki minutis kellajagur
- 6. samm: Kellajagur
- Samm 7: Esita/peatage/valige olekumasin
- 8. samm: esita/peatage/valige olekumasin
- 9. samm: väljund FSM
- Samm 10: väljund FSM
- Samm 11: Märkus Määra
- 12. samm: väljundi valimine
- Samm 13: Square Wave Gen
- 14. samm: 7-segmendiline kuva
- Samm 15: Lõplik valik
- 16. samm: välisseadmed: DAC
- 17. samm: välisseadmed: kõlar
- 18. samm: video demo
- 19. samm: VHDL -kood
Video: 4 -astmeline digitaalne järjestus: 19 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
CPE 133, Cal Poly San Luis Obispo
Projekti loojad: Jayson Johnston ja Bjorn Nelson
Tänapäeva muusikatööstuses on üks levinumaid „instrumente” digitaalne süntesaator. Iga muusikažanr, alates hip-hopist kuni popi ja isegi kantrini, kasutab stuudios digitaalset süntesaatorit, et luua oma muusika elustamiseks vajalikke lööke ja helisid. Selles õpetuses loome Basys 3 FPGA plaadiga väga lihtsa süntesaatori.
Süntesaator suudab mängida nelja valitud veerandnooti konstantse löökide arvuga minutis. Kasutajad kasutavad lülitite abil iga veerandnooti muusikalisele helikõrgusele. Selle projekti jaoks kasutame 4-bitist digitaalset analoogmuundurit (DAC), et võtta plaadilt väljund ja teisendada see analoogsignaaliks. Seejärel edastatakse DAC -i väljund tavalisele arvuti kõlarile, luues meie muusika. Võimalik on kuusteist diskreetset väljakut. Me piirame oma süntesaatorit ühe kaheteistkümne noodiga 12 noodiga, mis jäävad keskmise C (261,6 Hz) ja B4 (493,9 Hz) vahele. Kasutajal on ka võimalus määrata mitu nooti korraga, samuti määrata puhkus, vajutades käsku käsku, samal ajal kui ükski helikõrguse lüliti ei ole ülespoole nihutatud. Kui iga noot on valitud ja seda mängitakse, kuvatakse tähemärk 7-segmendilisel ekraanil. Kasutame ka kolme tahvli nuppu, ühte muusika esitamiseks ja peatamiseks, ühte süntesaatori lähtestamiseks ja valimisrežiimi viimiseks ning kolmandat valimisrežiimis igale noodile helikõrguse määramiseks.
Kui kasutaja on oma nootide valikuga rahul ja pärast esitusnupu vajutamist mängib süntesaator igat nooti järjest korduvalt, kuni kasutaja vajutab pausi või vali.
Siin on nimekiri vajalikest seadmetest:
- Vivado (või mis tahes VHDL -i tööruum)
- Basys 3 või sarnane FPGA -plaat
- Digitaal-analoogmuundur (min. 4-bitine)
- Kõlar kõrvaklappide pesaga
- Juhtmed
Samm 1: Digitaalse järjestuse kasutaja toimimine
Järgmised sammud on digitaalse järjestuse kasutamiseks. Digitaaljärjestus toetab 12 erineva helikõrguse (C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B) taasesitust, mis on vahemikus 261,6 Hz kuni 493,9 Hz.
1. Tahvli valimisrežiimi lülitamiseks vajutage vasakut nuppu. Selles režiimis kasutatakse iga vasakpoolsemat 4 lülitit (lülitid 13 kuni 16) erineva sammu väärtuse salvestamiseks.
2. Valiku tegemiseks keerake üks vasakpoolsetest lülititest sisse ja seejärel kasutage soovitud sammu valimiseks kõige parempoolsemat 4 lülitit (lülitid 1 kuni 4). Parema lülitite konkreetse kombinatsiooniga seotud helikõrgus kuvatakse seitsme segmendi ekraanil ja ekraan uuendatakse uueks seatud sammuks iga kord, kui õiged lülitid uuele kombinatsioonile nihutatakse. Puhkehetke saab määrata nii, et ühele vasakule lülitile ei määrata kunagi helikõrgust või kui noodile määrata numbril 0 näidatud samm. Kui soovitud helikõrgus on leitud ja see kuvatakse ekraanil, vajutage alumist määramisnuppu, et määrata konkreetne helikõrgus noodile.
3. Korrake 2. sammu kolme ülejäänud noodi puhul, keerates kõik ülejäänud vasakpoolsed lülitid eraldi sisse, valides paremate lülititega vastava helikõrguse ja vajutades alumisele nupule, et noodile helikõrgus määrata. Samale helikõrgusele saab määrata mitu nooti, nihutades korraga rohkem kui ühte vasakpoolset lülitit ülespoole.
4. Nüüd, kui kõik noodiväljad on määratud, on digitaalne järjestus mängimiseks valmis. Kõlarist märkmete esitamiseks vajutage lihtsalt muusika esitamise alustamiseks paremat esitus-/pausinuppu. Taasesituse järjestus peegeldab vasakpoolsete lülititega seotud kõrgusi vasakult paremale. Noodid mängitakse kindlaksmääratud löökide arvuga minutis, järjekorras 1, 2, 3, 4, 1, 2…. Ekraanile ilmub märge, mida praegu mängitakse, kui kõlarid muusikat esitavad. Muusika taasesituse peatamiseks vajutage lihtsalt parempoolset nuppu, siis muusika esitamine peatub ja ekraanile ilmub pausi sümbol. Taaskäivitamist jätkatakse parema nupu uuesti vajutamisega.
Samm: tehnilised üksikasjad
Meie süntesaator kasutab palju erinevaid digitaalseid komponente. Siia kuuluvad piiratud olekuga masinad, registrid, multiplekserid, kellajagurid ja palju muud. Süntesaatori ehitamiseks kasutasime 10 unikaalset moodulfaili. Selle asemel, et muuta iga moodul komponendiks, lõhkusime moodulfailid funktsioonide kaupa. Seetõttu on enamik mooduleid rohkem kui üks komponent. Pange tähele, et ülaltoodud pilt näitab kõiki meie parima kujundusega seotud plokke.
Me arutame iga moodulit, kirjeldades sisendeid ja väljundeid, jaotades selle komponendid ja selgitades selle eesmärki üldises disainis. Juhendi allosas on ZIP -fail, mis sisaldab kõiki projektis kasutatud VHDL -koodifaile.
Sisendid
- Clk (omas kella signaal)
- PP (esitamine/paus)
- Sel (pange süntesaator valimisrežiimi)
- Määra (määra samm sammule)
- Samm (positsioonilised märkmed)
- Sagedus (lülitid, mis loovad soovitud sammu)
Väljundid
- Anood (7-segmendiline anood)
- Katood (7-segmendilised katoodid)
- DAC (4-bitine DAC-i juhtimine)
Samm: tehnilised üksikasjad
4. samm: 7-segmendiline kellajagur
Meie süntesaator kasutab kolme kellajaoturit, mis kõik toodavad signaale, mis täidavad meie projektis erinevat eesmärki. Kellajagur võtab algse kella signaali ja tekitab muudetud signaali, mille sagedus on väiksem kui algne kella signaal. Basys 3 algkell on 100 MHz. See on sagedus, mida meie kellajagurid kasutavad. Kui kasutate erinevat FPGA -plaati erineva algse taktsagedusega, peate võib -olla koodi muutma.
7-segmendiline kellajagur annab signaali, mis juhib faili seg_display. Kuidas see fail töötab, selgitame üksikasjalikumalt, kui jõuame selle sektsiooni. Põhimõtteliselt toodab see kellajagur 240 Hz signaali, mida kasutatakse ekraanil anoodide ja katoodide vahel vahetamiseks. Signaal on 240 Hz, kuna sagedus, mille juures inimsilm ei suuda valguse puudumist ära tunda, on 60 Hz. Me kasutame kahte numbrit, nii et kahekordistades seda sagedust, võnkub iga number 60 Hz juures. Siis kahekordistame selle, et saada 240 Hz, sest süsteem muutub ainult siis, kui signaal läheb kõrgeks, mitte siis, kui see väheneb.
Selle saavutamiseks võtab eraldaja 100 MHz algse signaali ja loeb üles iga tõusva serva. Kui loendur jõuab 416667 -ni, läheb väljund madalalt kõrgele või vastupidi.
Sisendid
Clk (natiivne kella signaal)
Väljundid
Clk_7seg (seg_display)
Komponendid
- D register
- MUX
- Inverter
- Liitja
5. samm: lööki minutis kellajagur
BPM kellajagur töötab sarnaselt. See jagur tekitab taktsageduse, mis juhib nelja etapi vahel lülitumist, kui esitusolekus toone väljastatakse. Otsustasime vahetada märkmete vahel kiirusel 100 BPM. 100 BPM juures mängitakse iga nooti 3/5 sekundit. Saadud signaali sagedus oleks 1,67 Hz.
Sellise sagedusega signaali tootmiseks kasutasime taas loendussüsteemi, kuid seekord oli see arv 60 miljonit. Iga kord, kui loendur jõudis 60 miljonini, muutus väljundsignaal kõrgeks või madalaks.
Sisendid
Clk (omaaegne taktsagedus)
Väljundid
Clk_BPM (väljundi_FSM -ile)
Komponendid
- D register
- MUX
- Inverter
- Liitja
6. samm: Kellajagur
Kellajagur Pitches on meie kellajaoturitest suurim. See jagaja väljastab 12 erinevat signaali, mis vastavad 12 erinevale noodile, mida meie süntesaator saab mängida. Kasutades muusikateooria põhiteadmisi, jõudsime järeldusele, et bitt või buss võib võnkuda kiirusega, mis vastab nootide sagedusele. Kasutatud sageduste nägemiseks vaadake siin. Kasutasime väljakute neljandat oktavi.
Siin kasutatakse sama loendussüsteemi. Konkreetsete väärtuste jaoks, milleni me loendasime, vaadake faili nimega Clk_div_pitches.
Sisendid
Clk (natiivne taktsagedus)
Väljundid
C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (väljundi valimiseks)
Komponendid
- D register
- MUX
- Inverter
- Liitja
Samm 7: Esita/peatage/valige olekumasin
Meie projektis on kaks piiratud olekuga masinat (FSM). FSM on loogikaseade, mis saab eksisteerida ainult ühes olekus piiratud hulgast olekutest. FSM -i kasutades saab digitaalskeem liikuda uude olekusse sisendite kombinatsiooni põhjal. Sisendloogikat kasutades muutub FSM -i olek kella tõusva serva korral. Olekust ja ahela sisenditest saate luua väljundloogika, mis annab väljundid, mis eksisteerivad ainult siis, kui Mikroneesia on teatud olekus.
PPS olekumasin on meie ahela esimene FSM. Selles Mikroneesia Liidus on kolm osariiki; Esitus-, pausi- ja valikurežiim. Erinevates olekutes liikumiseks kasutasime nuppe PP ja valik. Vaadake ülaltoodud olekudiagrammi, et näha, kuidas olekute vahel üleminekud toimuvad. Tegime selle FSM -i ülemineku loodusliku 100 MHz kella tõusvas servas, nii et oleks võimalik, et masin ei lülituks ühe nupu vajutamisel isegi väga lühikese aja jooksul üle. Praegune olek (P_state) on selle mooduli ainus väljund.
Sisendid
- Clk (omaaegne taktsagedus)
- Sel (vasak nupp)
- PP (parem nupp)
Väljundid
P_state (praegune olek, väljundi_FSM, märkmete määramine, seg_dsiplay, lõplik_valimine)
Komponendid
- MUX
- D register
8. samm: esita/peatage/valige olekumasin
9. samm: väljund FSM
See on teine eelmises jaotises viidatud Mikroneesia Liiduriikide Liit. See Mikroneesia Liitmik täidab teist funktsiooni, kuid selle alus on sisuliselt sama.
Väljundi FSM töötab ainult siis, kui esimese FSM -i praegune olek on "01" (esitusolek). Põhimõtteliselt on see mooduli sisselülitamine. Kui olek on "01", siis hakkab FSM vahetama BPM -kella signaali tõusva serva olekute vahel. Me teeme seda seetõttu, et output_FSM juhib valitud pigi kahendnumbrit, mis saadetakse moodulitele output_select ja seg_display. Mikroneesial on 16-bitine sisend, mis pärineb märkmete määramise moodulist ja mida käsitletakse järgmisena. Väljundi_FSM olekus "00" väljastab moodul esimese määratud noodi jaoks "xxxx". Seejärel väljastab "01" teises noodis "yyyy" ja nii iga noodi puhul enne esimese noodi juurde tagasipööramist. Vaadake ülaltoodud olekuskeemi.
See FSM erineb esimesest, kuna puudub sisendloogika olekute vahel vahetamise juhtimiseks. Selle asemel hakkab Mikroneesia toimima alles siis, kui esimese Mikroneesia olek on "01", ja siis läheb see Mikroneesia olekute vahel üle ainult kella signaali tõusvas servas. Teine erinevus on see, et sellel moodulil on väljundloogika, see tähendab, et see ei väljasta praegust olekut, vaid väljastab selle oleku helikõrguse binaarnumbri.
Sisendid
- Clk_BPM (kella jaguri BPM kella signaal)
- FSM1_state (PS PPS FSM -ist)
- Pitch_in (helikõrgused märkme määramisest)
Väljundid
Pitch_out (üks samm korraga, väljundi valimiseks ja seg_kuvaks)
Komponendid
- MUX
- D register
Samm 10: väljund FSM
Samm 11: Märkus Määra
Märkmete määramise moodul vastutab positsioonilisele noolele või sammule helikõrguse tegeliku määramise eest. See moodul on tegelikult üsna lihtne. Esmalt kontrollib see, kas ahel on "valiku" olekus ja kas astmelüliti (vasakpoolne) on kõrgel. Kui see on tõsi ja omistamisnuppu vajutatakse, on mooduli väljund võrdne sageduslülitite (paremal) binaararvuga.
Algselt olime püüdnud teha moodulit, mis tegelikult salvestaks ühe helikõrguse kella signaali väljundisse, kuid tekkis probleeme väljundi muutmisega, et järgida sisendkella signaale. See on ainus moodul, mida kasutatakse lõplikus disainis rohkem kui üks kord. Iga sammuga on seotud moodul note_assign ja seetõttu saab iga mooduli eksemplar ühe biti Step -siinist.
Sisendid
- P_state (praegune olek PPS FSM -ist)
- Sel (vasak nupp)
- Lüliti (üheastmeline lüliti)
- Sagedus (parempoolsed lülitid pigi jaoks)
- Määra (alumine nupp, määrab märkme)
Väljundid
Pigi (kahendarv, väljund_FSM)
Komponendid
- MUX
- Registreeru uuesti
12. samm: väljundi valimine
Väljundivalija vastutab binaarnumbri võtmise eest helikõrguse jaoks ja selle ühendamise oma vastava kellasignaaliga. Vaatamata oma suurusele on see ka suhteliselt lihtne moodul. Output_select on sisuliselt binaarne dekooder, mis dekodeerib helikõrguse kahendarvu kindlale kella signaalile. Tegelikult toimis väljundi määramine taktsagedusele siin paremini kui note_assign moodul, sest see moodul ei pidanud muud tegema kui MUX kella signaale, mille binaarne number esindab juhtsisendit.
Vabandame kummalise marsruutimise pärast, Vivado organiseeris faili clk_div_pitches helisignaalid tähestikulises järjekorras, kuid selle faili puhul korrastas need kasvava kahendnumbri järgi, põhjustades helikõrgused teises järjekorras. Pange tähele ka seda, et kui väljund_FSM -i binaararv oli "0000" või midagi muud kui "1100", siis saatis MUX lame '0' signaali.
Sisend
- Pitch (väljundist_FSM);
- C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (pigi kella signaalid)
Väljund
Toon (üks bit, mis vastab valitud kella signaalile, ruutlaineks)
Komponendid
MUX
Samm 13: Square Wave Gen
Moodul square_wave on generaator ruutlainele, mis väljastatakse plaadilt DAC -i. Kasutades eelmise faili toonisignaali, muudab see square_wave 4 -bitise numbri "0000" ja "1111" vahel tooni tõusvas servas. Toon on konkreetne helisagedus, nii et square_wave tekitab erineva sagedusega laine, kui output_FSM läheb teise olekusse. Selle mooduli 4-bitine väljund läheb moodulisse fin_sel, kus loogika määrab, kas see buss väljastatakse PPS FSM-i oleku põhjal.
Selle ruutlainegeneraatori alternatiiviks on siinuslaine tekitamine. Kuigi see tooks suure tõenäosusega parema lõpptooni, on seda oluliselt raskem rakendada, seega otsustasime lihtsalt ruudulaine genereerida.
Sisendid
Toon (võnkuv bit väljundi valimisest)
Väljundid
DAC_input (võnkuv 4-bitine siin, mis muutub sama toonisagedusega)
Komponendid
- Inverter
- D register
14. samm: 7-segmendiline kuva
Moodul seg_display juhib meie põhiplaadi 7-segmendilist ekraani. Mooduli sees toimub kaks protsessi. Esimene protsess dekodeerib sageduse "valiku" olekus või "Pitch", kui see on "esitusrežiimis". "Pausi" režiimis dekodeerib moodul pausi sümboli. Vaadates VHDL -koodi, näete, et binaarne dekooder dekodeerib sisendi tegelikult kaheks erinevaks signaaliks - katood1 ja katood2. Katood1 tähistab kuvatavale helikõrgusele vastavat tähte ja katood2 tähistab tasast sümbolit (b), kui see on olemas. Selle põhjus on seotud seg_display mooduli teise protsessiga.
Basys3 -plaadil on segmendi ekraanil tavalised katoodid. Kui anoodid kontrollivad, milline number on sisse lülitatud, siis katoodid kontrollivad, millised segmendid on sisse lülitatud. Kuna ekraanil on ühised katoodid, tähendab see, et saate korraga kuvada ainult ühte segmendikomplekti. See tekitab selle projekti jaoks probleeme, sest soovime kuvada tähe esimesel kohal ja vajadusel tasase sümboli samal ajal. Mäletate nüüd 7seglase kella signaali? Selle probleemi lahendamiseks muudame anoodid ja katoodid edasi -tagasi 7 -sekundilise kella signaalil. Kuna kella signaal on 240 Hz ja me kasutame kahte numbrit, võnkub iga number 60 Hz juures. Inimsilmale tundub, et numbrid ei võnguta üldse.
Pange tähele ka seda, et basys3 tahvli ekraan kasutab negatiivset loogikat. See tähendab, et kui anood või katood on seatud väärtusele „0”, jääb see number või segment sisse ja vastupidi.
Sisendid
- Kõne (noodi kahendnumber, kasutusel esituses)
- Sagedus (sageduslülitid, kasutatakse valimisolekus)
- P_state (praegune olek PPS FSM -ist)
- Clk_240Hz (kella signaal Clk_div_7segilt, topelt 120, kuna kasutame ainult tõusvat serva)
Väljundid
- Katood (siinil olevaid segmente juhtiv siin, lõppväljund)
- Anood (siin, mis juhib ekraanil olevaid numbreid, lõppväljund)
Komponendid
- Riiv
- MUX
- D register
Samm 15: Lõplik valik
Lõplik valik on viimane selles projektis kasutatud moodul. Veel üks lihtne moodul, see moodul juhib DAC -i lõpptulemust. "Valiku" või "pausi" olekus väljastab moodul staatilise "0000", nii et kõlaritest ei esitata muusikat. "Mängimise" olekus väljastab moodul võnkuvaid 4-bitiseid ruutu_laine abil.
Sisendid
- P_state (praegune olek PPS FSM -ist)
- DAC_input (võnkuvad 4-bitised ruudust_laine)
Väljundid
DAC (võrdub DAC -sisendiga olekus, lõppväljund)
Komponendid
MUX
16. samm: välisseadmed: DAC
Digitaal -analoogmuundur (DAC) võtab diskreetse signaali ja muudab selle pidevaks signaaliks. Meie DAC -l on neli bitti ja see on valmistatud summeerimisvõimendist. Kasutades toite- ja tagasisideahelas takistite suhet, suutsime luua süsteemi, mis toodab 16 erinevat taset, luues iga haru "summeerimise" abil. Bit0, ülemine haru, kannab kõige vähem kaalu ja annab kõrgeima väikseima potentsiaali, kuna sellel on suurem vastupanu. Kaal suureneb okste alla minnes. Kui loeksite binaarsisendite abil binaarselt üles ja seejärel tagasi, näeksid väljundpinged samm -sammult siinusena. DAC-i sisend ühendati 4-bitise signaali edastamiseks tahvli ühe PMOD-iga.
DAC oli algselt kokku pandud elektrotehnikaklassi jaoks ja see on meie projekteeritud ja joodetud, mitte poest ostetud. Ülal on kujutatud trükkplaadi loomiseks mõeldud disainifail.
17. samm: välisseadmed: kõlar
Selle projekti jaoks ei taha te osta ülimõnusat kõlaripaari. Nagu näete, on heli üsna lihtne. Läksime ja ostsime Best Buy'ist 8 -dollarise arvutikõlarite komplekti. Kõik, millel on kõrvaklappide pesa, töötab hästi. Monotoon töötab hästi. Võite isegi kõrvaklappe kasutada, kuid võite need välja puhuda!
DAC -i väljundi ühendamiseks kõlaritega kasutasime hüppajakaableid ja seejärel hoidsime väljundkaablit kõrvaklappide pesa otsas ja maanduskaablit aluse külge. Proovisime kaablite paigal hoidmiseks kasutada elektrilinti, kuid see tekitas palju häireid. Teistsuguse lindi proovimine võib selle probleemi lahendada.
Meie kõlarite jaoks keerasime need kõrgeimale seadele ja saime korralikult valju müra.
Ja see on viimane samm digitaalse järjestuse loomiseks FPGA plaadilt! Minge järgmise kahe sektsiooni alla, et alla laadida kogu meie VHDL -kood ja näha järjestust toimimas.
18. samm: video demo
See video näitab tööprojekti lõplikku versiooni, sealhulgas lülitite määramist neljale erinevale helikõrgusele ja kõlareid, kes esitavad vastavaid noote.
19. samm: VHDL -kood
Siin on kogu projekti kood, sealhulgas sekventseri ehitamisel kasutatud piirangud ja sim -failid. Pange tähele, et kasutamata disainifailid ütlevad seda arhitektuuris.
Soovitan:
Arduino MIDI rütmi sektsiooni järjestus: 8 sammu (piltidega)
Arduino MIDI rütmiosa sekveneerija: Hea tarkvara trummimasina omamine on täna lihtne ja odav, kuid hiire kasutamine tapab minu jaoks lõbu. Seetõttu mõistsin, mis oli algselt mõeldud 64 -astmelise riistvaralise MIDI trummijärjestusena, mis on võimeline käivitama kuni 12 erinevat trummielementi
Lihtne järjestus: 16 sammu (piltidega)
Lihtne järjestus: Üks hea muusika tegemise võtmeid on mõtetu kordamine. Selles on lihtne jadaja suurepärane. See teeb sama asja ikka ja jälle kaheksa noodiga jadas. Saate reguleerida noodi sagedust, noodi kestust ja
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
(peaaegu) universaalne MIDI SysEx CC programmeerija (ja järjestus ): 7 sammu (koos piltidega)
(peaaegu) universaalne MIDI SysEx CC programmeerija (ja järjestus …): kaheksakümnendate keskel alustasid süntesaatorite tootjad "vähem on parem"; protsess, mis viis paljaste süntesaatoriteni. See võimaldas vähendada tootjate poolel kulusid, kuid muutis lappimisprotsessi lõppkasutuseks igavaks, kui mitte võimatuks
Programmeeritav RGB LED -järjestus (Arduino ja Adafruit Trellise abil): 7 sammu (piltidega)
Programmeeritav RGB LED -järjestus (kasutades Arduino ja Adafruit Trellisi): mu pojad soovisid värvilisi LED -ribasid oma töölaua valgustamiseks ja ma ei tahtnud kasutada konserveeritud RGB -ribakontrollerit, sest teadsin, et neil hakkab fikseeritud mustritega igav. neil kontrolleritel on. Samuti arvasin, et see oleks suurepärane võimalus luua