İçeriğe Geç

#6 PicoBricks ile Ritim Projesine Hakim Olun

24 Nov 2023
#6 Dominate The Rhythm Project With PicoBricks

Hayatımızdaki birçok olay dijitalleşti. Bunlardan biri sesler. Sesin tonu ve şiddeti elektriksel olarak işlenebilmektedir. Böylece notları elektronik olarak çıkarabiliyoruz. Müziği oluşturan en küçük ses birimine nota denir. Her notanın bir frekansı ve yoğunluğu vardır. Yazacağımız kodlar ile frekans ve yoğunluk uygulayarak hangi notanın çalınması gerektiğini ve ne kadar sürmesi gerektiğini ayarlayabiliriz.

Bu projemizde bir şarkının melodisini çalacak bir müzik sistemi hazırlayacağız. zil modülünü kullanın ve Picobricks'li potansiyometre modülü ile ritmi ayarlayın. Programlama terminolojisinde önemli bir yere sahip olan değişkenlerin kullanımını da bu projede öğreneceksiniz.

Ayrıntılar ve Algoritma

Picobricks ile notalarını bildiğimiz her şarkıyı çalabilirsiniz. kullanacağız düğme-Şarkıyı başlatmak için LED modülü, potansiyometre şarkının hızını ayarlamak için modül ve notaları çalmak için zil modülü.

Potansiyometre analog giriş modülüdür. Değişken dirençtir. İçinden geçen akım miktarı çevrildikçe, tıpkı bir musluğun açılıp kapanması gibi artar ve azalır. Bu akımı kodlarla kontrol ederek şarkının hızını ayarlayacağız. Buzzerlar üzerlerinden geçen akımın şiddetine göre ses seviyelerini, voltaj frekansına göre ise ses tonlarını değiştirirler. Microblock’lar ile buzzer modülünden istediğimiz notaları tonlarını ve sürelerini ayarlayarak kolaylıkla kodlayabiliyoruz.

Projede butona basma durumunu kontrol edeceğiz. Düğmeye basıldığında melodinin çalmaya başlamasını sağlayacağız. Melodiyi çalarken adı verilen bir değişken kullanacağız. ritim Notaların çalma sürelerini aynı oranda artırmak veya azaltmak için. Picobricks başladıktan sonra kullanıcının ayarlama yapmasını sağlayacağız. ritim Melodiyi çalarken veya çalmadan önce potansiyometreyle değiştirin. Picobricks açık olduğu sürece potansiyometre değerini (0-1023) 128'e bölüp ritim değişken. Değişkenler kullanıcı veya sensörler tarafından değiştirilebilen değerleri kodlarımızda kullanmak istediğimizde kullandığımız veri yapılarıdır. Kullanıcı şarkıyı başlatmak için butona bastığında notaların belirlenen süreye göre hesaplanan süre boyunca çalınmasını sağlayacak nota kodlarını hazırlayacağız. ritim değişken.

Bileşenler

1X PicoBrick

Bağlantı şeması

Picobricks modüllerini kablolama olmadan kodlayabilir ve çalıştırabilirsiniz. Modülleri panodan ayırarak kullanacaksanız modül bağlantılarını grove kablolarla yapmalısınız.

PicoBricks'in MicroBlock Kodları

Projenin Microblocks kodlarına görseli Microblocks Run sekmesine sürükleyerek veya butona tıklayarak ulaşabilirsiniz: 

 

Mikroblok Çalıştırma sekmesi

PicoBricks'in MicroPython Kodları

 


makine içe aktarma Pininden, PWM, ADC'den donanım picobricklerine erişmek için
utime içe aktarma uyku #time kütüphanesinden

düğme=Pin(10,Pin.IN,Pin.PULL_DOWN)
pot=ADC(Pin(26))
buzzer=PWM(Pin(20))
#giriş ve çıkış pinlerimizi belirleyin
küresel ritim
basıldı = Yanlış

tonlar ={"A3":220,"D4":294,"E4":330,"F4":349}
#tonları tanımlayın

şarkım =["A3", "E4", "E4", "E4", "E4", "E4", "E4", "F4", "E4", "D4", "F4", "E4" ]#şarkımız için gerekli olan tonları doğru sırayla bir sıraya tanımlayalım
noteTime =[1,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1]#dizideki tonlar arasındaki bekleme sürelerini tanımlayın

def çalma tonu(frekans):
    buzzer.duty_u16(6000)
    buzzer.freq(frekans)
#zil sesinin frekanslarını tanımlayın
def playsong(pin):
    küresel preslenmiş

    basılmazsa:
        basılı = Doğru
        for i inrange(len(mysong)):playtone(tones[mysong[i]])sleep(noteTime[i]/ritm+1)
        buzzer.duty_u16(0)
#tonları doğru bekleme süreleriyle çalın
#Son olarak pinlere ne zaman tetikleneceklerini ve bir olay tespit ettiklerinde çağrılacak fonksiyonu söylememiz gerekiyor:
Button.irq(trigger=Pin.IRQ_RISING, handler=playsong)while True:
    ritim= pot.read_u16()
    ritim=int(ritm/6400)+1

PicoBricks'in Arduino C Kodları

 


#katmak
#include "ACROBOTIC_SSD1306.h"

int buzzer =20;
int pot =26;
int butonu=10;//zil, pot ve butonu tanımlayın

int Re =294;
int Mi =330;
int Fa =349;
int La =440;//TONLARI TANIMLAYINvoidsetup(){
  Wire.begin();
  oled.init();
  oled.clearDisplay();pinMode(buzzer,OUTPUT);pinMode(26,INPUT);pinMode(button,INPUT);//giriş ve çıkış pinlerimizi belirleyin}voidloop(){
  int ritim =(analogRead(pot))/146;
  String char_ritm =Dize(ritim);
  oled.setTextXY(3,4);
  oled.putString("Hız: ");
  oled.setTextXY(3,10);
  oled.putString(char_rithm);//x=3'te OLED'de "Hız:" ve hız değerini yazdırın y=4delay(10);if(digitalRead(button)==1){

    oled.clearDisplay();
    oled.setTextXY(3,2);
    oled.putString("Şimdi oynatılıyor...");//x=3 y=4tone(buzzer, La);delay(1000/(ritm+1)); "Hız: " ve OLED üzerindeki hız değerini yazdırır; tone(zil, Mi);delay(500/(ritim+1));ton(zil, Mi);delay(500/(ritm+1));ton(zil, Mi);delay(500/(ritm+) 1));ton(zil, Mi);delay(500/(ritm+1));ton(zil, Mi);delay(500/(ritm+1));ton(zil, Mi);delay(500) /(ritm+1));ton(zil, Fa);delay(500/(ritm+1));ton(zil, Mi);delay(500/(ritm+1));ton(zil, Re) ;delay(500/(ritm+1));tone(zil, Fa);delay(500/(ritm+1));ton(zil, Mi);delay(1000/(ritm+1));// düğmeye basıldığında notaları doğru sırada ve zamanda çalın

    oled.clearDisplay();//ekranı temizle}noTone(zil);//zil sesini durdur}

GitHub Proje Sayfası

Proje teklifi 

Projenizi daha görsel hale getirmek için çalınan notaya göre farklı renkte bir LED yakabilir, nota isimlerini ve çalma hızını ekranda gösterebilirsiniz. OLED ekran.

Önceki Gönderi
Sıradaki Gönderi

Abone olduğun için teşekkürler!

Bu e-posta kaydedildi!

Görünümü satın alın
Seçenekleri Seçin

Seçeneği Düzenle

Stok Bildirimi

Karşılaştır

Ürün Stok KoduDeğerlendirmeAçıklama Kategori Uygunluk Ürün Tipi Diğer Detaylar
this is just a warning
Giriş Yap
Alışveriş Sepeti
0 Ürünler
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment