Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Müəllif tərəfindən daha çox IanCummingFollow:
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
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ı
İşı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
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
- 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ə
Şənlik mövsümü olduğunu xatırlatmaq üçün təsadüfi olaraq zəng çalacaq bir işıq simim var.