Mündəricat:

Musiqili Pəri İşıqları: 6 addım (şəkillərlə)
Musiqili Pəri İşıqları: 6 addım (şəkillərlə)

Video: Musiqili Pəri İşıqları: 6 addım (şəkillərlə)

Video: Musiqili Pəri İşıqları: 6 addım (şəkillərlə)
Video: 6 cı sinifdə təcrübə ❤❤❤ 2024, Noyabr
Anonim
Image
Image

Müəllif tərəfindən daha çox IanCummingFollow:

Arduino İntervalometri
Arduino İntervalometri
Yalnız bir Saat Taymeri deyil
Yalnız bir Saat Taymeri deyil
Yalnız bir Saat Taymeri deyil
Yalnız bir Saat Taymeri deyil
Bir pikselli termometr
Bir pikselli termometr
Bir pikselli termometr
Bir pikselli termometr

Haqqında: Raketdən elektronikaya qədər şeylər etməyi sevirəm. IanCumming haqqında daha çox »

Hərkəsə Xoş gəlmisiniz

Demək olar ki, şənlik mövsümüdür və bir çox mağaza bayram bəzəklərini çıxarmağa başladı, düşündüm ki, musiqili pəri işıqları qurmağın tam vaxtıdır!

Addım 1: İstifadə olunan hissələr

İstifadə olunan hissələr
İstifadə olunan hissələr

Aşağıdakıları istifadə edəcəyəm:

  • 12 ədəd LED
  • 12 Cari məhdudlaşdırıcı rezistorlar
  • 1 ULN 2803 Darlington Transistor Dizisi
  • Bəzi jumper telləri
  • Piezo dinamik
  • Çörək lövhəsi və
  • bir Arduino
  • Pəri işıqlarının simini düzəltmək üçün Ethernet kabelindən 5 tel istifadə etdim

Addım 2: Kod

// GLOBAL VARS int barTime = 1200; // 8/8 = 1000ms bayt nrLEDS = 4; // 4 Əsas LED, Paralel olaraq çoxlu bayt əlavə edə bilərsiniz = {3, 4, 5, 6}; bayt dinamik = 11; bayt modelLength = 64; // model Length byte songLength = 51; const bayt mahnısı = {// Jingle Bells Məlumatları 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}; // Struktur Qeyd Nömrəsidir sonra // NoteLength 8 -ci const bayt modelində = {// Pattern Data 0b0001, 0b0010, 0b0100, 0b1000, // Bits 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001, 0b1000, 0b1100, 0b0100, 0b0100, 0b0100 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b0000, 0b1100, 0b1100, 0b0000 0b0011, 0b1100, 0b0011, 0b1100, 0b0011,};

Əvvəlcə dəyişənlərimi elan edirəm, ən maraqlısı mahnı və naxışdır.

  • Mahnı melodiyanı saxlayır; bu halda Jingle zəngləridir.
  • Nümunə, serialdakı dəyərlərin bitlərində açılma və sönmə mövqelərini saxlayır.

Xüsusi funksiyalar

// FUNKSİYALAR int noteToHz (int note) {// Nr. to Frequency float freq = 440 * (pow (1.059463094359, qeyd-21)); // -21, C3 -də 1 notu verir (Düşünürəm) return int (freq); // Nəticələr 1hz} boş işığı LEDləri (PORT_X bayt) {// Control LED -in vəziyyətini (int q = 0; q

Sahib olduğum iki funksiya aşağıdakıları edəcək:

  • Döngədəki ton funksiyası üçün tezliyi hesablayın
  • LED -in yandırılması və ya söndürülməsi funksiyaya verilən dəyərdən asılıdır

Quraşdırma funksiyası

void setup () {// setup OUTPUT pinləri pinMode (dinamik, Çıxış); for (int t = 0; t <nrLEDS; t ++) {pinMode (led [t], ÇIXIŞ); }}

Quraşdırma funksiyasında Çıxış üçün lazım olan pinləri təyin etdim.

Döngə funksiyası

void loop () {// Music Loop for (int t = 0; t <songLength; t ++) {// Notes, Uzunluq və melodiyanı çalın int note = noteToHz (mahnı [t * 2]); int uzunluğu = ((mahnı [(t * 2) +1] * barTime) / 8); ton (dinamik, qeyd, uzunluq - 50); // yanıb -sönən işıqlar! yüngül LEDlər (model [t % modelLength]); gecikmə (uzunluq); } // Silence Loop int randomSilence = təsadüfi (1000, 5000); üçün (int t = 0; t

Main Loop funksiyasında 2 döngəm var. Bir mahnı döngəsi və bir səssizlik döngəsi

Mahnı döngəsi mahnı serialındakı məlumatları oxuyacaq, ton funksiyasından istifadə edərək notu oxuyacaq

Mahnı döngəsi olacaq,

  • Mahnı dizisindəki məlumatları oxuyun,
  • Sonra ton funksiyasından istifadə edərək notu oxuyun
  • LED -ləri işıqlandırın, oxu nümunəsi silsiləsini.

Səssizlik döngəsində

yalnız LEDlər yanır

Arduino'yu qoşun və kodu yükləyin. (Sonra ayırın)

Addım 3: Dövrənin Başlanması

Dövrənin Başlanması
Dövrənin Başlanması
Dövrənin Başlanması
Dövrənin Başlanması
Dövrənin Başlanması
Dövrənin Başlanması
Dövrənin Başlanması
Dövrənin Başlanması

İşıq tellərindən başlayacağam

  • Ethernet kabelindən tel istifadə etdim və 4 LED -i paralel olaraq 4 dəfə lehimlədim ki, LED -ləri təxminən 2 metrdən bərabər şəkildə boşaldın
  • Hər bir anodu tək bir telə lehimlədim.
  • Sonra hər LED -in Katodunu 4 ayrı telə bağlayın. Əlbəttə ki, bir rezistorla
  • 12 LEDdən ibarət bir sim almaq üçün bu prosesi 3 dəfə təkrar etdim və 5 telin ucuna baş pinləri qoydum.

Müsbət və yer raylarını çörək taxtasına qoşun

Addım 4: ULN2803

ULN2803
ULN2803
ULN 2803
ULN 2803
ULN 2803
ULN 2803

ULN2308 çipini çörək taxtasına yerləşdirin

ULN2308, tranzistorlu bir sıra çipidir; məlumat vərəqindən görə bilərəm

  • Bu pin 1, pin 18 -i "ON" vəziyyətinə gətirən bir girişdir.
  • 2 -ci pin 17 -yə çevrilir. Və s.
  • Pin 9 zəmindir
  • Çipin 9 -cu pinini yer rayı ilə bağlayın
  • Müsbət rayı 18 -ci pindən yuxarı bir terminal zolağına bağlayın (Bunun səbəbini bir dəqiqədən sonra görəcəksiniz)
  • Çipin 1 -ci pinini Arduinonun 3 -cü pininə qoşun
  • 2 4 -ə gedir
  • Çipdən 3 -ü 5 -ə gedir
  • 4 Arduino 6 pininə gedir
  • LED simini çörək taxtasına yerləşdirin. Ümumi anod telinin 5 volta qoşulmuş zolağa bağlandığı yer. Pəri işıq sancaqlarının qalan hissəsi çipin 18, 17, 16 və 15 -ci pinlərinə getməlidir.

Addım 5: Səs əlavə edin

Səs əlavə etmək
Səs əlavə etmək
  • Piezo Dinamikini 2 terminal zolağı arasına bağlayın
  • Piezo elementinin mənfi qütbünü yerə və qoşun
  • Dinamikin digər ucu pin 11 -ə

Addım 6: Nəticə

Nəticə
Nəticə
Nəticə
Nəticə

Şənlik mövsümü olduğunu xatırlatmaq üçün təsadüfi olaraq zəng çalacaq bir işıq simim var.

Tövsiyə: