İçindekiler:

Müzikli Peri Işıkları: 6 Adım (Resimli)
Müzikli Peri Işıkları: 6 Adım (Resimli)

Video: Müzikli Peri Işıkları: 6 Adım (Resimli)

Video: Müzikli Peri Işıkları: 6 Adım (Resimli)
Video: PEMBE GÜNLÜĞÜM - Ecrin Su Çoban. Hayallerinden ve Denemekten Vazgeçme. 2024, Temmuz
Anonim
Image
Image

IanCumming tarafındanYazarın daha fazlasını izleyin:

Arduino İntervalometresi
Arduino İntervalometresi
Sadece Bir Saat Zamanlayıcı Değil
Sadece Bir Saat Zamanlayıcı Değil
Sadece Bir Saat Zamanlayıcı Değil
Sadece Bir Saat Zamanlayıcı Değil
Bir Piksel Termometre
Bir Piksel Termometre
Bir Piksel Termometre
Bir Piksel Termometre

Hakkında: Roketlerden elektroniğe bir şeyler yapmayı seviyorum. IanCumming Hakkında Daha Fazlası »

Herkese Hoş Geldiniz

Neredeyse bayram mevsimi ve çok sayıda dükkan bayram dekorasyonlarını yapmaya başladı, bazı müzikal peri ışıkları yapmanın tam zamanı olduğunu düşündüm!

Adım 1: Kullanılan Parçalar

Kullanılan Parçalar
Kullanılan Parçalar

Aşağıdakileri kullanacağım:

  • 12 LED
  • 12 Akım sınırlayıcı Dirençler
  • 1 ULN 2803 Darlington Transistör Dizisi
  • Bazı Jumper Telleri
  • Piezo Hoparlör
  • Bir Breadboard ve
  • bir Arduino
  • Peri ışıkları dizisini yapmak için bir Ethernet kablosundan 5 tel kullandım

2. Adım: Kod

//GLOBAL VARS int barTime = 1200; // 8/8 = 1000ms bayt nrLEDS = 4; // 4 Base LED, Paralel bayt ledler ekleyebilirsiniz = { 3, 4, 5, 6}; bayt konuşmacı = 11; bayt desenUzunluğu = 64; // kalıp Uzunluğu bayt şarkı Uzunluğu = 51; const bayt şarkı = { // Jingle Bells Verileri 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 3, 30, 1, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 29, 2, 27, 2, 27, 2, 29, 2, 27, 4, 32, 4, 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 2, 30, 2, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 32, 2, 32, 2, 30, 2, 27, 2, 25, 8 }; // Yapı Not Numarasıdır, sonra // 8.'nin sabit bayt modelinde NoteLength = { //Pattern Data 0b0001, 0b0010, 0b0100, 0b1000, //Bitler 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, Dizideki Ledlere karşılık gelir 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b000010, 0b0011, 0b000011, 0b0011, 0b000010, 0b0010, 0b0011, 0b0001, 0b0010, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100b1100, 0b0011, 0b1100b1100b0011, 0b1100b1100b0011, 0b1010, 0b0101, 0b1010 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, };

İlk önce değişkenlerimi ilan ediyorum, ilginç olanlar Song ve Pattern.

  • Şarkı melodiyi saklar; bu durumda Jingle bells'dir.
  • Model, dizideki değerlerin bitlerinde açık ve kapalı konumları saklar.

Özel İşlevler

//FUNCTIONS int noteToHz(int not) { // Not No'yu Dönüştür. to Frekans kayan nokta frekansı = 440 * (pow(1.059463094359, not-21)); // -21 size C3'te not 1'i verir (Sanırım) return int(freq); // Sonuçlar 1hz kadar doğrudur } void lightLEDs(byte PORT_X) { // Kontrol LED'inin Durumu (int q = 0;q

Sahip olduğum iki işlev aşağıdakileri yapacak:

  • Döngüdeki ton işlevi için frekansı hesaplayın
  • fonksiyona geçen değere bağlı olarak LED'leri açar veya kapatır

Kurulum İşlevi

void setup() { //kurulum OUTPUT pinleri pinMode(hoparlör, OUTPUT); for(int t = 0; t < nrLEDS; t++){ pinMode(ledler[t], ÇIKIŞ); } }

Setup fonksiyonunda gerekli pinleri OUTPUT olarak ayarladım.

Döngü İşlevi

void loop() { // Music Loop for (int t = 0; t < şarkıLength; t++) { // Notalar, Uzunluk ve melodiyi çal int nota = notToHz(şarkı[t * 2]); int uzunluk = ((şarkı[(t * 2)+1] * barTime) / 8); ton(hoparlör, nota, uzunluk - 50); // Yanıp sönen ışıklar! lightLED'ler(desen[t % desenUzunluğu]); gecikme(uzunluk); } // Sessiz Döngü int rastgeleSilence = rastgele(1000, 5000); for (int t = 0;t

Ana Döngü işlevinde 2 döngüm var. Bir şarkı döngüsü ve bir sessizlik döngüsü

Şarkı döngüsü, şarkı dizisindeki verileri okuyacak, ton işlevini kullanarak notayı çalacaktır.

Şarkı döngüsü olacak,

  • Şarkı dizisindeki verileri okuyun,
  • Ton işlevini kullanarak notayı çalın, ardından
  • LED'leri aydınlatın, desen dizisini okuyun.

Sessizlik döngüsünde

sadece LED'ler yanıyor

Arduino'yu takın ve kodu yükleyin. (Sonra fişini çekin)

Adım 3: Devrenin Başlatılması

Devreyi Başlatmak
Devreyi Başlatmak
Devreyi Başlatmak
Devreyi Başlatmak
Devreyi Başlatmak
Devreyi Başlatmak
Devreyi Başlatmak
Devreyi Başlatmak

Işık dizisiyle başlayacağım

  • Bir Ethernet kablosundan tel kullandım ve 3 LED'i dört kez paralel olarak lehimledim, LED'leri yaklaşık 2 metreden eşit aralıklarla yerleştirdiğimden emin oldum.
  • Her bir ledin Anotunu tek bir kabloya lehimledim.
  • Daha sonra her bir LED'in Katotu 4 ayrı kabloya. Tabii ki bir dirençle
  • 12 LED'li bir dizi elde etmek için bu işlemi 3 kez tekrarladım ve 5 telin ucuna başlık pinleri koydum

Pozitif ve toprak raylarını breadboard'a bağlayın

Adım 4: ULN2803

ULN2803
ULN2803
ULN2803
ULN2803
ULN2803
ULN2803

ULN2308 Chip'i devre tahtasına yerleştirin

ULN2308, bir transistör dizisi yongasıdır; veri sayfasından görebiliyorum

  • Bu pin 1, pin 18'i "AÇIK" duruma getiren bir giriştir.
  • Pin 2, 17'yi açar. Vesaire.
  • Pim 9 topraklanmış
  • Çipin Pin 9'unu toprak rayına bağlayın
  • Pozitif rayı pim 18'in üzerinde bir şerit olacak şekilde bir terminal şeridine bağlayın. (Nedenini bir dakika içinde göreceksiniz)
  • Çipin 1 numaralı pinini Arduino'nun 3 numaralı pinine bağlayın
  • 2 4'e gider
  • çipin 3'ü 5'e gidiyor ve
  • 4, Arduino'nun 6 numaralı pinine gider
  • LED dizisini breadboard üzerine yerleştirin. Ortak anot telinin bağlandığı şerit 5 volta bağlanır. Peri ışığı pimlerinin geri kalanı çipin 18, 17, 16 ve 15 numaralı pimlerine gitmelidir.

Adım 5: Ses Ekleme

Ses Ekleme
Ses Ekleme
  • Piezo Hoparlörü 2 terminal şeridi arasına bağlayın
  • Piezo elemanının negatif kutbunu toprağa bağlayın ve
  • Hoparlörün diğer ucu pin 11'e

6. Adım: Sonuç

Çözüm
Çözüm
Çözüm
Çözüm

Bana bayram mevsimi olduğunu hatırlatmak için rastgele jingle bells çalacak bir dizi ışık var.

Önerilen: