Sonic Papatya, David Boldevin Engen: 4 addım (şəkillərlə)
Sonic Papatya, David Boldevin Engen: 4 addım (şəkillərlə)
Anonim
Image
Image

Ətrafdakı səsi iki fərqli 4x5 LED -də dörd fərqli tezlikdə davamlı olaraq göstərə bilən kompakt papaq

Bu dərslik, hər hansı bir izdiham arasında fərqlənməyinizi təmin edəcək bir papaq necə düzəldəcəyinizi izah edəcək.

Bu layihə üçün nə lazımdır:

1 Arduino Pro Micro və ya bənzər ölçüdə 16MHz -də işləyən Arduino

40 ədəd 3 mm LED

1 sadə düymə

1 Elektret Mikrofonu

1 Şarj Edilə bilən 3.7V 800mAh 25C 1 Hüceyrəli LiPo Batareya

10 100Ω rezistorlar

1 10kΩ müqavimət

1 220Ω müqavimət

Bir PCB maşınına giriş (Çaplı Devre Kartı)

Ucuz tənzimlənən çəngəlli/klipli papaq və ya sadəcə tənzimlənən qarmaqlı/klipli boyunbağı

Addım 1: PCB çap edin

PCB çap edin
PCB çap edin

Bir dövrə lövhəsi çap edərkən.cmp faylını istehsalçının tələblərinə uyğunlaşdırmaq lazım ola bilər. Bununla birlikdə, orijinaldakı lövhə kifayət qədər qeyri -dəqiq bir üsulla hazırlanmışdır, buna görə əksər istehsalçılar PCB -ni heç bir dəyişiklik etmədən istehsal edə biləcəklər. Şəkillərdə PCB -nin ön və arxasını görə bilərsiniz. Dizayn, lehimləmə deliklərində vias olmadığını və yalnız ayrı yerləşdirilə biləcəyini (birdən çox tərəfi olan PCB -lərdə təbəqələr arasındakı əlaqələr olduğunu) ehtiva edir.

Hər bir işıq, Charlieplexing adlanan bir texnikadan istifadə edərək fərdi LED ünvan matrisindən daha az giriş qovşağına imkan verir, çatışmazlıq, yalnız işığın bir anda açılmasıdır ki, bu da massivin nə qədər böyük olacağına məhdudiyyət qoyur. nəzərəçarpacaq dərəcədə yanıb -sönmədən. Charliplexing iki siqnal 1 və 0 yerinə, üç 1, 0 və Z -ə malikdir. Z çox açıq bir empedansa malik olaraq açıq bir dövrə kimi işləyir. Beləliklə, hər bir işıq, düyünün 1, 0, Z, Z, Z birləşməsində olması ilə açılır, yəni cərəyan bir anda yalnız bir qovşaqdan digərinə keçə bilər.

Addım 2: Hamısını Birlikdə Lehimləmək

Hamısını Birlikdə Lehimləmək
Hamısını Birlikdə Lehimləmək

PCB -də işıqları lehimləyərkən, LED -in müsbət tərəfini ardıcıl olaraq kvadratlara, mənfi tərəfini isə dairəyə lehimləmək çox vacibdir. Bunun əksinə edilməsi koddakı ünvanın yanlış işıqları yandırmasına və uyğunsuzluq birdən çox işığın eyni stimullarla yandırılmasına səbəb olacaq.

Sonra, 10 100Ω rezistorları lentlə bağlayın.

Sonra digər parçaları dövrə diaqramında göstərildiyi kimi bağlayın, arduino USB ilə qoşulduqda doldurulacağı üçün batareyanı birbaşa Arduinoya lehimləmək yaxşıdır. Bütün parçaları PCB arxasına yapışdırmadan əvvəl, serialdakı səhvləri yoxlamalısınız.

Addım 3: Kod Yükləmə və Hata Ayıklama

Yuxarıdakı kodu yükləyin. Yükləndikdə aktivləşdirmək üçün düyməni basın, indi içəriyə işarə edən üçbucaq şəkli papaq üzərində yuxarı və ya aşağıya doğru sürüşməlidir.

Əks təqdirdə, qalan hər şeyi şərh edərkən, boşluq döngəsindəki while (mode = 0) döngəsindəki hər bir işıq üçün fərdi olaraq 1-20 rəqəmi daxil olan Blink (LED) funksiyasından istifadə edin. döngə.

boşluq döngəsi () {

isə (rejim == 0) {

Göz qırpmaq (1); // İşıqların lazım olduğu kimi işlədiyini və hansının işləmədiyini yoxlamaq üçün bir -bir test edin

// Göz qırpmaq (2); // növbəti addım 20 -yə qədər

/* əgər (digitalRead (Düymə) == 0) {

rejimi = 1;

Off ();

turnOn (1);

gecikmə (200);

fasilə;

}

Off (); */ // bu bölmə ayıklama zamanı şərh olunur

}

…..

Hata Ayıklama:

Hər tərəfdə fərqli işıqlar varsa, lehimdə bir problem var və təsirlənmiş işıqları söküb yenidən 2 -ci addımı etməlisiniz.

2 işığın cütü söndürüldükdə viyasalar ola bilər.

İki işıq həmişə birlikdə yanarsa və digərlərindən daha az parlaq olarsa, biri yanlış yolda lehimlənmişdir.

Hər bir işıq ayrı -ayrılıqda yanarsa, ancaq 2 -ci addımı səhv saldığınız kodun yuxarısındakı təlimatlarda təsvir olunan modeli izləməyin.

PCB-də pis əlaqə və ya qısa qapanma nəticəsində digər problemlər yarana bilər.

Xəbərdarlıq: Bu seqment çox texniki və papaq bağlamaq üçün lazımsızdır

Xüsusilə 16MHz saat tezliyi olan bir Arduino üçün spektr analiz kodunu yazdım. Başqa sistemlərdə nə qədər yaxşı işləyəcəyinə tam əmin deyiləm, bütün qrupların çox fərqli reaksiya verməsinə səbəb ola bilər, amma çox dəyişə bilməz.

Təxminən 8, 9 kHz bir nümunə götürmə tezliyi olan təxminən 6,7 ms -də 60 nümunə götürərək işləyir. Sonra onları 4 fərqli şəkildə analiz edərək 4 fərqli tezlik veririk.

Ən yüksək tezlik təhlili, hər bir nümunəni bir sonrakı ilə müqayisə edərək, dəyərini kvadratlaşdıraraq və hər bir nümunə cütü üçün toplayaraq işləyir. Bu, nümunə götürmə tezliyinin yarısı civarında ən yüksək effekti verir, buna görə də 4, 4 kHz ətrafında bir bant keçid filtridir.

Analiz üçün kobud riyazi düstur:

Σ (kvadrat (x [2n-1] -x [2n]))

Sonrakı çox oxşar şəkildə işləyir, ancaq əvvəlcə bir anda iki nümunə əlavə edir. Bu, son sistemin nümunə götürmə tezliyinin yarısını səmərəli şəkildə verir, ən yüksək tezlikləri süzərkən 2, 2kHz ətrafında bir bant keçidi filtri yaradır.

Növbəti sistem eyni şeyi edir, ancaq bir anda 2 nümunə əlavə etmək əvəzinə 440Hz üçün bir bandpass filtrinə çevrilən 10 əlavə edir.

Son analiz ilk 30 nümunəni yekunlaşdırır və son 30 -un cəmiylə müqayisə edir. Bu təsirli olaraq 150Hz üçün bir bandpass filtrinə çevrilir.

Addım 4: Hamısını bir -birinə yapışdırın

Hamısını Birlikdə Yapışdırın
Hamısını Birlikdə Yapışdırın

Arduino-nu PCB-dən ayırmaq vacibdir, çünki təmasda olarsa qısaqapanmaya səbəb ola bilər. Aralarındakı elektrik lenti ilə birlikdə yapışdıraraq edilə bilər. Batareyanın balans üçün bir qanadında, digərində mikrokontrolörün olması da faydalıdır. Bir neçə millimetr uzanaraq özofagusunuza işarə etməli olduğu üçün mikrofon istisna olmaqla, boyunbağının bağlandığı yer olduğu üçün yay qalstukunun mərkəzini kifayət qədər boş saxlamağa çalışmalısınız, bu, danışarkən hər kəs bunun ən aydın olduğunu görəcək.

Unutmayın: papaqların arxa tərəfində heç kim bunu görməyəcəyi üçün estetikadan daha vacibdir.

Tövsiyə: