İçindekiler:

Arduino İle Bir Şarkıyı Dijitalleştirin: 6 Adım
Arduino İle Bir Şarkıyı Dijitalleştirin: 6 Adım

Video: Arduino İle Bir Şarkıyı Dijitalleştirin: 6 Adım

Video: Arduino İle Bir Şarkıyı Dijitalleştirin: 6 Adım
Video: YSM.Pir paketinin içerisinde hangi modüller var? 2024, Kasım
Anonim
Arduino ile Bir Şarkıyı Dijitalleştirin
Arduino ile Bir Şarkıyı Dijitalleştirin

En sevdiğim iki dersi birleştiren bir proje yaratmak istedim: bilim ve müzik. Bu iki alanı birleştirmenin tüm yollarını düşündüm ve notanın perdesini Hertz'de görüntülerken bir Arduino'nun Fur Elise oynamasının ilginç olacağını düşündüm. Şimdi, inşa etmeye başlayalım!

Bir Arduino Uno veya Mega, bir çok jumper kablosu, Piezo buzzer, breadboard, tüm silecek pimleri yerinde olan 16*2 LCD ekran ve 10k Potansiyometreye ihtiyacınız olacak). İnşaata başlamadan önce tüm bu malzemeleri bir araya getirmek en iyisidir.

Adım 1: Müzik Notalarını Dijital Notalara Dönüştürün: Gecikme Değerleri

Müzik Notalarını Dijital Notalara Dönüştürün: Gecikme Değerleri
Müzik Notalarını Dijital Notalara Dönüştürün: Gecikme Değerleri

Notadaki bir notu dijital olarak dijital eşdeğerine dönüştürmenin iki adımı vardır. İlk olarak notun ne kadar sürdüğünü milisaniye cinsinden yazmamız gerekecek. Bu görev için çevrimiçi bulunan bir çizelge kullandım. Bir notanın yarım nota, dörtlük nota, sekizlik nota vb. olmasına göre nota uzunluğunu milisaniye olarak yazdım. Bu sayıları kodumda delay() olarak görebilirsiniz; fonksiyonu ve parantez içindeki sayı bu adımda belirlediğimiz milisaniye cinsinden gecikme değeri olacaktır.

Adım 2: Müzik Notalarını Dijital Notalara Dönüştürün: Hertz Değerleri

Müzik Notalarını Dijital Notalara Dönüştürün: Hertz Değerleri
Müzik Notalarını Dijital Notalara Dönüştürün: Hertz Değerleri

Bu adıma başlamadan önce, bazı teknik terimleri tanımlayayım. Bir notanın "değeri", "perde", "değer" ve "nota" kelimeleri ile birbirinin yerine kullanılabilir. Şimdi, şarkının her notasını notadan okumalısınız. Daha sonra her notayı, çevrimiçi olarak kolayca bulabileceğiniz bir Hertz tablosuna müzik kullanarak Hertz'e çevirmeniz gerekecek. Hatırlanması gereken bir şey, ortadaki C'nin tabloda C4 olarak listelenmesi ve daha yüksek bir oktavın C5'tir vb. Bu notaların tümü Hertz'e kopyalandığında, değerleri tone(x,y,z) işlevine yerleştireceksiniz; burada X pin numarası veya const int'dir, daha sonra açıklayacağım değişkenleri tanımlamanın bir yolu. Y, az önce kopyaladığınız Hertz değeri olacak ve Z, notun milisaniye cinsinden en yakın yüzdeye yuvarlanmış süresi olacaktır. Gecikme(); değerler notun süresi olacaktır. Şimdi müziği çalabilecek devreyi tasarlayalım.

Adım 3: Devre Tasarımı

Devre tasarımı
Devre tasarımı

Artık tüm notaları bir bilgisayarın anlayabileceği dijital değerlere çevirdiğimize göre, devreyi kurmanın zamanı geldi. Bir devre tahtası alarak ve 14. sıradaki ilk pimin (GND) olduğu LCD ekranı yerleştirerek başlayın. Zil sesini istediğiniz yere yerleştirin ve yanına bir potansiyometre yerleştirin. Amaç, kabloların dağınıklığını en aza indirmek için her şeyi hizalamak. Arduino'yu breadboard'un yanına yerleştirin ve 5v pinini breadboard'un pozitif rayına ve topraklama pinini negatif raya bağlayın. Artık Arduino ile bileşenler arasındaki jumperları bağlamaya hazırız.

Şimdi LCD üzerindeki pinlerden ve bunların nasıl kablolanacağından bahsedelim.

GND toprak anlamına gelir, bu doğru akımdaki negatif teldir. GND'yi breadboard'un negatif rayına bağlayın.

VCC, Ortak Kollektörde Gerilim anlamına gelir ve burası 5 voltluk güç kaynağınızı (pozitif güç hattı) bağladığınız yerdir.

VO, Kontrast anlamına gelir, bunu potansiyometrenin orta pimine bağlayın. Potansiyometrenin sol pimini pozitif güç rayına ve sağ pimi toprak güç rayına bağlayın.

RS, Kayıt Seçimi anlamına gelir ve bu, Arduino tarafından ekrana verilerin nerede saklanacağını söylemek için kullanılır. Bu pimi Arduino'daki pim 12'ye bağlayın.

RW, Arduino'nun ekranın göstermek için programladığınız şeyi gösterip göstermediğini kontrol etmek için kullandığı Okuma/Yazma pini anlamına gelir. Bu pimi breadboard üzerindeki negatif raya bağlayın.

E, LCD'ye hangi piksellerin etkinleştirileceğini (açılacağını) veya devre dışı bırakılacağını (kapatılacağını) söyleyen Etkinleştir anlamına gelir. Bu pini Arduino pin 11'e bağlayın.

D4, D5, D6 ve D7, görüntülenen karakterleri ve harfleri kontrol eden Ekran pinleridir. Bunları sırasıyla Arduino pinleri 5, 4, 3 ve 2'ye bağlayın.

Bazen LED olarak etiketlenen Pin A, arka ışık için LED anotudur. Bunu bir kabloyla veya 220 ohm'luk bir dirençle pozitif güç rayına bağlayın. Direnç, LCD'yi ayırdığı için daha uzun kullanım için daha iyidir, ancak cihaz gece gündüz kullanılmayacaksa, dirence ihtiyacınız yoktur.

Pin K, bazen de (kafa karıştırıcı bir şekilde) LED olarak etiketlenir, LED topraklama pimidir. Bunu toprak güç rayına bağlayın.

4. Adım: Kod Yükleme: Nasıl Yapılır

Arduino'nuzu bilgisayarınızın USB'sine takın. Arduino IDE programlayıcısını kullanarak aşağıdaki kodu yükleyin.

#Dahil etmek

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

geçersiz kurulum() {

// LCD'nin sütun ve satır sayısını ayarla: lcd.begin(16, 2); // LCD'ye bir mesaj yazdırın. lcd.print("Hertz Aralığı:!"); gecikme(1000); void loop() { // e4 gecikmesini oynat(600);//0,6 saniyeliğine duraklat ton (10, 329.63, 300);//e'yi pin 10'daki zile çal, son.3 saniye lcd.print(" 329.63");//LCD'de bir mesaj göster "329.63"

gecikme(350);//.35 saniye gecikme

lcd.clear();//LCD'yi temizle ve sonraki mesaj için sıfırla // d4# tone(10, 311.13, 300); lcd.print("311.13"); gecikme(350); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(350); lcd.clear(); // d4# tonunu çal(10, 311.13, 300); lcd.print("311.13"); gecikme(350); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(350); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293.66, 300); lcd.print("293.66"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 900); lcd.print("220.0"); gecikme(1000); lcd.clear();//line60//helpsave//avrdude.failure.eeprom // d3 tonunu çal(10, 146.83, 300); lcd.print("146.63"); gecikme(350); lcd.clear(); //f3 tonunu çal(10, 174.61, 300); lcd.print("174.61"); gecikme(400); lcd.clear(); //a3 ton çal(10, 220, 300); lcd.print("220"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 900); lcd.print("246.94"); gecikme(1000); lcd.clear();

// e3 oyna

ton(10, 164.81, 300); lcd.print("164.81"); gecikme(400); lcd.clear(); // g3# tonunu çal(10, 207.65, 300); lcd.print("207.65"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 900); lcd.print("261.63"); gecikme(1000); lcd.clear(); //e tonu çal(10, 164.81, 300); lcd.print("164.81"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // d4# tonunu çal(10, 311.13, 300); lcd.print("311.13"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // d4# tonunu çal(10, 311.13, 300); lcd.print("311.13"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293.66, 300); lcd.print("293.66"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 900); lcd.print("220.0"); gecikme(1000); lcd.clear(); // d3 tonunu çal(10, 146.83, 300); lcd.print("146.83"); gecikme(400); lcd.clear(); // f3 tonunu çal(10, 174.61, 300); //eeprom 20--6 evet hayır, flaş 65--0 hayır lcd.print("174.61"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 300); lcd.print("220.0"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 900); lcd.print("246.94"); gecikme(1000); lcd.clear(); // f3 tonunu çal(10, 174.61, 300); lcd.print("174.61"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 900); lcd.print("220.0"); gecikme(1000); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293.66, 300); lcd.print("293.66"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 900); lcd.print("329.63"); gecikme(1000); lcd.clear(); // g3 tonunu çal(10, 196, 300); lcd.print("196.0"); gecikme(400); lcd.clear(); // f4 tonunu çal(10, 349.23, 300); lcd.print("349.23"); gecikme(400); lcd.clear(); //e4 tonunu çal(10, 329.23, 300); lcd.print("329.23"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293.63, 900); lcd.print("293.63"); gecikme(1000); lcd.clear(); // e3 tonunu çal(10, 164.81, 300); lcd.print("164.81"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293,63, 300); lcd.print("293.63"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 900); lcd.print("261.63"); gecikme(1000); lcd.clear(); // d3 tonunu çal(10, 146.83, 300); lcd.print("146.83"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293.63, 300); lcd.print("293.63"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 900); lcd.print("246.94"); gecikme(1000); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // d4# tonunu çal(10, 311.13, 300); lcd.print("311.13"); gecikme(350); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(350); lcd.clear(); // d4# tonunu çal(10, 311.13, 300); lcd.print("311.13"); gecikme(350); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(350); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293.66, 300); lcd.print("293.66"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 900); lcd.print("220.0"); gecikme(1000); lcd.clear(); // d3 tonunu çal(10, 146.83, 300); lcd.print("146.83"); gecikme(350); lcd.clear(); //f3 tonunu çal(10, 174.61, 300); lcd.print("174.61"); gecikme(400); lcd.clear(); //a3 ton çal(10, 220, 300); lcd.print("220.0"); gecikme(400); // b3 lcd.clear() oynat; ton(10, 246.94, 900); lcd.print("246.94"); gecikme(1000); lcd.clear(); // e3 tonunu çal(10, 164.81, 300); lcd.print("164.81"); gecikme(400); lcd.clear(); // g#3 tonunu çal(10, 207.65, 300); lcd.print("207.65"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 900); lcd.print("261.63"); gecikme(1000); gecikme(300); lcd.clear(); //e3 tonunu çal(10, 164.81, 300); lcd.print("164.81"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // d4# tonunu çal(10, 311.13, 300); lcd.print("311.13"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // d4# tonunu çal(10, 311.13, 300); lcd.print("311.13"); gecikme(400); lcd.clear(); // e4 tonunu çal(10, 329.63, 300); lcd.print("329.63"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // d4 tonunu çal(10, 293.66, 300); lcd.print("293.66"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 900); lcd.print("220.0"); gecikme(1000); lcd.clear(); // d3 tonunu çal(10, 146.83, 300); lcd.print("146.83"); gecikme(400); lcd.clear(); // f3 tonunu çal(10, 174.61, 300); lcd.print("174.61"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 300); lcd.print("220.0"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 900); lcd.print("246.94"); gecikme(1000); lcd.clear(); // f3 tonunu çal(10, 174.61, 300); lcd.print("174.61"); gecikme(400); lcd.clear(); // c4 tonunu çal(10, 261.63, 300); lcd.print("261.63"); gecikme(400); lcd.clear(); // b3 tonunu çal(10, 246.94, 300); lcd.print("246.94"); gecikme(400); lcd.clear(); // a3 ton çal(10, 220, 900); lcd.print("220.0"); gecikme(1000); lcd.clear(); }

Adım 5: Kod Yükleme: Tüm Bunlar Ne Anlama Geliyor?

Kodu anlayabilmeniz için bazı fonksiyonları İngilizce olarak tanımlayalım.

ton(x,y,z); = z milisaniye boyunca x pimindeki sesli uyarıcıya y Hertz perdesi ile bir ton çalın.

lcd.print("XYZ"); = XYZ karakterlerini içeren bir mesajı LCD ekrana yazdırın. (örneğin, Hertz perdesini görüntüleyin)

gecikme(x); = x milisaniye için duraklama.

const int X=Y = pin Y'ye sabit bir X değişkeni ayarlayın ve aygıta görevler atamak için X veya Y'yi kullanın.

lcd.clear(); = LCD ekranı temizleyin ve yeni bir görüntü için sıfırlayın

pinMode(X, ÇIKIŞ); = çıkış modu için X pinini ayarla

Tüm bu işlevleri anladıktan sonra, bir şarkıyı çevirirken topladığınız verilerle değişkenleri kolayca değiştirebilir ve ardından kendi şarkınızı kodlayabilirsiniz!

Adım 6: Bitti!!

Bitti!!!
Bitti!!!
Bitti!!!
Bitti!!!

Ya Fur Elise çalan ve nota değerlerini Hertz cinsinden gösteren bir Arduino'nuz var ya da seçtiğiniz şarkının melodisini çalan ve göstermek istediğiniz metni görüntüleyen bir Arduino yaptınız. Bu öğreticiyi ziyaret ettiğiniz için teşekkür ederiz ve Arduino'daki bu projeyi umarım.

Önerilen: