K.K. Arduino'da Bossa Şarkısı ve Animasyon: 5 Adım

K.K. Arduino'da Bossa Şarkısı ve Animasyon: 5 Adım

İçindekiler:

Anonim

Sadece diyagramları takip et ve umarım hata yapmadım. Bu benim ilk kez Fritzing'i kullandım ve aradan itibaren breadboard'u ters çevirdiğimi fark ettim, bu yüzden her şeye baştan başlamak zorunda kaldım.

Not: Ton Kütüphanesi Dokümantasyonunun gerektirdiği şekilde 10 ve 11 numaralı pinlere uygun olarak 1000 ohm'luk dirençler bulunmalıdır.

Resmimde, pim 11'e ek olarak 1000 ohm'luk bir direnç daha ekledim. Bunu bas sesinin daha düşük ses seviyesinde çalmasını sağlamak için yaptım.

4. Adım: Kod Yükle

Eskizimi, kullandığım spritelarımı ve besteciye kredi vermek için notaları dahil ettim. Her ne kadar şarkıyı belki üç yerde küçük bir parça değiştirsem de, piezoda kötü geliyordu.

Ana taslak başlıklı: KK_Bossa_Song_PROGMEM_Animation

Adım 5: Nasıl Çalışır?

PROGMEM

İlk önce PROGMEM'in yeni başlayanlar için ne olduğunu ele almam gerektiğini düşünüyorum. PROGMEM, dinamik hafıza veya SRAM'ın aksine değişkenleri program hafızasına kaydetmenin bir yoludur. Bir çizimde çok fazla global değişken varsa, biri SRAM miktarını geçebilir. Bu olduğunda, çizim çalışmaz ve çarpışır. Bu nedenle, bir kişi SRAM içinde yer açmak için tüm değişkenleri program hafızasına taşıyabilir. Ancak değişkenleri program hafızası alanından almak için özel fonksiyonların çağrılması gerekir. Bu zor bir iştir ve zaman zaman çok sinir bozucu olabilir, ancak (SRAM) yer kazanmak için çok uzun dizilerle çalışırken yapılması gereken en iyi şeydir. Daha fazla detay ve örnekler için buraya bakınız.

Şarkı Nasıl Çalışıyor:

Birden fazla ton çalmak için, her ritmi dört ritime böldüm - ki bunlara mini ritimler. Böylece her mini vuruş 16. nota eşittir. Bu küçük vuruşlar, bir notanın ne zaman çalınması gerektiği ve ne zaman bitmesi gerektiği için sayaç görevi görür - bu kadar basit. Gerçekte, mini ritmin tüm parçanın içindeki en küçük nota olması gerekir. 16. notayı seçtim, çünkü çok az eserde 32 nota var. Evet, bazı orkestra eserlerinin 32 notaları var, ama gerçekten bir arduinoda çalmayı istiyor musun? Her halükarda, istersen 32 nota mini vuruşa değiştirmek çok kolay olurdu.

Animasyon Nasıl Çalışır:

Tüm özel karakter dizilerimi ikili, sekizli veya onaltılı olarak yazmak yerine, her şey ondalık olarak yazılmıştır. Aslında 0-31 arasındaki ondalık değerleri kullanarak özel karakter yaratabilirsiniz.

Artık bilgisayar hala tamsayıyı arka uçta ikili değer olarak görüyor, bu yüzden bit işlemlerini kullanarak bu değeri, özel karakter yaratımı için kullanmak üzere ondan bir altbant uzunluğunu almak üzere değiştirebilirsiniz. (not: 16x2 LCD'deki her bölme beş piksel genişliğindedir).

Örneğin: Excel çizelgeme bakarken, kk kaydırıcısındaki ilk beş pikseli 0 - 12 arasındaki sütunlardan istiyorum. Tüm satırın ondalık değeri 896'dır - bu, ikili olarak 0001110000000'dır. Yani, 896'yı sekiz kez sola kaydırırsam, 3'ü alırım - bu ikili olarak 00011'dir.

Özel bir char oluşturmak için yeterli veri almak için sekiz toplam satırda yukarıdaki yapın. Bu onun özü.

Peki neden ondalık değerleri kullanın? Aslında zorunda değilsiniz, tamamen estetik içindir. Bir grup 0 ve 1'i yazmak sizi deli edebilir ve hataya daha çok yer açılabilir.Ayrıca, özel bir karakterin bu kadar çok satır çekmesini de sevmiyorum, bu yüzden bir görüntüyü tek bir satırda sıkıştırıyorum. İkili değerleri kullanıyor olsaydınız, her satır arasında gezinmek için çok uzun olurdu. Demek istediğin her şey bu. Sürprizime göre eskizim aslında iki yönde de çalışıyor (test ettim).