Arduino MIDI Foot Controller: 12 steg
Arduino MIDI Foot Controller: 12 steg
Anonim
Arduino MIDI fotkontroll
Arduino MIDI fotkontroll

Jag har nyligen designat denna MIDI -kontroller för att använda frasen looper som är inbyggd i Boss DD500 fördröjningspedal. Jag styr hela min gitarrrigg med ett Behringer FCB MIDI -kort, och det gör att jag kan byta patchar på fördröjningspedalen i effektslingan, samtidigt som jag byter förstärkarkanaler samtidigt.

DD500 har en mycket grundläggande looper -funktion inbyggd men en av nackdelarna med den är att när looparen är aktiv styrs den av fotpedalerna på pedalen. Det betyder att du inte kan ändra patchar på pedalen medan slingan är aktiv, eftersom den i huvudsak fångat fotpedalernas funktioner. Eftersom jag använder MIDI existerar denna begränsning inte, eftersom det helt enkelt är en fysisk fråga. Detta innebar dock att reservera 5 fotbrytare på min huvudsakliga MIDI -kontroller för looparen, och därför bestämde jag mig för att bygga en separat controller för dem.

Min första plan för detta var att ta ett litet Hammond -hölje och sätta in 5 fotkontakter och lära mig lite grundläggande Arduino -kodning. När jag började lära mig mer och min kod fungerade, motiverade det mig att prova fler saker och sedan snöade det i princip till något större.

Steg 1: Begrepp

Begrepp
Begrepp
Begrepp
Begrepp

En av de tidiga idéerna var att bara ha fem knappar i rad med status -lysdioder. Det här var ganska enkelt att haka på en brödbräda med Arduino. Tillägget av nya funktioner och hårdvara slutade med att bli en process där jag ständigt designade och gjorde om den fysiska layouten på papper och byggde vidare på brödbrädprojektet. Även med mycket planering var mycket av arbetet med detta något gjort i farten i början.

De två bilderna ovan visar den allra första ritningen som jag tog hänsyn till papper, som startade idén i första hand, följt av en månad med anteckningar efter den som formade de fysiska och PCB -layouterna.

Steg 2: Breadboard Protoyping

Brödbräda Protoyping
Brödbräda Protoyping
Brödbräda Protoyping
Brödbräda Protoyping

Hela projektet byggdes på en brödbräda och testades fullständigt för att se till att det fungerade fullt ut med DD500 innan något arbete påbörjades med att permanent bygga det. Några extrafunktioner lades till i koden, vilket gav regulatorn några extrafunktioner som DD500 saknade. Dessa kommer att diskuteras mer fullständigt i kodavsnittet.

Pedalen har 5 fotkontakter, 4 status -lysdioder, 5 I2C LCD -skärmar och styrs av en Arduino Nano Every. Den får ström från en 9V gitarrpedal PSU med hjälp av en separat brytbox som bär den kraften över MIDI -kabeln med hjälp av de 2 stiften som normalt inte används på en MIDI -kontakt.

Steg 3: Tillverkning

Tillverkning
Tillverkning
Tillverkning
Tillverkning
Tillverkning
Tillverkning

Jag tittade på många möjliga fall för att hysa projektet och övervägde till och med tanken på att försöka böja mitt eget fodral från aluminiumplåtar. Så småningom bosatte jag mig på ett Hammond -hölje som var tillräckligt stort för att rymma de 5 16X2 LCD -skärmar jag hade valt.

Fotkontakterna var generiska tillfälliga soft-touch-omkopplare.

Vid det här stadiet bestämde jag mig för att ha skräddarsydda skärmar för att hålla framsidan ren, eftersom jag skulle klippa skärmhålen för hand med en Dremel och visste att det sannolikt skulle finnas några områden som var mindre än perfekta. Jag fick dessa klippa av en lokal designstudio som laserskärning, först som kartongmallar för att se till att mina storlekar var korrekta, och sedan i 3 mm vit akryl för det sista stycket.

Steg 4: CAD-modell och layout

CAD-modell och layout
CAD-modell och layout
CAD-modell och layout
CAD-modell och layout

Från mina pappersskisser använde jag Inkscape för att lägga ut alla fysiska komponenter och slutföra storlekar och positioner. Jag kom också på skärmmonteringsmetoden vid denna tidpunkt. För att minimera mängden synliga bultar på framsidan bestämde jag mig för att montera alla skärmar på några aluminiumplattor bakifrån med hjälp av distanser, och då skulle jag bara behöva 4 bultar per platta för att fästa dem på höljet, vilket skulle också hålla skärmramarna på plats.

Steg 5: PCB -design

PCB -design
PCB -design
PCB -design
PCB -design
PCB -design
PCB -design
PCB -design
PCB -design

För att skapa kretskortet använde jag en webbplats som heter EasyEDA. Den har en redaktörsmiljö där du kan rita en schema över dina komponenter, göra den till en PCB -layout och sedan exportera den direkt till JLCPCB för att ha gjort till brädor. Jag hade aldrig gjort något liknande förut, men de har en utmärkt guide på webbplatsen som förklarar hur redaktören fungerar, och inom en timme fick jag tavlan utformad och beställd.

Vissa områden på tavlan var dåligt utformade då på grund av oerfarenhet, till exempel att använda en enda 5V -skena för skärmkraften, till exempel i stället för att ge var och en ett separat matning. Tack och lov var alla spänningsfall som inträffade inte tillräckligt för att orsaka problem med skärmarna.

Styrelserna anlände cirka 2 veckor senare och arbetade tack och lov utan problem.

Steg 6: Skärmfästen

Skärmfästen
Skärmfästen
Skärmfästen
Skärmfästen
Skärmfästen
Skärmfästen

De första delarna som gjordes var skärmfästena. Jag använde 3 mm aluminium för detta och borrade hål för avstånd. Dimensionerna bestämdes genom att lägga ut allt på skrivbordet som jag ville att den sista pedalen skulle vara och mäta från monteringshålen på skärmens PCB. Jag placerade också fotkontakterna med dem för att få avstånden för dem.

När alla hål hade borrats monterades skärmarna och kontrollerades om de var raka genom att hålla en linjal mot de plana bottenkanterna. Allt har ställts upp så här långt.

Steg 7: Kapsling

Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad
Inhägnad

Nästa upp var att ändra fallet. Fotkontakterna och lysdioderna var enkla eftersom de var och en helt enkelt krävde ett 12 mm respektive 5 mm hål.

Huvuddelen av det fysiska arbetet kom när skärhålen skärs ut. Jag använde en Dremel med några kraftiga skärskivor och olika filer för att rengöra hålen efteråt. Den här delen tog ungefär 2 timmar.

Kapslingen jag använde var konstruerad för industriella ändamål och gjordes genom att böja en enda bit metall och punktsvetsa hörnen. Detta innebar att lite arbete skulle krävas för att rensa upp dessa hörn genom att använda bilkarosseri för att jämna ut de låga fläckarna och fylla luckorna på kanten.

Vid denna tidpunkt var fallet helt grundat och jag hånade på allt bara för att se hur det skulle se ut.

Steg 8: Uh-Oh

Hoppsan
Hoppsan
Hoppsan
Hoppsan
Hoppsan
Hoppsan

Och sedan kom insikten att trots all min planering och mätning hade jag gjort ett STORT fel. Jag utformade brädans och fodralets layout oberoende av varandra. I mitt huvud skulle brädan sitta nästan jämnt mot den övre väggen, med ett kort avstånd bakom. Men det fanns absolut inget sätt som detta kunde passa. Och det fanns inget utrymme att lägga det åt sidan heller. En enorm försummelse, men tack och lov en som jag kunde åtgärda eftersom det fortfarande var ganska mycket utrymme mellan skärmfästena på baksidan av fodralet. Ytterligare några hål borrade i skärmfästena och ett par avstånd, och vi är igång igen, med tillräckligt med utrymme för att få på locket.

Steg 9: Måla

Måla
Måla
Måla
Måla
Måla
Måla

Allt demonterades igen och fodralet målades Metallic Candy Red, följt av några lager lack. Lådan lämnades att bota i en vecka, även om jag upptäckte att lacken fortfarande var lite mjuk vid denna tidpunkt när jag byggde upp allt. Några små delar av färgen skadades på grund av detta. Något som jag vill undvika i mitt nästa projekt.

Under den här tiden hade jag köpt en 3D -skrivare och bestämde mig för att använda den för att göra några brickor för fotbrytarna, eftersom de nylon som jag hade köpt hade en hemsk gulaktig nyans och var dåliga i storlek.

Steg 10: Kabeldragning

Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning
Kabeldragning

Den sista delen av den fysiska monteringen var att koppla ihop allt. Återigen, problemen med falldesign/PCB -design kom upp igen och några av sidhuvudpositionerna på kretskortet innebar att korsa många trådar över varandra, vilket gjorde saker lite rörigare än jag hade hoppats.

Trådarna till skärmarna buntades i uppsättningar om 4, med hjälp av värmekrymp och flätad omslag, gjorda i en enda bit.

Steg 11: Arduino -kod

Image
Image

Som nybörjare för Arduino -kodning lärde jag mig själv när jag gick. Koden är förmodligen programmeringsekvivalenten för en "lång väg" men jag var glad att den fungerade som avsett.

Slingaren på DD500 har 5 grundläggande funktioner:

  • Looper på/av
  • Spela in/Overdub/Spela
  • Spela inspelad loop
  • Stoppa uppspelningen
  • Rensa inspelad loop

Var och en av dessa funktioner har en motsvarande fotbrytare och, med undantag för stoppknappen, en status -LED. LCD -skärmarna uppdateras också med relevant information för att visa om pedalen är i inspelning, överdubbning eller uppspelningsläge samt vilken funktion varje fotbrytare kommer att göra beroende på vad som händer vid den tiden.

En annan funktion jag lade till var att hålla reda på hur många gånger posten/overdub -funktionen aktiverades. Detta hålls reda på i koden genom att öka ett heltal som visas på "buffert" -skärmen och visar hur många spår som spelas in. Även om DD500 inte kan radera enskilda spår, lade jag till detta bara som en kodningsövning för att se om jag kunde få det att fungera.

Det verkar finnas ett problem med att ladda upp filer till Instructables, och därför har jag lagt en kopia av koden på Pastebin istället på:

2 bibliotek användes i koden:

LiquidCrystal_I2C

FortySevenEffects MIDI -bibliotek

Steg 12: Slutsats

Slutsats
Slutsats

En av de största sakerna jag tar bort från det här projektet är att planera så mycket du kan i förväg kan undvika potentiella problem. Problemen med min PCB -montering belyser vikten av detta. Att hålla bra anteckningar är också något jag rekommenderar starkt. Utan dem kan jag ha stött på fler problem än jag hade. Jag håller just nu på att bygga min andra MIDI -controller och den här gången har jag gjort större ansträngningar för att effektivisera min kod och utforma min hårdvara kring hur kretskortet ska monteras.