En digital gitarrpedal byggd från grunden med hjälp av pedalSHIELD från Arduino.
Press to view video
Vi hittade Arduino-projektet pedalSHIELD som innehåller alla komponenter för att kunna löda ihop en Arduino-kontrollerad gitarrpedal. Det var ett perfekt sätt att lära sig mer om digital signalbehandling och att bygga fysiska och elektroniska enheter samtidigt som vi kunde skapa något användbart (ja, många av oss är skickliga musiker) och ha roligt på vägen.
Vår grundidé var att använda en ljudingång, t.ex. en gitarr eller en synt, och sedan använda en Arduino för att bearbeta ljudet och skicka den digitalt förändrade signalen till en analog utgång, exempelvis en förstärkare eller en högtalare.
När det gäller hårdvaruutveckling är det en utmaning att dela upp arbetet på samma sätt som man vanligtvis gör i ett mjukvaruprojekt. Först måste du få en prototyp att fungera innan du kan prova någon av den kod du har utvecklat. Därför var vårt huvudfokus att få hårdvaran att fungera så snabbt som möjligt.
En del av teamet fokuserade på att löda komponenterna till kretskortet som tillhandahölls med pedalSHIELD-kitet. Detta kretskort var sedan tänkt att paras ihop med ett Arduino MEGA-kort.
En annan del av teamet började med att ta fram prototyper av kretsarna med Arduinos kopplingsdäck och pedalShield UNO, i enlighet med exemplena från pedalSHIELDs GitHub-repo. Målet med det var att säkra upp processen och få åtminstone ett av exemplen att fungera så att vi kunde köra signalen från ett instrument genom kretsen och ut i en förstärkare och höra den förändrade signalen. Exemplena i GitHub-repot innehöll många "vanliga" effekter och koder för att testa delar av kretsen.
Vi delade upp vissa delar av kretsarna på olika kopplingsdäck för att i slutändan kombinera dem till en hel krets. Vi testade sedan den färdigställda kretsen genom att ladda upp Arduinos kodexempel från pedalSHIELDs GitHub-repo (eller något modifierade versioner av dem) samt spela gitarr och syntar genom ingången, kopplat till en gitarrförstärkare.
Som ett sista steg testade vi den lödda kretskortspedalen med kretskortets brytare och en liten skärm. Lysdioden blinkade (som det var tänkt att den skulle göra) och vi fick den lilla skärmen att åtminstone visa upp något. Ingenting (tack och lov) gick sönder på vårt första försök, men vi hade varierande erfarenheter av ljudet. Antingen var bypass-omkopplaren ansluten på fel sätt, vilket inte gav oss en ljudutgång från pedalen, eller så fungerade inte ingångssteget eftersom ingen signal skickades till Arduinon.
Vår största utmaning under projektet var förstå varför den skickade signalen lät så dåligt och i vilket skede problemet uppstod. Vi fick pedalens utgång att fungera ganska tidigt men det fanns många problem med ljudingångssteget (eller något däremellan):
Vi hittade senare en förenklad ingångskrets som fungerade ganska bra när den var ansluten till UNO:s utgångssteg. Detta blev helt klart vårt bästa bygge när det kom till ljudkvalitet. Ändå var prototypen känslig, vilket ofta resulterade i en bullrig utgång. Vi anslöt senare ett low-pass-filter som reducerade högre frekvenser och det gjorde skillnad. Vi lärde oss att några små komponentförändringar kunde innebära en hörbar skillnad, något vi tyckte var en häftig upplevelse under projektet.
En lärdom vi tar med oss är det mödosamma arbete som krävs för att bygga hårdvaruenheter och den stora skillnaden gentemot utveckling av mjukvara. Att arbeta med hårdvara är en mycket mer “brutal” upplevelse. Ett större misstag kan förstöra flera timmars arbete på en krets. Detta faktum kan vara både nedslående och skrämmande för en mjukvaruutvecklare som är van vid att göra misstag och att det allt som oftast inte innebär några stora förseningar. I hårdvaruutveckling får man lägga mycket större vikt vid att vara 100% säker på varje beslut som tas eftersom det blir besvärligt att rätta till det senare.
Det kan ha funnits en förväntan i gruppen om att vi inte skulle ha så många problem som vi hade med de olika kretsarna. Vi följde färdiga instruktioner om hur vi skulle sätta ihop det och det verkade så enkelt. När saker och ting inte fungerade korrekt efter att ha följt alla instruktioner var det svårt att komma på ett bra sätt att hitta felet eftersom vi inte hade kunskapen och erfarenheten av att ha gjort det förut.
Att arbeta med digital ljudsignalbehandling kräver kod som inte på något sätt är överflödig och ineffektiv. Det är till exempel endast acceptabelt för musiker att ha upp till 5-10 millisekunders fördröjning vid bearbetning av ljudsignalen. Lågnivåprogrammering (low-level programming) är därför väldigt hjälpsamt i den här typen av projekt.
I en eventuell fortsättning av vårt projekt skulle vi:
Vi använder kakor (cookies) för att ge dig en bättre upplevelse av vår webbplats. Du väljer själv om du godkänner kakor. Läs mer om hur vi hanterar kakor