Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
Bu mənim ilk təlimatımdır, buna görə səbr edin.
Musiqi yaratmağı sevirəm və qonaq otağı konsertləri kimi canlı vəziyyətlərdə, oynadıqlarımla sinxron işıq effektləri olanda xoşuma gəlir. Beləliklə, MIDI klaviaturamdakı bir nota vurduğumda və notu vurduğum yerdə LED şeridi təsadüfi rəngdə işıqlandıran Arduino əsaslı bir qutu qurdum.
Təchizat
- Arduino Uno
- Arduino protoxield
- MIDI yuvası
- 1N4148 diod
- 6N138 opto bağlayıcı
- Rezistorlar: 2x 220 Ohm, 1x 10kOhm, 1x 470Ohm
- WS2812B LED şeridi (60 LED)
- qalan tellər
- istilik daraldıcı borular
- Arduino üçün uyğun korpus (plastik qovşaqdan istifadə edirəm)
Sizə də lazım olacaq
- lehimləmə dəmiri və lehim
- MIDI klaviatura və MIDI kabeli
Addım 1: Elektronika
Dövrə olduqca sadədir. Standart bir MIDI girişindən (Arduinonun solunda) və LED şeridinə (Arduinonun sağında) olan əlaqədən ibarətdir. Bütün hissələri protoshieldə yerləşdirin, çox yer var, ümumiyyətlə LED şeridini gücləndirmək üçün xarici enerji təchizatı istifadə etmək məsləhət görülür, ancaq oynadığınız zaman eyni anda yalnız bir neçə LEDin yandığını gördüm. Arduino +5V / GND -ni güc çıxışı olaraq istifadə etməkdə heç bir problem yoxdur. (Bütün düymələri eyni vaxtda və tam sürətlə vurmamağa çalışın.;-)) Xarici bir enerji təchizatı istifadə etmək qərarına gəlsəniz, sadəcə Arduino +5V və GND pinlərinə bağlayın. Bəzi insanlar bu iki xətt arasına 100 uF kondansatör (sxematik olaraq göstərilməmiş) daxil etməyi məsləhət görürlər.
Parçaları protoshielda lehimləyin və LED şeridini sxematik şəkildə göstərildiyi kimi bağlayın.
Addım 2: LED şeridinin bağlanması
LED şeridinin sağ ucunu - giriş ucunu dövrə bağlamaq vacibdir. Mənim zolağımda giriş olaraq qadın konnektoru var və girişdən uzaqlaşan kiçik üçbucaqlar var. Çıxışda bir kişi konnektoru var idi (ehtiyacımız olmayan başqa bir zolağa bağlaya bilmək üçün), buna görə onu kəsdim və Arduinodan gələn üç kabelə lehimlədim. Üç kabeli LED şeridinə bağlamaq və daha az görünən etmək üçün istilik büzücü borulardan istifadə edin.
İstifadə etdiyim LED şeridi arxasında yapışan bantla gəlir, buna görə də MIDI klaviaturasının arxasına asanlıqla yapışdırıla bilər.
Addım 3: Layihəni Klaviaturanıza uyğunlaşdırın
LED şeridini və Arduino kodunu klaviaturanıza uyğunlaşdırmalı ola bilərsiniz. Mənimki 76 düyməyə malikdir və şeridin uzunluğu demək olar ki, klaviatura genişliyidir. Əgər varsa, məsələn 61 düymə, daha qısa bir zolağa ehtiyacınız ola bilər. LED şeridi hər iki LED arasında kəsilə bilər. Doğru hissəni kəsdiyinizə əmin olun, giriş ucu (qadın konnektoru ilə) və çıxış ucu (kişi konnektoru ilə) var, giriş ucunu saxlamalısınız. Kodda #tərifləri dəyişdirin üçün
- Sonunu kəsdikdən sonra zolağınızda qalan LED sayına NUMBER_OF_LEDS,
- Klaviaturanızdakı düymələrin sayına NUMBER_OF_KEYS və
- Ən aşağı açarınızın MIDI meydan nömrəsinə MIN_KEY. Bunu klaviaturanın istifadə kitabçasında tapa bilərsiniz; və ya Linux üçün KMidiMon və ya Windows və ya Mac üçün Pocket MIDI kimi MIDI qeyd nömrəsini göstərən bir vasitədən istifadə edin; və ya cihaz klaviaturanızdakı bütün düymələrə cavab verənə qədər fərqli dəyərlər sınayın
Addım 4: Arduino Kodu
Arduino kodu, Forty Seven Effects -in MIDI kitabxanasından (v4.3.1) və Adafruit -in Adafruit NeoPixel kitabxanasından (v1.3.4) istifadə edir. Bu kitabxanaları Arduino IDE -dən istifadə edərək quraşdırın. Sonra kodu tərtib edin və qalxan bağlanmadan Arduinoya yükləyin (optocoupler yükləməyə mane olan RX pininə bağlıdır). Arduino -nu USB kabeli ilə gücləndirin (USB divar ziyalı istifadə edirəm).
Kodu zövqünüzə uyğun olaraq dəyişdirmək istəyirsinizsə, bunun necə işlədiyinə qısa bir baxış var: Hər döngədə MIDI girişi oxunur. Bir Qeyd On və ya Not Off hadisəsi alınıbsa, MyHandleNoteOn və ya MyHandleNoteOff funksiyaları çağırılır. Hər ikisi də açar nömrəsinin sürətini (yəni nə qədər vurduğunuzu) saxlayan updateVelocityArray funksiyasını çağırırlar. Sürət əvvəllər saxlanıldığından daha yüksəkdirsə, müvafiq LED -in rəngi "cari rəng" olaraq təyin olunur. MIDI hadisələri işləndikdən sonra updateLedArray funksiyası çağırılır. Bu "cari rəngi" yeniləyir (qırmızı, yaşıl və mavi dəyərlər xətti şəkildə müstəqil olaraq dəyişir, aşağı və ya yuxarı ucuna çatana qədər xətti dəyişmə sürəti təsadüfi bir rəqəmə təyin olunur), basılan notların sürətini yavaşca azaldır və rəngini dəyişdirmək məcburiyyətində olan hər bir LED -in rəng dəyərlərini yeniləyir (yeni nota vurulması və ya sürətin azalması səbəbindən). ShowLedArray funksiyası rəngləri "piksellər" adlanan Adafruit_NeoPixel quruluşuna köçürür və faktiki LED -lərin piksel strukturundakı rəngləri göstərməsini təmin edir.
Addım 5: Mümkün Gücləndirmələr…
Bir layihə heç vaxt bitmir. Bunu yaxşılaşdırmaq üçün hər zaman edilə biləcək bir şey var:
- Protoxield o qədər az hissədən ibarətdir ki, bu, həqiqətən də tullantıdır; Eyni təsiri bir Arduino Nano və 15x7 delikli PCB və bəzi qadın pin başlıqları ilə asanlıqla əldə etmək olar.
- MIDI siqnallarından bəziləri itir. NoteOn varsa, müvafiq LED yanmayacaq; bir NoteOff varsa, sönməyəcək (buna görə də LED -lərin sonsuza qədər qalmamasını təmin edən sürət azalmasını tətbiq etdim). Hələ də səbəbini anlamağa çalışıram. Bəlkə də bir zamanlama problemidir və MIDI.read () daha tez -tez çağrılmalıdır.
- MIDI siqnallarından bəziləri səhv oxunur, yəni yanlış LEDlər yanır. Yuxarıdakı nöqtə ilə əlaqələndirilə bilər. Bir az araşdırma lazımdır.
- Dövrə, çox istifadəçi əlaqəsi olmadan (klaviatura çalmaqdan başqa) xoş bir vizual effekt vermək üçün hazırlanmışdır. Bununla birlikdə, rənglərin dəyişdiyi maksimum sürəti dəyişdirə biləcəyiniz oxunan bir potensialiometr (Arduino analoq girişlərindən birini istifadə edərək) əlavə edə biləcəyinizi təsəvvür edə bilərdim (hazırda #define'd MAX_COLOR_CHANGE_SPEED = 20). Və ya iki NoteOn hadisəsi arasındakı ortalama vaxtı ölçün və buna uyğun olaraq MAX_COLOR_CHANGE_SPEED dəyişdirin - yavaş mahnılarda rəng daha yavaş dəyişməlidir.
Addım 6: Bitti
Arduino -nu USB kabeli ilə gücləndirin (USB divar ziyalı istifadə edirəm). MIDI klaviaturanızı MIDI yuvasına qoşun və sürüşməyə başlayın. Bir az yüngül musiqi çalmağımı izləyin (söz, nə qədər pis olsa da, nəzərdə tutulmuşdur).
Tövsiyə:
Google köməkçisi tərəfindən idarə olunan LED matrisi!: 7 addım (şəkillərlə)
Google köməkçisi tərəfindən idarə olunan LED matrisi!: Bu dərslikdə, hər yerdə bir smartfon istifadə edərək formu idarə edə biləcəyiniz Google köməkçisi ilə idarə olunan LED matrisini necə edə biləcəyinizi sizə göstərəcəyəm, buna görə başlayaq
Təyyarə ilə idarə olunan radio idarə olunan ördək: 10 addım (şəkillərlə)
Jet Propelled Radio Controlled Duck: 40+ il əvvəl bir radio nəzarət qayığı almaq və yaxınlıqdakı Park Gölündə istifadə etmək istəyirdim, lakin Park Qapıcısı heç bir gəmiyə icazə verilməyəcəyini açıq şəkildə bildirdi. Bir gəmini ördək kimi gizlətmək üçün bu planı hazırladım. Bir az çatışmazlıq qiymət idi
DIY - Arduino tərəfindən idarə olunan RGB LED Çalarlar: 5 addım (şəkillərlə)
DIY | Arduino tərəfindən idarə olunan RGB LED Çalarlar: Bu gün sizə öz RGB LED Eynəklərinizi necə çox asan və ucuz qura biləcəyinizi öyrədəcəyəm.Bu həmişə ən böyük xəyallarımdan biri olub və nəhayət gerçəkləşdi! bu layihə. Bir PCB istehsalçısıdırlar
Bluetooth Smartphone tərəfindən idarə olunan Smart LED Lampası: 7 addım
Bluetooth Smartphone ilə idarə olunan Smart LED Lampası: Həmişə işıqlandırma cihazlarımı idarə etməyi xəyal edirəm. Sonra kimsə inanılmaz rəngli bir LED lampa etdi. Bu yaxınlarda Youtube -da Joseph Cashanın LED lampasına rast gəldim. Bundan ilham alaraq, əlaqəni saxlayarkən bir neçə funksiya əlavə etmək qərarına gəldim
ARDUINO YUN tərəfindən idarə olunan ROOMBA STEFANO DALL'OLIO tərəfindən Wifi Tətbiqi ilə: 4 Addım (Şəkillərlə)
ARDUINO YUN tərəfindən idarə olunan ROOMBA, STEFANO DALL'OLIO tərəfindən Wifi Tətbiqi ilə: Bu təlimatla, Wifi vasitəsilə Roomba sürmək üçün ARDUINO YUN -u Roomba'ya bağlamaq üçün kodu paylaşıram. Kod və tətbiq tam olaraq özüm tərəfindən yaradılıb və Stefano Dall tərəfindən hazırlanmışdır. Olio.My Roomba Roomba 620 -dir, lakin eyni kodu digər Roomb üçün də istifadə edə bilərsiniz