Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:58
Tai mano pirmas pamokymas, todėl būkite su manimi.
Man patinka kurti muziką, o tokiose tiesioginėse situacijose kaip koncertai gyvenamajame kambaryje man patinka, kai yra šviesos efektų, sinchronizuojamų su tuo, ką groju. Taigi aš sukūriau „Arduino“dėžutę, dėl kurios LED juostelė užsidega atsitiktine spalva, kai paspaudžiu užrašą savo MIDI klaviatūroje ir kur paspaudžiu užrašą.
Prekės
- Arduino Uno
- „Arduino“protoshield
- MIDI lizdas
- 1N4148 diodas
- 6N138 opto jungtis
- rezistoriai: 2x 220 omų, 1x 10 kOhm, 1x 470 omų
- WS2812B LED juostelė (60 šviesos diodų)
- šiek tiek likusių laidų
- termiškai susitraukiantis vamzdis
- tinkamas „Arduino“korpusas (naudoju plastikinę jungiamąją dėžę)
Jums taip pat reikės
- lituoklis ir lituoklis
- MIDI klaviatūra ir MIDI kabelis
1 žingsnis: Elektronika
Grandinė yra gana paprasta. Jį sudaro standartinis MIDI įėjimas (kairėje nuo „Arduino“) ir jungtis prie LED juostos (dešinėje nuo „Arduino“). Padėkite visas dalis ant protoshield, ten yra daug vietos. Paprastai rekomenduojama naudoti išorinį maitinimo šaltinį, kad būtų galima maitinti LED juostelę, tačiau pastebėjau, kad žaidžiant vienu metu įjungiami tik keli šviesos diodai, todėl buvo jokių problemų naudojant „Arduino +5V / GND“kaip galią. (Stenkitės nespausti visų klavišų vienu metu ir visu greičiu.;-)) Jei nuspręsite naudoti išorinį maitinimo šaltinį, tiesiog prijunkite jį prie „Arduino +5V“ir „GND“kaiščių. Kai kurie žmonės rekomenduoja tarp šių dviejų eilučių įterpti 100uF kondensatorių (neparodytą schemoje).
Lituokite dalis prie protoshield ir prijunkite LED juostą, kaip parodyta schemoje.
2 žingsnis: LED juostelės prijungimas
Svarbu prie grandinės prijungti dešinįjį LED juostos galą - įvesties galą. Mano juostelės įvestis turi moterišką jungtį ir turi mažus trikampius, nukreiptus tolyn nuo įvesties. Prie išvesties buvo jungtis su vyriška jungtimi (kad galėtume ją prijungti prie kitos juostos, kurios mums nereikia), todėl aš ją nutraukiau ir lituojau prie trijų kabelių, einančių iš „Arduino“. Naudokite termiškai susitraukiančius vamzdelius, kad sujungtumėte tris kabelius su LED juosta ir kad jie būtų mažiau matomi.
Mano naudojamos LED juostelės gale yra lipni juosta, todėl ją galima lengvai priklijuoti prie MIDI klaviatūros galo.
3 žingsnis: projekto pritaikymas prie klaviatūros
Gali tekti pritaikyti LED juostą ir „Arduino“kodą prie klaviatūros. Mano turi 76 klavišus, o juostelės ilgis beveik tiksliai atitinka klaviatūros plotį. Jei turite pvz. 61 raktų, jums gali prireikti trumpesnės juostelės. LED juostelę galima perpjauti tarp bet kurių dviejų šviesos diodų. Tiesiog įsitikinkite, kad nukirpėte teisingą dalį, ji turi įvesties galą (su moteriška jungtimi) ir išvesties galą (su vyriška jungtimi), turite išlaikyti įvesties galą. Kode pakeiskite #defines dėl
- NUMBER_OF_LEDS, kiek šviesos diodų liko juostelėje, nukirpus galą,
- NUMBER_OF_KEYS iki klaviatūros klavišų skaičiaus ir
- MIN_KEY iki žemiausio rakto MIDI pikio numerio. Tai galite rasti klaviatūros vartotojo vadove; arba naudokite įrankį, rodantį MIDI užrašo numerį, pvz., „KMidiMon“, skirtą „Linux“, arba „Pocket MIDI“, skirtą „Windows“ar „Mac“; arba išbandykite skirtingas vertes, kol įrenginys nereaguos į visus klaviatūros klavišus
4 žingsnis: „Arduino“kodas
„Arduino“kodas naudoja keturiasdešimt septynių efektų MIDI biblioteką (v4.3.1) ir „Adafruit“„Adafruit NeoPixel“biblioteką (v1.3.4). Įdiekite šias bibliotekas naudodami „Arduino IDE“. Tada surinkite kodą ir įkelkite jį į „Arduino“neprijungę skydo (optronas prijungtas prie RX kaiščio, o tai trukdo įkelti). Įjunkite „Arduino“per USB kabelį (aš naudoju USB sieninę karpą).
Jei norite modifikuoti kodą pagal savo skonį, čia pateikiama trumpa jo veikimo apžvalga: kiekvienoje kilpoje nuskaitomas MIDI įvestis. Jei gautas „Note On“arba „Note Off“įvykis, iškviečiamos „MyHandleNoteOn“arba „MyHandleNoteOff“funkcijos. Jie abu vadina funkciją updateVelocityArray, kuri išsaugo rakto numerio greitį (t. Y. Kaip stipriai paspaudėte klavišą). Jei greitis yra didesnis nei buvo išsaugotas anksčiau, atitinkamo šviesos diodo spalva nustatoma į „dabartinę spalvą“. Apdorojus MIDI įvykius, iškviečiama funkcija updateLedArray. Taip atnaujinama „dabartinė spalva“(kurios raudona, žalia ir mėlyna reikšmės keičiasi nepriklausomai linijiniu būdu, kol pasiekiamas apatinis arba viršutinis galas, o tada tiesinio keitimo greitis nustatomas į atsitiktinį skaičių), lėtai mažina spaudžiamų natų greitį ir atnaujina kiekvieno šviesos diodo, kuris turi pakeisti spalvą, spalvų reikšmes (dėl naujo pastabos ar greičio sumažėjimo). Funkcija showLedArray perkelia spalvas į „Adafruit_NeoPixel“struktūrą, vadinamą „pikseliais“, ir faktiniai šviesos diodai parodo pikselių struktūros spalvas.
5 veiksmas: galimi patobulinimai …
Projektas niekada nesibaigia. Visada galima ką nors padaryti, kad pagerėtų:
- Protoshield yra tiek mažai dalių, kad tai tikrai atliekos; tą patį efektą būtų galima lengvai pasiekti naudojant „Arduino Nano“ir 15x7 skylių PCB bei kai kurias moterų kaiščių antraštes.
- Kai kurie MIDI signalai dingsta. Jei tai „NoteOn“, atitinkamas šviesos diodas neužsidegs; jei tai yra „NoteOff“, jis neužges (todėl įvedžiau greičio mažinimą, kuris užtikrina, kad šviesos diodai neužsidegs neribotą laiką). Aš vis dar bandau išsiaiškinti priežastį. Galbūt tai yra laiko problema, todėl MIDI.read () turėtų būti iškviestas dažniau.
- Kai kurie MIDI signalai yra neteisingai perskaityti, t. Y. Užsidega neteisingi šviesos diodai. Galima susieti su aukščiau esančiu punktu. Reikia kažkokio tyrimo.
- Grandinė sukurta taip, kad suteiktų malonų vaizdinį efektą be daug vartotojo sąveikos (išskyrus žaidimą klaviatūra). Tačiau galėčiau įsivaizduoti, kad pridedu perskaitytą potenciometrą (naudojant vieną iš „Arduino“analoginių įėjimų), kuriuo galite pakeisti maksimalų spalvų keitimosi greitį (šiuo metu #define'd kaip MAX_COLOR_CHANGE_SPEED = 20). Arba išmatuokite vidutinį laiką tarp dviejų „NoteOn“įvykių ir atitinkamai pakeiskite MAX_COLOR_CHANGE_SPEED - lėtose dainose spalva turėtų keistis lėčiau.
6 žingsnis: padaryta
Įjunkite „Arduino“per USB kabelį (aš naudoju USB sieninę karpą). Prijunkite MIDI klaviatūrą prie MIDI lizdo ir pradėkite groti. Žiūrėk, kaip aš groju šiek tiek lengvos muzikos (kalambūras, kad ir koks blogas jis būtų, skirtas).
Rekomenduojamas:
Nuostabus LED juostos efektas: 4 žingsniai
Nuostabus LED juostelės efektas: Labas draugas, mes norime gerų LED juostos efektų. LED juostelė dekoruoja mūsų kambarį, o kai jis suteikia efektą, kambarys atrodo nuostabiai. Jei jūsų LED juostelė švyti paprasta, šis dienoraštis jums labai ypatingas, nes šiame tinklaraštyje sužinosite, kaip mes galime
Lenkimo efektas: Roboto galinis efektas plokštėms lenkti: 6 žingsniai
Lenkimo efektas: lenkimo plokščių roboto galinis efektorius: Tikslas: tretinio lenkimo aktyviųjų elementų formavimas ir tvirtinimas ant pirminio/antrinio konstrukcinio elemento/rėmo. Grupės nariai: Babasola Thomas, Niloofar Imani, Plant Songkhroh
Židinio šviesos efektas: 4 žingsniai
Židinio šviesos efektas: Ar po ilgos ir šaltos žiemos dienos nėra malonu sėdėti priešais židinį šiltoje namuose? Dauguma žmonių iš tikrųjų neturi židinio, tačiau net regėjimas ar liepsnos šviesa gali sušildyti jus ir jūsų šaltą širdį. Jei ieškote
KAIP PADARYTI IR IR IR ŠVIESOS ŠVIESOS ŠVIESOS ŠVIESOS KAMERĄ: 5 žingsniai (su paveikslėliais)
KAIP PADARYTI IR IR IR ŠVIESOS ŠVIESOS ŠVIESOS KAMERĄ: Supratau infraraudonųjų spindulių kamerą, kad galėčiau ją naudoti judesio fiksavimo sistemoje. Su juo taip pat galite gauti tokių nuostabių vaizdų: blizgių objektų, matomų fotoaparate, kurie yra normalūs realybėje. Už pigią kainą galite gauti gana gerų rezultatų. Jis
Juostos juostos dėklas apverstiems telefonams: 6 žingsniai
Juostos juostos dėklas, skirtas apverstiems telefonams: Šį dėklą nesunku pasidaryti ir jis apsaugos jūsų telefoną. Jums reikės lipnios juostos, telefono ir žirklių