İçindekiler:
- Adım 1: Müzik Notalarını Dijital Notalara Dönüştürün: Gecikme Değerleri
- Adım 2: Müzik Notalarını Dijital Notalara Dönüştürün: Hertz Değerleri
- Adım 3: Devre Tasarımı
- 4. Adım: Kod Yükleme: Nasıl Yapılır
- Adım 5: Kod Yükleme: Tüm Bunlar Ne Anlama Geliyor?
- Adım 6: Bitti!!
Video: Arduino İle Bir Şarkıyı Dijitalleştirin: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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
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
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ı
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!!
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:
Şarkıyı Takip Eden Led Yanıp Sönen Hack-O-Lantern!: 6 Adım
Şarkıyı takip eden Led yanıp sönen Hack-O-Lantern!: Herkesin en sevdiği Cadılar Bayramı şarkısına Çok Renkli LED'leri çalan ve yanıp sönen bir jack-o-lantern yapın
Hi-fi Sisteminizi Dijitalleştirin: 6 Adım (Resimlerle)
Hi-fi Sisteminizi Dijitalleştirin: Bu Eğitilebilir Kitapta size analog hi-fi sistemimi nasıl dijitalleştirdiğimi ve böylece web radyosu, NAS'ımda depolanan müzik koleksiyonuna erişimi vb. nasıl gerçekleştirdiğimi göstermek istiyorum. Uygulama esas olarak bir Raspberry Pi, bir Hifiberry HAT ve bir dokunuş
ESP32 ile PWM - Arduino IDE ile ESP 32'de PWM ile LED Karartma: 6 Adım
ESP32 ile PWM | Arduino IDE ile ESP 32'de PWM ile LED Karartma: Bu talimatta Arduino IDE & PWM temel olarak herhangi bir MCU'dan analog çıkış üretmek için kullanılır ve bu analog çıkış 0V ile 3.3V (esp32 durumunda) arasında herhangi bir şey olabilir & itibaren
Herhangi Bir Şarkıyı Mp3'e Dönüştürün: 7 Adım
Herhangi Bir Şarkıyı Mp3'e Dönüştür: Bana nasıl olduğunu gösterdiğini las vegas'a borçluyum. bunu sadece benim gibi aptal olanlar için gönderiyorum*güncelleme* trebuchet03 sayesinde m4p olan dosyaları aktaramıyorsun ama mp4 fileslas vegases ana sayfasıyla yapabilirsin bunu neden yapalım? peki benim mp3 çalarım
Bir AVR (arduino) Başka Bir Arduino İle Nasıl Programlanır: 7 Adım
Bir AVR (arduino) Başka Bir Arduino ile Nasıl Programlanır: Bu talimat aşağıdaki durumlarda yararlıdır: * arduino'nuzu atmega168 ile aldıysanız ve yerel elektronik mağazanızdan bir atmega328 satın aldıysanız. Arduino önyükleyicisi yok * arduino kullanmayan bir proje yapmak istiyorsunuz - sadece bir