Talaan ng mga Nilalaman:

Arduino MIDI Foot Controller: 12 Hakbang
Arduino MIDI Foot Controller: 12 Hakbang

Video: Arduino MIDI Foot Controller: 12 Hakbang

Video: Arduino MIDI Foot Controller: 12 Hakbang
Video: Fun with Music and Programming by Connor Harris and Stephen Krewson 2024, Nobyembre
Anonim
Arduino MIDI Foot Controller
Arduino MIDI Foot Controller

Kamakailan ay dinisenyo ko ang MIDI controller na ito upang mapatakbo ang pariralang looper na itinayo sa pagkaatras ng pedal ng Boss DD500. Kinokontrol ko ang aking buong rig ng gitara gamit ang isang Behringer FCB MIDI board, at pinapayagan akong baguhin ang mga patch sa pagkaantalang pedal sa mga loop ng epekto, habang ang paglipat ng mga amp channel nang sabay.

Ang DD500 ay may isang napaka pangunahing pagpapaandar ng looper na nakapaloob ngunit ang isa sa mga sagabal nito ay kapag ang looper ay aktibo, kinokontrol ito ng mga footswitches sa pedal. Nangangahulugan ito na hindi mo mababago ang mga patch sa pedal habang ang loop ay aktibo, dahil mahalagang nakuha ang mga pagpapaandar ng footswitches. Habang gumagamit ako ng MIDI, wala ang limitasyong ito, dahil simpleng isyu ito sa pisikal. Nangangahulugan ito ng pagreserba ng 5 footswitches sa aking pangunahing MIDI controller para sa looper bagaman, at sa gayon nagpasya akong bumuo ng isang hiwalay na controller para sa mga iyon.

Ang aking paunang plano para dito ay kumuha ng isang maliit na enclosure ng Hammond at maglagay ng 5 footswitches at turuan ang sarili ko ng ilang pangunahing Arduino coding. Nang magsimula akong matuto nang higit pa at gumagana ang aking code, nagtapos ito sa pag-uudyok sa akin na subukan ang maraming bagay at pagkatapos ito ay talagang nag-snowball sa isang bagay na mas malaki.

Hakbang 1: Mga Konsepto

Mga konsepto
Mga konsepto
Mga konsepto
Mga konsepto

Ang isa sa mga maagang ideya ay magkaroon lamang ng 5 mga pindutan sa isang hilera na may mga LED status. Ito ay medyo simple upang mock-up sa isang breadboard kasama ang Arduino. Ang pagdaragdag ng mga bagong tampok at hardware ay natapos na maging isang proseso kung saan patuloy akong nagdidisenyo at muling nagdidisenyo ng pisikal na layout sa papel at pagbuo sa proyekto ng breadboard. Kahit na sa maraming pagpaplano, maraming gawain sa ito ay medyo nagawa nang mabilis sa simula.

Ang 2 larawan sa itaas ay ipinapakita ang kauna-unahang pagguhit na aking nakatuon sa papel, na sinimulan ang ideya sa una, na sinusundan ng isang buwan ng mga tala na ginawa kasunod sa kung saan ang humubog sa mga layout ng pisikal at PCB.

Hakbang 2: Breadboard Protoyping

Boto ng Protoyping
Boto ng Protoyping
Boto ng Protoyping
Boto ng Protoyping

Ang buong proyekto ay itinayo sa isang breadboard at buong nasubukan upang matiyak na ganap itong gumana sa DD500 bago magsimula ang anumang trabaho sa permanenteng pagpapabahay nito. Ang ilang mga karagdagang tampok ay naidagdag sa code, na kung saan ay nagbigay sa controller ng ilang dagdag na mga function na kulang sa DD500. Tatalakayin ang mga ito nang higit pa sa seksyon ng code.

Ang pedal ay mayroong 5 footswitches, 4 status LEDs, 5 I2C LCD screen at kinokontrol ng isang Arduino Nano Every. Nakakakuha ito ng lakas mula sa isang 9V gitara pedal PSU sa pamamagitan ng isang hiwalay na kahon ng breakout na nagdadala ng lakas na iyon sa MIDI cable gamit ang 2 mga pin na karaniwang hindi ginagamit sa isang konektor ng MIDI.

Hakbang 3: Pabrika

Katha
Katha
Katha
Katha
Katha
Katha

Tiningnan ko ang maraming mga posibleng kaso para sa pabahay ng proyekto, at isinasaalang-alang pa ang ideya ng pagsubok na yumuko ang aking sariling kaso mula sa mga sheet ng aluminyo. Sa paglaon ay nanirahan ako sa isang enclosure ng Hammond na kung saan ay may sapat na lapad upang mapaloob ang 5 16X2 LCD screen na aking napili.

Ang mga footswitches ay pangkaraniwang panandaliang mga soft-touch switch.

Sa yugtong ito napagpasyahan kong magkaroon ng pasadyang mga mount screen bezel na ginawa upang panatilihing malinis ang harapan, dahil i-cut ko ang mga butas ng screen gamit ang isang Dremel at alam kong malamang na may ilang lugar na mas mababa sa perpekto. Ginawa ko ang mga ito ng isang lokal na studio ng disenyo na gumagawa ng paggupit ng laser, una bilang mga template ng karton upang matiyak na ang aking mga laki ay tama, at pagkatapos ay sa 3mm puting acrylic para sa huling piraso.

Hakbang 4: CAD Mock-up at Layout

CAD Mock-up at Layout
CAD Mock-up at Layout
CAD Mock-up at Layout
CAD Mock-up at Layout

Mula sa aking mga sketch ng papel, ginamit ko ang Inkscape upang mailatag ang lahat ng mga pisikal na sangkap at tapusin ang laki at posisyon. Nakarating din ako sa pamamaraan ng pag-mount ng screen sa puntong ito. Upang mai-minimize ang dami ng mga nakikitang bolts sa harap, nagpasya akong i-mount ang lahat ng mga screen sa ilang mga plate ng aluminyo mula sa likuran gamit ang mga stand-off, at pagkatapos ay kakailanganin ko lamang ng 4 bolts bawat plate upang ayusin ang mga ito sa enclosure, kung saan hahawak din sa mga screen bezel sa lugar.

Hakbang 5: Disenyo ng PCB

Disenyo ng PCB
Disenyo ng PCB
Disenyo ng PCB
Disenyo ng PCB
Disenyo ng PCB
Disenyo ng PCB
Disenyo ng PCB
Disenyo ng PCB

Upang likhain ang PCB, gumawa ako ng isang website na tinatawag na EasyEDA. Nagtatampok ito ng isang kapaligiran ng editor kung saan maaari kang gumuhit ng isang eskematiko ng iyong mga bahagi, gawing isang layout ng PCB, at pagkatapos ay direktang i-export ito sa JLCPCB na ginawang mga board. Hindi pa ako nakagawa ng ganito dati, ngunit mayroon silang mahusay na patnubay sa site na nagpapaliwanag kung paano gumagana ang editor, at sa loob ng isang oras ay dinisenyo at inayos ko ang lupon.

Ang ilang mga lugar sa board ay hindi maganda ang pagdisenyo sa oras dahil sa walang karanasan, tulad ng paggamit ng isang solong 5V rail para sa lakas ng screen, halimbawa, sa halip na bigyan ang bawat isa ng magkakahiwalay na feed. Sa kabutihang palad ang anumang pagbagsak ng boltahe na naganap ay hindi sapat upang maging sanhi ng mga isyu sa mga screen.

Dumating ang mga board mga 2 linggo na ang lumipas at salamat na nagtrabaho nang walang anumang mga isyu.

Hakbang 6: Mga Pag-mount sa Screen

Mga Pag-mount sa Screen
Mga Pag-mount sa Screen
Mga Pag-mount sa Screen
Mga Pag-mount sa Screen
Mga Pag-mount sa Screen
Mga Pag-mount sa Screen

Ang mga unang bahagi na ginawa ay ang mga mount mount. Gumamit ako ng 3mm na aluminyo para dito at nag-drill ng mga butas para sa mga stand-off. Ang mga sukat ay natutukoy sa pamamagitan ng paglalagay ng lahat sa mesa tulad ng nais kong maging pangwakas na pedal at pagsukat mula sa mga tumataas na butas sa mga PCB sa screen. Inilagay ko rin sa kanila ang mga footswitch upang makuha ang distansya para sa mga iyon.

Kapag ang lahat ng mga butas ay na-drill ang mga screen ay naka-mount at naka-check para sa squcious sa pamamagitan ng paghawak ng isang pinuno laban sa mga patag na ilalim na gilid. Ang lahat ay nakahanay hanggang ngayon.

Hakbang 7: Enclosure

Enclosure
Enclosure
Enclosure
Enclosure
Enclosure
Enclosure

Susunod na binabago ang kaso. Ang footswitches at LEDs ay prangka dahil bawat isa ay nangangailangan ng isang 12mm at 5mm hole ayon sa pagkakabanggit.

Ang pangunahing dami ng pisikal na gawain ay dumating kapag pinuputol ang mga butas ng screen. Gumamit ako ng isang Dremel na may ilang mga disc ng mabibigat na tungkulin, at iba't ibang mga file upang linisin ang mga butas pagkatapos. Ang bahaging ito ay tumagal ng halos 2 oras lahat.

Ang enclosure na ginamit ko ay idinisenyo para sa mga hangaring pang-industriya at ginawa sa pamamagitan ng baluktot ng isang solong piraso ng metal at spot welding sa mga sulok. Nangangahulugan ito na ang ilang trabaho ay kinakailangan upang linisin ang mga sulok na ito sa pamamagitan ng paggamit ng tagapuno ng katawan ng kotse upang i-level ang mga mababang spot at punan ang mga puwang sa gilid.

Sa puntong ito ang kaso ay ganap na primed at kinutya ko ang lahat upang makita lamang ang hitsura nito.

Hakbang 8: Uh-Oh

Uh-Oh
Uh-Oh
Uh-Oh
Uh-Oh
Uh-Oh
Uh-Oh

At pagkatapos ay napagtanto na sa kabila ng lahat ng aking pagpaplano at pagsukat, gumawa ako ng isang MALAKING error. Dinisenyo ko ang board at layout ng kaso nang nakapag-iisa sa bawat isa. Sa aking ulo, ang board ay umupo halos flush laban sa tuktok na pader, na may isang maikling stand-off sa likod nito. Ngunit walang ganap na paraan na posibleng magkasya ito. At walang puwang upang mailagay din ito sa gilid. Isang malaking pangangasiwa, ngunit mabuti na lamang na naayos ko dahil mayroon pa ring kaunting puwang sa pagitan ng mga pag-mount sa screen sa likurang takip ng kaso. Ang ilan pang mga butas na drill sa mga pag-mount sa screen at ilang mga stand-off, at bumalik kami sa negosyo, na may sapat na silid upang makuha ang takip.

Hakbang 9: Kulayan

Pintura
Pintura
Pintura
Pintura
Pintura
Pintura

Ang lahat ay muling na-disemble, at ang kaso ay pininturahan sa Metallic Candy Red, sinundan ng ilang mga coats ng may kakulangan. Ang kaso ay naiwan upang magpagaling sa loob ng isang linggo, kahit na natuklasan ko ang may kakulangan ay bahagyang malambot sa puntong ito kapag itinatayo ko ang lahat. Ang ilang maliliit na lugar ng pintura ay nasira dahil dito. Isang bagay na nilalayon kong iwasan sa aking susunod na proyekto.

Sa oras na ito, bumili ako ng isang 3D printer, at nagpasyang gamitin ito upang makagawa ng ilang mga washer para sa footswitches, dahil ang mga binili kong nylon ay may isang kakila-kilabot na dilaw na kulay sa kanila at mahina ang laki.

Hakbang 10: Mga kable

Kable
Kable
Kable
Kable
Kable
Kable
Kable
Kable

Ang huling bahagi ng pisikal na pagpupulong ay ang wire lahat. Muli, ang mga isyu sa disenyo ng kaso / disenyo ng PCB ay muling dumating at ang ilan sa mga posisyon ng header sa PCB ay nangangahulugang pagtawid ng maraming mga wire sa bawat isa, na ginagawang mas magulo ang mga bagay kaysa sa inaasahan ko.

Ang mga wire para sa mga screen ay na-bundle sa mga hanay ng 4, at gumagamit ng heatshrink at tinirintas na pambalot, na ginawang isang solong piraso.

Hakbang 11: Arduino Code

Image
Image

Bilang isang kabuuang nagsisimula sa pag-coding ng Arduino, tinuturo ko ang aking sarili habang sumasabay ako. Ang code ay marahil ang katumbas ng programa ng isang 'malayong paraan' ngunit nasiyahan ako na gumana ito ayon sa nilalayon.

Ang looper sa DD500 ay may 5 pangunahing mga pag-andar:

  • Looper on / Off
  • Mag-record / Overdub / Play
  • Mag-play ng naitala na loop
  • Itigil ang pag-playback
  • Malinaw na naitala na loop

Ang bawat isa sa mga pagpapaandar na iyon ay may kaukulang footswitch at, maliban sa pindutan ng paghinto, isang LED status. Nag-a-update din ang mga LCD screen na may kaugnayang impormasyon upang maipakita kung ang pedal ay nasa recording, overdubbing o mode ng pag-playback pati na rin kung anong pagpapaandar ang gagawin ng bawat footswitch depende sa kung ano ang nangyayari sa oras na iyon.

Ang isa pang tampok na idinagdag ko ay upang subaybayan kung gaano karaming beses na naaktibo ang tampok na record / overdub. Sinusubaybayan ito sa code sa pamamagitan ng pagdaragdag ng isang integer, na ipinapakita sa screen na 'buffer', na naglilista kung gaano karaming mga track ang naitala. Habang hindi mabura ng DD500 ang mga indibidwal na track, idinagdag ko ito bilang isang ehersisyo sa pag-coding upang makita kung maaari ko itong gumana.

May lilitaw na isang isyu sa pag-upload ng mga file sa Mga Tagubilin, at sa gayon ay naglagay ako ng isang kopya ng code sa Pastebin sa halip sa:

2 mga aklatan ang ginamit sa code:

LiquidCrystal_I2C

FortySevenEffects MIDI library

Hakbang 12: Konklusyon

Konklusyon
Konklusyon

Ang isa sa mga pinakamalaking bagay na kinukuha ko mula sa proyektong ito ay ang pagpaplano hangga't maaari mong maagang ng oras ay maaaring maiwasan ang mga potensyal na isyu. Ang mga isyu sa aking pag-mount sa PCB ay nagpapakita ng kahalagahan nito. Ang pag-iingat ng magagandang tala ay isa ring lubos kong inirerekumenda. Kung wala sila, maaaring mas maraming mga isyu ang naranasan ko kaysa sa mga naranasan ko. Kasalukuyan kong binubuo ang aking pangalawang MIDI controller at sa oras na ito ay mas malaki ang aking pagsisikap na i-streamline ang aking code, at idisenyo ang aking hardware sa kung paano dapat mai-mount ang PCB.

Inirerekumendang: