Arduino MIDI Ayak Kontrolörü: 12 Adım
Arduino MIDI Ayak Kontrolörü: 12 Adım
Anonim
Arduino MIDI Ayak Kontrolörü
Arduino MIDI Ayak Kontrolörü

Yakın zamanda bu MIDI kontrol cihazını Boss DD500 gecikme pedalında yerleşik olan cümle döngüleyiciyi çalıştırmak için tasarladım. Tüm gitar teçhizatımı bir Behringer FCB MIDI kartı kullanarak kontrol ediyorum ve bu, aynı anda amfi kanallarını değiştirirken efekt döngüsündeki gecikme pedalındaki yamaları değiştirmeme izin veriyor.

DD500'de yerleşik olarak çok basit bir lüper işlevi vardır, ancak bunun dezavantajlarından biri, lüper aktif olduğunda pedaldaki ayak şalterleri tarafından kontrol edilmesidir. Bu, döngü aktifken pedaldaki yamaları değiştiremeyeceğiniz anlamına gelir, çünkü temel olarak ayak pedallarının işlevlerini yakalar. MIDI kullandığım için bu sınırlama mevcut değil, çünkü bu sadece fiziksel bir sorun. Bu, looper için ana MIDI denetleyicimde 5 ayak pedalı ayırmak anlamına geliyordu ve bu yüzden onlar için ayrı bir denetleyici oluşturmaya karar verdim.

Bunun için ilk planım küçük bir Hammond muhafazası alıp 5 ayak pedalı koymak ve kendime bazı temel Arduino kodlamalarını öğretmekti. Daha fazlasını öğrenmeye başladığımda ve kodum çalıştığında, beni daha fazla şey denemek için motive etti ve ardından temelde daha büyük bir şeye dönüştü.

Adım 1: Kavramlar

kavramlar
kavramlar
kavramlar
kavramlar

İlk fikirlerden biri, durum LED'leri ile arka arkaya sadece 5 düğmeye sahip olmaktı. Arduino ile bir breadboard üzerinde maket yapmak oldukça basitti. Yeni özelliklerin ve donanımın eklenmesi, sürekli olarak kağıt üzerinde fiziksel düzeni tasarlayıp yeniden tasarladığım ve breadboard projesi üzerine inşa ettiğim bir süreç haline geldi. Çok fazla planlamaya rağmen, bu konudaki çalışmaların çoğu başlangıçta bir şekilde anında yapıldı.

Yukarıdaki 2 resim, ilk etapta fikri başlatan kağıda taahhüt ettiğim ilk çizimi ve ardından fiziksel ve PCB yerleşimlerini şekillendiren bir aylık notları gösteriyor.

2. Adım: Breadboard Prototipleme

Breadboard Prototipleme
Breadboard Prototipleme
Breadboard Prototipleme
Breadboard Prototipleme

Tüm proje bir devre tahtası üzerine inşa edildi ve kalıcı olarak barındırılması için herhangi bir çalışmaya başlamadan önce DD500 ile tam olarak çalıştığından emin olmak için tamamen test edildi. Kodda, denetleyiciye DD500'de bulunmayan bazı ekstra işlevler veren bazı ekstra özellikler eklendi. Bunlar kod bölümünde daha ayrıntılı olarak tartışılacaktır.

Pedal 5 ayak pedalına, 4 durum LED'ine, 5 I2C LCD ekrana sahiptir ve bir Arduino Nano Every tarafından kontrol edilir. Normalde bir MIDI konektöründe kullanılmayan 2 pimi kullanarak bu gücü MIDI kablosu üzerinden taşıyan ayrı bir çıkış kutusu yoluyla 9V gitar pedalı PSU'dan güç alır.

Adım 3: Üretim

Yapılışı
Yapılışı
Yapılışı
Yapılışı
Yapılışı
Yapılışı

Projeyi barındırmak için birçok olası davaya baktım ve hatta kendi davamı alüminyum levhalardan bükmeye çalışma fikrini bile düşündüm. Sonunda, seçtiğim 5 adet 16X2 LCD ekranı barındıracak kadar geniş bir Hammond muhafazasına yerleştim.

Ayak şalterleri, genel anlık yumuşak dokunuşlu şalterlerdi.

Bu aşamada, ekran deliklerini bir Dremel ile elle keseceğimden ve mükemmelden daha az olan birkaç alan olacağını bildiğimden, ön tarafı temiz tutmak için özel montaj ekran çerçeveleri yaptırmaya karar verdim. Bunları lazer kesim yapan yerel bir tasarım stüdyosuna, önce boyutlarımın doğru olduğundan emin olmak için karton şablonlar olarak ve ardından son parça için 3 mm beyaz akrilikle kestim.

Adım 4: CAD Modeli ve Düzeni

CAD Modeli ve Düzeni
CAD Modeli ve Düzeni
CAD Modeli ve Düzeni
CAD Modeli ve Düzeni

Kağıt eskizlerimden, tüm fiziksel bileşenleri ortaya koymak ve boyutları ve konumları sonlandırmak için Inkscape'i kullandım. Ben de bu noktada ekrana montaj yöntemini buldum. Ön tarafta görünen cıvata miktarını en aza indirmek için, tüm ekranları arkadan bazı alüminyum plakalara ayırıcılar kullanarak monte etmeye karar verdim ve ardından bunları muhafazaya sabitlemek için plaka başına sadece 4 cıvataya ihtiyacım olacaktı. ekran çerçevelerini de yerinde tutar.

Adım 5: PCB Tasarımı

PCB Tasarımı
PCB Tasarımı
PCB Tasarımı
PCB Tasarımı
PCB Tasarımı
PCB Tasarımı
PCB Tasarımı
PCB Tasarımı

PCB'yi oluşturmak için EasyEDA adlı bir web sitesinden yararlandım. Bileşenlerinizin şemasını çizebileceğiniz, bir PCB düzenine dönüştürebileceğiniz ve ardından panolara dönüştürmek için doğrudan JLCPCB'ye aktarabileceğiniz bir düzenleyici ortamına sahiptir. Daha önce hiç böyle bir şey yapmamıştım, ancak sitede editörün nasıl çalıştığını açıklayan mükemmel bir rehberleri var ve bir saat içinde tahtayı tasarlayıp sipariş ettim.

Karttaki bazı alanlar, örneğin ekran gücü için her birine ayrı bir besleme vermek yerine tek bir 5V ray kullanmak gibi deneyimsizlik nedeniyle o sırada kötü tasarlanmıştı. Neyse ki meydana gelen herhangi bir voltaj düşüşü, ekranlarda sorunlara neden olmak için yeterli değildi.

Panolar yaklaşık 2 hafta sonra geldi ve çok şükür sorunsuz çalıştı.

Adım 6: Ekran Montajları

Ekran Bağlantıları
Ekran Bağlantıları
Ekran Bağlantıları
Ekran Bağlantıları
Ekran Bağlantıları
Ekran Bağlantıları

İlk yapılan parçalar ekran montajlarıydı. Bunun için 3 mm alüminyum kullandım ve dikmeler için delikler açtım. Boyutları, son pedalın olmasını istediğim gibi masanın üzerine yerleştirip ekran PCB'lerindeki montaj deliklerinden ölçülerek belirlendi. Onlar için mesafeleri almak için ayak pedallarını da yanlarına yerleştirdim.

Tüm delikler delindikten sonra, elekler monte edildi ve düz alt kenarlara bir cetvel tutarak kare olup olmadığı kontrol edildi. Buraya kadar her şey üst üste geldi.

7. Adım: Muhafaza

muhafaza
muhafaza
muhafaza
muhafaza
muhafaza
muhafaza

Sıradaki davayı değiştirmekti. Ayak şalterleri ve LED'ler, her biri sırasıyla 12 mm ve 5 mm delik gerektirdiğinden basitti.

Fiziksel çalışmanın ana kısmı, ekran deliklerini keserken geldi. Daha sonra delikleri temizlemek için bazı ağır hizmet tipi kesme diskleri ve çeşitli eğeleri olan bir Dremel kullandım. Bu bölüm yaklaşık 2 saat sürdü.

Kullandığım kasa endüstriyel amaçlı tasarlanmış olup tek parça metal büküm ve köşelerin punta kaynağı ile yapılmıştır. Bu, alçak noktaları düzleştirmek ve kenardaki boşlukları doldurmak için araç gövdesi dolgusu kullanarak bu köşeleri temizlemek için biraz çalışma gerekeceği anlamına geliyordu.

Bu noktada dava tamamen hazırlandı ve nasıl görüneceğini görmek için her şeyi alay ettim.

Adım 8: Ah-Oh

Ah-Oh
Ah-Oh
Ah-Oh
Ah-Oh
Ah-Oh
Ah-Oh

Ve sonra tüm planlama ve ölçümlerime rağmen BÜYÜK bir hata yaptığımın farkına vardım. Pano ve kasa düzenini birbirinden bağımsız olarak tasarladım. Kafamda, tahta, arkasında kısa bir stand ile üst duvara neredeyse aynı hizada oturuyordu. Ama bunun kesinlikle uymasına imkan yoktu. Ve onu yan tarafa koyacak yer de yoktu. Büyük bir gözden kaçma, ama neyse ki, kasanın arka kapağındaki ekran yuvaları arasında hala biraz boşluk olduğu için düzeltebildim. Ekran yuvalarına birkaç delik daha ve birkaç ek parça ve kapağı takmak için yeterli alanla işimize geri döndük.

Adım 9: Boya

Boya
Boya
Boya
Boya
Boya
Boya

Her şey tekrar demonte edildi ve kasa Metalik Şeker Kırmızısı'na boyandı, ardından birkaç kat cila uygulandı. Her şeyi inşa ederken cilanın bu noktada hala biraz yumuşak olduğunu keşfetmeme rağmen, vaka bir hafta iyileşmeye bırakıldı. Bu nedenle boyanın birkaç küçük bölgesi hasar gördü. Bir sonraki projemde kaçınmayı amaçladığım bir şey.

Bu süre zarfında, bir 3D yazıcı satın aldım ve aldığım naylonların korkunç sarımsı bir tonu olduğundan ve boyutları kötü olduğundan, bunu ayak pedalları için bazı pullar yapmak için kullanmaya karar verdim.

Adım 10: Kablolama

kablolama
kablolama
kablolama
kablolama
kablolama
kablolama
kablolama
kablolama

Fiziksel montajın son kısmı her şeyi kablolamaktı. Yine, kasa tasarımı/PCB tasarımı ile ilgili sorunlar tekrar ortaya çıktı ve PCB üzerindeki bazı başlık konumları, çok sayıda kablonun birbirinin üzerinden geçmesi anlamına geliyordu, bu da işleri umduğumdan biraz daha karışık hale getirdi.

Ekranların kabloları 4'lü setler halinde toplandı ve ısıyla daralan ve örgülü sargı kullanılarak tek parça haline getirildi.

Adım 11: Arduino Kodu

Image
Image

Arduino kodlamasına tamamen yeni başlayan biri olarak, ilerledikçe kendime öğretiyordum. Kod muhtemelen 'uzun bir yol'un programlama eşdeğeridir, ancak amaçlandığı gibi çalıştığı için memnun oldum.

DD500'deki ilmek yapıcının 5 temel işlevi vardır:

  • Döngü açık/kapalı
  • Kaydet/Overdub/Oynat
  • Kayıtlı döngüyü oynat
  • Oynatmayı durdur
  • Kayıtlı döngüyü temizle

Bu işlevlerin her birinin karşılık gelen bir ayak pedalı ve durdurma düğmesi dışında bir durum LED'i vardır. LCD ekranlar ayrıca pedalın kayıt, overdubbing veya oynatma modunda olup olmadığını ve o sırada ne olduğuna bağlı olarak her bir ayak pedalının hangi işlevi yapacağını göstermek için ilgili bilgilerle güncellenir.

Eklediğim bir diğer özellik ise kayıt/overdub özelliğinin kaç kez aktif olduğunu takip etmekti. Bu, 'tampon' ekranında görüntülenen ve kaç parçanın kaydedildiğini listeleyen bir tamsayı artırılarak kodda izlenir. DD500 tek tek izleri silemezken, bunu çalıştırıp çalıştıramayacağımı görmek için bunu yalnızca bir kodlama alıştırması olarak ekledim.

Instructables'a dosya yüklerken bir sorun var gibi görünüyor ve bu yüzden kodun bir kopyasını şu adreste Pastebin'e koydum:

Kodda 2 kitaplık kullanıldı:

LiquidCrystal_I2C

FortySevenEffects MIDI kitaplığı

Adım 12: Sonuç

Çözüm
Çözüm

Bu projeden çıkardığım en büyük şeylerden biri, önceden yapabileceğiniz kadar planlamanın olası sorunları önleyebileceğidir. PCB montajımla ilgili sorunlar bunun önemini vurgulamaktadır. İyi notlar tutmak da şiddetle tavsiye ettiğim bir şeydir. Onlar olmadan, sahip olduğumdan daha fazla sorunla karşılaşmış olabilirim. Şu anda ikinci MIDI denetleyicimi oluşturuyorum ve bu sefer kodumu düzene sokmak ve donanımımı PCB'nin nasıl monte edilmesi gerektiğine göre tasarlamak için daha fazla çaba sarf ettim.