İçindekiler:

C-kodlu Mikrodenetleyici Kumaş Ton Üreteci: 8 Adım (Resimlerle)
C-kodlu Mikrodenetleyici Kumaş Ton Üreteci: 8 Adım (Resimlerle)

Video: C-kodlu Mikrodenetleyici Kumaş Ton Üreteci: 8 Adım (Resimlerle)

Video: C-kodlu Mikrodenetleyici Kumaş Ton Üreteci: 8 Adım (Resimlerle)
Video: Kendini tornaci sanan mal 2024, Kasım
Anonim
C-kodlu Mikrodenetleyici Kumaş Ton Üreteci
C-kodlu Mikrodenetleyici Kumaş Ton Üreteci

Geçen yılın Ekim ayının sonunda, carmitsu kullanıcısı, beslenme çantası synth'imi gördükten sonra bana bir mesaj gönderdi. Mesajından: İlkokulda müzik öğretiyorum. Bir sürü kaydedici müzik çalıyoruz. yani çocuklar küçük flüt çalarlar…… Üzerinde notun adının bulunduğu daireler bulunan bu siyah afiş panolarını kullanabilecek birkaç özel ihtiyacı olan çocuğum var. Bu öğrenciler nota isimleriyle çemberleri iterler, aynı zamanda diğer öğrenciler bir şarkı çalarlar….. Özel ihtiyaçları olan çocukların çoğu bunu oldukça iyi ve zamanında müzikle yapabilir. Aradığım şey, çok basit bir ses üreteci inşa etmek, böylece bu çocuklar, öğrenciler tarafından kayıt cihazlarında çalınanlarla aynı perdeyi çalabilecekler. Ben sadece birkaç saha olurdum. Yuvarlak dairelerinin altına bir tür küçük düğme takabileceğimi düşündüm, böylece onlara bastıklarında ses küçük bir hoparlörden çıkacak, böylece duyabilecekleri kadar yüksek. Öğretmen olan ve okulu seven bir anneye sahip olmak, nasıl karşı koyabilirdim ki? Doğrusunu söylemek gerekirse yapamadım. Bu, hemen hemen projenin bir tarihçesi ve kendinizinkini nasıl inşa edeceğinize dair talimatlar.

Adım 1: Başlangıç veya Neden Analoga Bağlı Kalamadım

Başlangıç veya Neden Analoga Bağlı Kalamadım
Başlangıç veya Neden Analoga Bağlı Kalamadım

İyi şeyler bir sonraki sayfada başlar. Yaptığım parçaları nasıl kullandığımı bilmek istiyorsanız, okumaya devam edin. Gerçek zamanlayıcı: Projeye biraz düşündükten sonra, op-amps Forest Mims III kitabımdan hemen piezo ton üreteci aklıma geldi. Gitmek için iyi bir yol gibi görünüyordu, bu sadece bir piezo, bir 741 IC ve birkaç pasif bileşen. Önemli değil değil mi? 2 sorunu var, 1) düğmeye bastığınızda, perdeyi değiştirmek mümkün 2) akort etmek neredeyse imkansız. İlki, başka bir sayaç eklemeden nasıl yapacağımı bilmememe rağmen, bazı geri dönme teknolojisi ile muhtemelen üstesinden gelinebilir. Piezo kullanmakla ilgili bir sorun da olabilir. İkinci sorun, belirli bir adım atmaya başladığınızda hantallaştı. 555 ne olacak? Veri sayfası, dirençlere ve kapasitörlere dayalı bir zaman geciktirme işlevi gösterir. Gerçek dünya parçalarının gerçek değerlerini yazmaya başlayana kadar harika olan, işte o zaman 440Hz'lik bir perdeye ulaşmanın biraz zorlaşmaya başladığını göreceksiniz. Ayarlamak için trim kapları kullanabilirsiniz, ancak zamanla hareket etme eğilimindedirler. Enstrümanın sürekli akort edilmesi, parça maliyetinin ve miktarının hızla artması üzerine derlenen ve eşimin düğmeye bastığında perde değişikliği yapması bu proje için 555'i öldürdü. Op-amp:Sorun değil, insanlar synth yapıyor. Ben doğmadan önce op-amp'ler. Birkaç parça ve belirli notlarla gerçekten basit bir tane yapmak ne kadar zor olabilir? Düşündüğümden daha zor. Dışarıdaki tasarımların çoğu bu proje için çok karmaşık. Synth tasarımcıları mükemmel dalga biçimi/tonu arıyor. Bu, okul veya öğretmen bütçeleri için yeterince ucuz olması gereken bir projeyle doğrudan çelişiyor. Bir klavye oluşturmak yeterince kolaydır, sadece bir grup direnç ve güç veya bir grup diyot ve güç. Devre tasarımının geri kalanı ve başlangıç elektronik seviyesindeki biri için kontrolden çıkmaya başlayan özel pcb'lerin maliyeti. Projenin yeniden tanımlanması: Böylece proje daha ben daha yola çıkmadan yeniden tanımlandı. Bir düğmeye basarak zamanında bir hoparlör pimini değiştirebilecek bir şeye ihtiyacım vardı. Bir PCB tasarlamak ve satın almak zorunda kalmak istemedim. Bunun mümkün olduğunca az bileşen kullanması ve yeni başlayanlar için bir kit olarak monte edilmesi gerekiyordu. Sürekli yüzüme bakıyordu. Ahh!! Mikrodenetleyici! Mikrodenetleyici: Hem Modern Devices Bare Bones Arduino kitini hem de Evil Mad Scientist Simple Target Board'u satın aldıktan ve aylarca kullanılmadan masamda oturmasına izin verdikten sonra, mükemmel bir tanıtım projesine sahip oldum. Her ikisini bir araya getirmek için gereken süreye, kodun öğrenme eğrisine, maliyete, gereken ek parçalara ve istediğimi yapmasını sağlamaya başladım ve hedef tahtasına yerleştim. Maliyet oldukça eşitti, 15 dolar artı Arduino için 20 dolarlık bir FTDI kablosu, 12 dolar artı 22 dolarlık bir USBtinyISP programcısı. Dayanabileceğim küçük kolejden C++'ı zaten biliyordum ve mikrodenetleyiciler için C'nin o kadar da kötü olmayacağını düşündüm, kitimi düzgün bir şekilde bir araya getirdiğimden emin olmak için bir ışığı yanıp sönmekten başka Arduino deneyimim yoktu. Her ikisi de monte edilebilir. Neredeyse bir atıştı, bu yüzden ikisinin daha az parçası olan hedef tahtasına karar verdim.

Adım 2: İhtiyacınız Olan Şeyler Rev 1

İhtiyacınız Olan Şeyler Rev 1
İhtiyacınız Olan Şeyler Rev 1

Parça MaliyetiUSBtinyISP AVR Programlayıcı Kiti (USB SpokePOV Dongle)v2.0 $22.00https://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=46Evil Mad Scientist laboratuvarları ATmegaXX8 Mini Dev Kitleri 12$Başlık, 6-pin DIP, 5-pk $2.75https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) $2.79https://www.radioshack.com/product/index.jsp?productId=2062406SPST Normalde Açık Anlık Anahtarlar (biz kullandık) 5) $3.49(4pack) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA" Pil Tutucu $1.79https://www.radioshack.com/product/index.jsp?productId=2102735SPST Submini Slide Switch (güç anahtarı için isteğe bağlı) $2.69(2'li paket)https://www.radioshack.com/product/index.jsp?productId=2062490LED ve direnç (güç ışığı istiyorsanız isteğe bağlı) $ ücretsiz olmalıdır eğer etrafta yatıyorlarsa Tel $ ayrıca gümüş lehimin etrafında da olmalı (eğer bu çocukların yakınına gidiyorsa, muhtemelen kurşun kullanmamalısınız, ebeveynler bu tür şeyler hakkında oldukça tuhaf olurlar;)) Alkol sürmek (yeniden hareket akışı) Bazı yerlerden tasarruf etmek istiyorsanız, RadioShack'ten parça almanıza gerek yok. Yakın ve tahmin edilebilir oldukları için yaptım.

Adım 3: Montaj Rev 1

Montaj Rev 1
Montaj Rev 1
Montaj Rev 1
Montaj Rev 1

Parçaları gösterildiği gibi birleştirin. Lehimlemeden kaynaklanan flukslardan kurtulmak için işiniz bittiğinde mutlaka ovma alkolü ve flux fırçası kullanın. Tercih edenler için şematik aşağıdadır. D1 ve R1 ne istersen olabilir, bu sadece bir güç ışığı. C1 sadece gücü biraz daha tutarlı hale getirmeye yardımcı olmak içindir. 10uF kullandım. Bu şema sonraki sürümler için aynıdır, sadece yapı anahtarları için basma düğmeleri değiştirin. son revizyonda PC4 ve PC5'e veya 27 ve 28 pinlerine anahtarlar ekledim.

Adım 4: İhtiyacınız Olan Şeyler Rev 2

Neye ihtiyacınız var Rev 2
Neye ihtiyacınız var Rev 2

Yani temelde Radio Shack düğmelerini el yapımı kumaş olanlarla değiştiriyorsunuz. İhtiyacınız olan: Birden fazla kumaş rengi veya her notanın aynı renkte olmasını istiyorsanız tek renk. En yakın kumaş mağazanızın kapitone bölümü, bunu ucuza almak için en iyi yerdir. Kapitone çeyrekleri 1,50 $'dır ve bir taneden bir ton anahtar alabilirsiniz. İletken kumaş, LessEMF'den Flectron kumaşını öneririm, teli kumaşa tutturmak için 12"x54" parça Gözlü için 20 dolar. Bunları çoğu kumaş mağazasında ucuza alabilirsiniz. JoAnn'de alet var ve 25$'a bunun için bir çekiç gerekecek. Tel, 22AWG kullandım, varsa daha küçük öneririm. Renkli ve iletken kumaşın birbirine yapışmasını sağlamak için kaynaştırma. Mağazaya sorun ve muhtemelen bahçeden satın alabilirsiniz. Bu muhtemelen işe yarayacaktır, ancak birine sormanızı öneririm Vuruş, ilk başta gerçekten gevşek bir şey kullandım, sonra daha sıkı bir örgüye geçtim. En iyi sonucu bulana kadar birkaç farklı denemenizi öneririm. Isıyla daralan makaron, bu her şeyi çok daha kolay yönetilebilir hale getirdi. Isıyla daralan teller birbirlerinden geçerken bir araya gelirler ve çok daha iyi kalırlar.

Adım 5: Montaj Rev 2

Montaj Rev 2
Montaj Rev 2
Montaj Rev 2
Montaj Rev 2
Montaj Rev 2
Montaj Rev 2

Çok renkli kumaşı üst üste koyun ve bir kare kesin, mükemmel olması gerekmez. Kıvrımları çıkarmak için kumaşı ütüleyin, tekrar üst üste koyun ve kenarların hepsinin eşleştiğinden emin olun. Olmayan kenarları kesin. Sol ve sağ tarafları düz bırakarak üst ve alt yuvarlakları kesin. Dikişten sonra düğmeyi ters çevireceksiniz, bu nedenle yuvarlak kenarları çok yuvarlak yapmayın ve işiniz bittiğinde düğmeyi kolayca itmek için düz kenarlarda yeterli yükseklik bırakın. İlk ve son düğmenin düz tarafını yuvarlayın. Dikiş makinenize gidin ve iki yufkayı iyi tarafları birbirine bakacak şekilde bir araya getirin ve düz kısımlara dikiş yapın. dikin, iletken kumaştan kareler kesin ve bir tarafı sigortalayın. Kabloyu uzunlamasına kesin ve bir ucunu soyun. halkalardan birinin etrafına teli lehimleyin. (lehim muhtemelen deliğe yapışmaz) Kumaşın bir köşesinden küçük bir yarık açın ve kumaşı ve teli tutturmak için deliği çekiçleyin. kaynaştırıcıdan arkalığı çıkarın ve iletken kumaşı renkli kumaşın arkasına yapıştırın. Tüm anahtarlar için tekrarlayın. İşleri kolaylaştırmak için, bir tel bir sonraki anahtar için telden geçtiğinde kabloları birlikte ısıyla daralan makaronla birleştirebilirsiniz. Anahtar setinin uzunluğunda bir kumaş parçası alın veya yapın ve uzunluğu boyunca iletken bir kumaş şeridi kesin. Renkli anahtarların aksine, bu uzun bir parçadır. Bu, bağlantı kurmak için düğmelerin dokunduğu yer olacaktır. Küçük bir yarık kesin ve renkli anahtar üstleri gibi bir delik ile bir tel takın. Alt kumaşın arkasına yapıştırın. İletken kumaş dışarı bakacak şekilde üst ve alt tarafı dikin, dikildikten sonra seti ters çevirmek için bir yarda çubuğu kullanın. Vuruşta birkaç küçük delik açın, almak için bir çubuk kullandım bir daire, sonra sadece çubuğu çıkarın ve kesimi yapın. Şekil vermek için kesin ve anahtarlara yerleştirin. İletken kumaşı ayrı tutan şey budur. Düğmeleri ters çevirirken dolguyu yerleştirmek daha kolay olabilir. Takarken kullandığım şeyler oldukça kötü bir şekilde yırtıldı ve farklı vuruşlar yapmak zorunda kaldım. Sonunda telleri hedef tahtasına bağlayın ve hazırsınız. Uzun alt şerit taşlanacaktır.

Adım 6: İhtiyacınız Olan Şeyler Rev 3

İhtiyacınız Olan Şeyler Rev 3
İhtiyacınız Olan Şeyler Rev 3

Rev 3'te anahtarları kablolamadan bağımsız hale getirdim. Bu bir ton zaman kazandırdı. Ayrıca bitmiş sonucun görünümünü de çok daha fazla seviyorum. İşte ihtiyacınız olan yeni parçalar: Snaps, Onları JoAnn's'ten yeni aldım. 7 $ 'a fena olmayan bir kurulum aracıyla geldiler, ortadaki çıtçıtları takmak için aracımı parçalara ayırmak zorunda kaldığım için pense araçlarından birini öneririm. Yapışmaları daha uzun sürse de dikişler iyi bir alternatif olabilir. İletken iplik, Spark Fun'da dikiş makinenize girebilecek şeyler vardır. Makinemde çok yavaş gitmem gerekiyordu yoksa ip kopacaktı. Kilometreniz değişebilir

Adım 7: Montaj Rev 3

Montaj Rev 3
Montaj Rev 3
Montaj Rev 3
Montaj Rev 3
Montaj Rev 3
Montaj Rev 3
Montaj Rev 3
Montaj Rev 3

Bu revizyon, inşa edilene kadar geçen süre açısından öncekinden çok daha iyiydi. Artı, çıkarılabilir anahtarlara sahip olmak akıl sağlığımı bir kereden fazla kurtardı. Tabanı yaparak başlayın. Sadece ikiye katlanmış bir kapitone çeyrek. Üstüne bir kat keçe koyun ve ters çevirmek için bir delik bırakarak dikin. Şeyi delikten itin ve temelde yastık tipi bir şeye sahip olursunuz. Daha kolay çalışabilmesi için kapitone yaptım. Düz iplik kullanın ve çıldırın. Bunun üzerine elmas yaptım, ama belki bir dahaki sefere arkaya bir ejderha ya da havalı bir şey koyarım. Şimdi, şalterlere. Bu tasarımı beğendim çünkü temelde bunlardan bir ton önceden yapabilir ve sadece istediğinizi kullanabilirsiniz. Hurda bir karton, kağıt veya kumaş parçası kullanarak başlayın ve ondan bir armut şekli kesin. Her anahtarın üstünü ve altını kesmek için bunu kılavuz olarak kullanın. Her alt için bir renk ve üstler için farklı bir renk kestim, ancak yaratıcı olabilir ve istediğinizi yapabilirsiniz. Kılavuzunuzu anahtarın içine kolayca sığacak bir lolipop şekline kesin. "Çubuğu" uzatın, böylece "armut" kenarına sarılabilir. Kaynaştırıcı ve iletken kumaştan şekli kesin ve iletken kumaşın bir tarafını yapıştırın. Arkalığı fırınlama malzemesinden çıkarın ve altta olacak kumaşın üstüne ve üstte olacak kumaşın altına yapıştırın. Fazla kısmı üst tarafa sarın. Dikiş makinenize gidin ve üst ve alt kumaş arasına deliklerle vuruş yapın. İletken kumaşın dışını dikin ve anahtarın "çubuk" kısmını atlayın. Üst iletken kumaşı alta dikerek kısa oluşturmanın mümkün olduğunu buldum. İletken kumaşı dikmemek daha iyidir. Çıtçıtları takın ve anahtar yapılır. Tüm alt/GND bağlantıları için erkek çıtçıt ve tüm üst kısımlar için dişi çıtçıt kullanmayı daha kolay buldum. Bu, tüm anahtarları birbirinin yerine kullanılabilir hale getirir. Devre: Turları kesmekle ilgili olan şey, çok fazla ekstra bitin olmasıdır. Artıklarımı aldım, büyük eritme parçalarını büyük iletken kumaş parçalarına kaynaştırdım ve bunları ped olarak kullandığım daha küçük dikdörtgenleri kesmek için kullandım. Anahtarlarınızı kabaca yerleştirin ve pedleri, onlara bir çizgi dikmek ve bir çırpıda almak için yeterli alana sahip olacak şekilde tabana sigortalayın. Kullandığım dikiş makinesinin ayağı, çıt çıta çok yakın durmadı, o yüzden bunu aklınızda bulundurun ve kendinize biraz yer açın. Dikiş makineme girebilecek iletken ipliğe sahip olduğum için, pedden pede ve arkaya bir çizgi diktim. Yavaş gitmem gerekiyordu yoksa iplik kopacaktı ama elle dikmekten bir ton daha hızlıydı. Ayrıca masura ve iğne üzerindeki iletken iplik sayesinde gerçekten iyi bir sağlam bağlantı elde ettim. Malzeme deli gibi yıpranır, ancak biraz zanaat yapıştırıcısı veya Elmers bunu hemen temizler. Hatları birbirinden uzak tutmaya çalışın ve herhangi bir sorun yaşamamalısınız. Son montaj: Tüm anahtarlarınızı takın, kartı bağlayın, kodu yükleyin ve işiniz bitti. Tahtadan altlığa geçmek için tel kullandım ve sonra teli tabana elle diktim. Bir sonraki versiyon için, tahtayı, boş parmakların ayırmaması için tabana tutturmak için çıtçıtlı plastik bir kutuya monte edeceğim.

Adım 8: Kod

kod
kod

Daha önce hiç bir çip programlamadıysanız, bu biraz göz korkutucu bir iştir. Aletlerin pul pul dökülmesine yardımcı olmaz ve çoğu zaman aynı işlemi birden çok kez yapmanız gerekir. Neler olup bittiğini anlamak için bulduğum en iyi iki kaynak, USBtinyISP sayfası, https://www.ladyada.net/make/usbtinyisp/ ve gürültü oyuncağını programlamayla ilgili hızlandırılmış kurs, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Bunlar başlamanıza yardımcı olabilir.

Pek çok insan bu kodlama için Arduino'yu seviyor ve normalde basit bir programa çok fazla şişkinlik kattığını düşünmem dışında onu kullanmanın yanlış bir tarafı yok. Ayrıca, C'yi biliyordum ve Arduino'yu bilmiyorum. Belki bir gün, eğer zaman varsa.:) Kod: {{{ #include //SPK'yı açmak için bir pin kullanın /// Typedefs ////////// typedef unsigned char u8; int main(void) { u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // PORTD çıkışı için SPK ayarla =(1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); //Ayar Düğmesi Yüksek PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); //Zamanlayıcıyı Ayarla while (1) { btnState0 = ~PINC & (1 << PC5); btnState1 = ~PINC & (1 << PC4); btnState2 = ~PIND & (1 << PD0); btnState3 = ~PIND & (1 << PD1); btnState4 = ~PIND & (1 << PD2); btnState5 = ~PIND & (1 << PD3); btnState6 = ~PIND & (1 << PD4); if (btnState0) { if (TCNT2 >= 190) { PORTB ^= (1 << PD6); //SPK Pinini Çevir TCNT2 = 0; } } if (btnState1) { if (TCNT2 >= 179) { PORTB ^= (1 << PD6); //SPK Pinini Çevir TCNT2 = 0; } } if (btnState2) { if (TCNT2 >= 159) { PORTB ^= (1 << PD6); //SPK Pinini Çevir TCNT2 = 0; } } if (btnState3) { if (TCNT2 >= 142) { PORTB ^= (1 << PD6); //SPK Pinini Çevir TCNT2 = 0; } } if (btnState4) { if (TCNT2 >= 126) { PORTB ^= (1 << PD6); //SPK Pinini Çevir TCNT2 = 0; } } if (btnState5) { if (TCNT2 >= 119) { PORTB ^= (1 << PD6); //SPK Pinini Çevir TCNT2 = 0; } } if (btnState6) { if (TCNT2 >= 106) { PORTB ^= (1 << PD6); //SPK Pinini Çevir TCNT2 = 0; } } } } }} Sahalar nereden geliyor? Biraz matematik gerekliydi. Atmega 168'deki zamanlayıcı saati 1MHz'de çalışır. Bu, ses için çok hızlı olduğundan, ön ölçekleyiciyi /8 kullanmamız gerekiyor. Daha sonra 1 döngü yapmak için çıkış pinini önce yüksek sonra alçaltmamız gerektiğinden, doğru adımı bulmak için cevabı 2'ye bölmemiz gerekir. Formül şöyle görünür, Pitch to koymak code= (1000000/8)/(Hedef frekans*2) A(440) için bu, değerin bir tamsayı olması gerektiğinden amaçlarımız için 125000/880=142.045 veya 142 olacaktır.. Notaların hedef frekansları hemen hemen her yerde çevrimiçi olarak bulunabilir ve genellikle hepsi aynıdır. Yine de bir sürü Ifs kullanmak yerine bir case ifadesi eklemek ve konuşmacının sesini ve perdesini daha iyi kontrol etmek için PWM kullanmak istiyorum, ancak şimdilik bu işe yarıyor.

Önerilen: