Mündəricat:
- Addım 1: Material toplayın
- Addım 2: Dövrə qurmaq
- Addım 3: Əlcəyin dizaynı
- Addım 4: Lehimləmə
- Addım 5: Kodlaşdırma
- Addım 6: Dəyişikliklər
Video: Ritm Əl: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Bu cyberglove, doğru zamanda doğru hərəkəti etməkdir.
İşıqlar qolunuzdan (dirsəyinizdən) əlinizə gedir və işıqlar əlinizə çatanda barmaqlarınızı mini fotoselə basmalısınız.
Əlinizi mini fotoselə doğru anda basarsanız, ledlər yaşıllaşır. Əks təqdirdə, ledlər qırmızıya çevrilir.
Addım 1: Material toplayın
- Bir əlcək
- Əlcəyi daha uzun etmək üçün parça
- WS2812B LED şeridi
- Tellər
- Arduino
- Mini foto satış
Addım 2: Dövrə qurmaq
Əvvəlcə led şeridi arduinoya bağlayın. Arduino üzərindəki +5v -ni 5v -ə bağlayaraq bunu edə bilərsiniz. Din arduinoda A0 -a, GND isə arduino -da GND -yə bağlanmalıdır.
Ayrıca, mini fotoselini arduino -ya 5v telinə led zolaqdan və eyni mənbədən arduino -da PIN 6 -ya bağlayaraq bağlamalısınız. Mini fotoselin digər tərəfi led şeriddən GND telinə bağlanmalıdır
Addım 3: Əlcəyin dizaynı
Əlcək, led şeritlərə uyğun ölçüdə olmalıdır. Ledlər daha həzz almaq üçün hizalanmalıdır.
Bu oyun üçün qolundan istifadə etməlisən və sərbəst hərəkət etmək istəyirsən. Bu, arduino əlcək taxaraq həyata keçirilə bilər. Arduinonu əlcəyə yapışdırmaq üçün bərkidici kimi cırtdan istifadə etdim. Daha çox sabitlik əldə etmək üçün əlcəyin ətrafına və arduinonun ətrafına bir ip qoya bilərsiniz.
Mini fotosel əlcəyin içərisinə tikilmişdir, belə ki, yerində qalacaq.
Nəhayət daha yaxşı görünməsi üçün telləri gizlətməlisiniz. Bu, tellərin üstünə tikiləcək parça ilə edilə bilər.
Addım 4: Lehimləmə
İndi lehimlə bağlayıcı telləri dövrədən etibarlı edə bilərsiniz.
Addım 5: Kodlaşdırma
// Əsas gündəlik NeoPixel zolaq test proqramı.
// Ən etibarlı əməliyyat üçün NEOPIXEL ƏN İYİ TƏCRÜBƏLƏR: // - NeoPixel şeridinin + və - əlaqələri arasında 1000 uF CAPACITOR əlavə edin. // - mikrokontrolör lövhəsi ilə ilk piksel arasındakı kabel uzunluğunu minimuma endirin. //-NeoPixel zolağının DATA-IN 300-500 OHM Rezistorundan keçməlidir. // - NeoPixelləri CANLI bir dövrə bağlamaqdan çəkinin. Lazım gələrsə, DAİMA // əvvəlcə GROUND (-), sonra +, sonra məlumatları birləşdirin. //-5V gücündə NeoPixel şeridi olan 3.3V mikrokontrolördən istifadə edərkən // məlumat xəttində MƏNTİQİ SƏVİYYƏ DÖYÜŞTÜRÜCÜ TƏCVİQ EDİLİR. // (Bunları atmaq iş masanızda yaxşı işləyə bilər, ancaq sahədə uğursuz ola bilər)
#include #ifdef _AVR_ #include // 16 MHz Adafruit Biblo üçün tələb olunur #endif
// Arduino -da hansı pin NeoPixel -ə bağlıdır? // Bir Əşyədə və ya Gemmada bunu 1 -ə dəyişdirməyi təklif edirik: #define LED_PIN 6
// Arduino -ya neçə NeoPixel qoşulub? #LED_COUNT 60 təyin edin
// NeoPixel şeridi obyektimizi elan edin: Adafruit_NeoPixel şeridi (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Ağ rəng, default bool üçün tıklandığındaDüzgün = yanlış; // Arqument 1 = NeoPixel şeridindəki piksellərin sayı // Arqument 2 = Arduino pin nömrəsi (əksəriyyəti etibarlıdır) // Arqument 3 = Piksel tipli bayraqlar, lazım olduqda əlavə edin: // NEO_KHZ800 800 KHz bit axını (əksər NeoPixel məhsulları/ WS2812 LEDləri) // NEO_KHZ400 400 KHz (klassik 'v1' (v2 deyil) FLORA pikselləri, WS2811 sürücüləri) // NEO_GRB Piksellər GRB bit axını üçün bağlanmışdır (əksər NeoPixel məhsulları) // NEO_RGB Piksellər RGB bit axını üçün bağlanmışdır (v1 FLORA pikselləri), v2 deyil) // NEO_RGBW Pikselləri RGBW bit axını (NeoPixel RGBW məhsulları) üçün bağlanmışdır
// setup () funksiyası-başlanğıcda bir dəfə çalışır --------------------------------
void setup () {// Bu xətlər xüsusi olaraq Adafruit Trinket 5V 16 MHz -i dəstəkləmək üçündür. // İstənilən digər lövhə, bu hissəni silə bilərsiniz (ancaq zərər vermədən): #if müəyyən edilmişsə (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinket-ə məxsus kodun SONU.
pinMode (A0, GİRİŞ); strip.begin (); // NeoPixel zolaq obyektini (TƏLƏB EDİR) strip.show () başlatın; // ASAP strip.setBrightness (10) ən qısa müddətdə bütün pikselləri söndürün; // BRIGHTNESS -i təxminən 1/5 (maksimum = 255) olaraq təyin edin}
// loop () funksiyası-lövhə açıq olduğu müddətdə dəfələrlə işləyir ---------------
void loop () {clickedClaimly = teatrChaseOne (rəng); if (tıklandıqda Düzgün) {color = strip. Color (0, 255, 0); } başqa {color = strip. Color (255, 0, 0); }}
// Cizgi effektləri yaratmaq üçün bəzi funksiyalarımız -----------------
// Teatr-marquee üslubunda işıqları təqib etmək. Rəng (32 bitlik dəyər, // a la strip. Color (r, g, b) yuxarıda qeyd edildiyi kimi) və çərçivələr arasında gecikmə müddəti (ms olaraq) // keçin. bool teatrChaseOne (uint32_t rəng) {bool doğru = yanlış; bool clickedWrong = yalan; for (int index = 0; index 800) {// dəyər işığı sensoru, əgər (indeks <16) {// 2 ədəd bitməzdən əvvəl işıqlandırırsa, color = strip. Color (255, 0, 0); // qırmızı rəngli ledlər clickedWrong = doğru; // səhv tıklandıqda LEDlər qırmızıya çevrilir} başqa halda (! clickedWrong) {// səhv deyilsə color = strip. Color (0, 255, 0); // yaşıl rəngli ledlər doğru = doğru; // düzgün tıklandıqdan sonra ledlər yaşıl olur}} strip.clear (); strip.setPixelColor (17 - indeks, rəng); // birinci sıra led işıqlar strip.setPixelColor (18 + indeks, rəng); // ikinci sıra led işıqlar strip.setPixelColor (53 - indeks, rəng); // üçüncü sıra led işıqlar strip.show (); gecikmə (300); } düzgün qayıt; }
Addım 6: Dəyişikliklər
Bəzi dəyişikliklər etdim. Birincisi, "Ritm əlini" istifadə etməyimin daha rahat olması üçün arduinonu gizlətdim, ikincisi kodu bir az dəyişdim. Kodu elə dəyişdim ki, lazımi anda basdığınız zaman rəng yaşıllaşır və LEDlər daha sürətli hərəkət edir. Beləliklə, LED Swill əvvəlkindən 10% daha sürətli olur. Bu oyunu daha maraqlı edir
Kod indi belədir:
// Əsas gündəlik NeoPixel zolaq test proqramı. // Ən etibarlı əməliyyat üçün NEOPIXEL ƏN İYİ TƏCRÜBƏLƏR: // - NeoPixel şeridinin + və - əlaqələri arasında 1000 uF CAPACITOR əlavə edin. // - mikrokontrolör lövhəsi ilə ilk piksel arasındakı kabel uzunluğunu minimuma endirin. //-NeoPixel zolağının DATA-IN 300-500 OHM Rezistorundan keçməlidir. // - NeoPixelləri CANLI bir dövrə bağlamaqdan çəkinin. Lazım gələrsə, DAİMA // əvvəlcə GROUND (-), sonra +, sonra məlumatları birləşdirin. //-5V gücündə NeoPixel şeridi olan 3.3V mikrokontrolördən istifadə edərkən // məlumat xəttində MƏNTİQİ SƏVİYYƏ DÖYÜŞTÜRÜCÜ TƏCVİQ EDİLİR. // (Bunları atlamaq iş masanızda yaxşı işləyə bilər, ancaq sahədə uğursuz ola bilər) #include #ifdef _AVR_ #include // 16 MHz Adafruit Biblo #endif üçün tələb olunur // Arduino -da hansı pin NeoPixel -ə bağlıdır? // Bir Əşyədə və ya Gemmada bunu 1 -ə dəyişməyi təklif edirik: #define LED_PIN 6 // Arduino -ya neçə NeoPixel bağlıdır? #define LED_COUNT 60 // NeoPixel şeridi obyektimizi elan edin: Adafruit_NeoPixel şeridi (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Ağ rəng, defolt bool üçün tıklandığındaDüzgün = yanlış; int indeksi = 0; int aralığı = 300; int nəticə = 0; işarəsiz uzun əvvəlkiMs = millis (); // Arqument 1 = NeoPixel şeridindəki piksellərin sayı // Arqument 2 = Arduino pin nömrəsi (əksəriyyəti etibarlıdır) // Arqument 3 = Piksel tipli bayraqlar, lazım olduqda əlavə edin: // NEO_KHZ800 800 KHz bit axını (əksər NeoPixel məhsulları/ WS2812 LEDləri) // NEO_KHZ400 400 KHz (klassik 'v1' (v2 deyil) FLORA pikselləri, WS2811 sürücüləri) // NEO_GRB Piksellər GRB bit axını üçün bağlanmışdır (əksər NeoPixel məhsulları) // NEO_RGB Piksellər RGB bit axını üçün bağlanmışdır (v1 FLORA pikselləri), v2 deyil) // NEO_RGBW Pikselləri RGBW bit axını (NeoPixel RGBW məhsulları) üçün qurulmuşdur // setup () funksiyası-başlanğıcda bir dəfə işləyir -------------------- ------------ void setup () {// Bu xətlər xüsusi olaraq Adafruit Trinket 5V 16 MHz-i dəstəkləmək üçündür. // İstənilən digər lövhə, bu hissəni silə bilərsiniz (ancaq zərər vermədən): #if müəyyən edilmişsə (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinket-ə məxsus kodun SONU. Serial.begin (9600); while (! Serial) {; // serial portunun bağlanmasını gözləyin. Yalnız yerli USB portu üçün lazımdır} pinMode (A0, INPUT); strip.begin (); // NeoPixel zolaq obyektini (TƏLƏB EDİR) strip.show () başlatın; // ASAP strip.setBrightness (10) ən qısa zamanda bütün pikselləri söndürün; // BRIGHTNESS-i təxminən 1/5 olaraq təyin edin (max = 255)} // loop () funksiyası-lövhə açıq olduğu müddətdə dəfələrlə işləyir --------------- void loop () {işarəsiz uzun currentMs = millis (); // Cari vaxtın int dəyərinin alınması = analogRead (A0); // Əgər (dəyər> 900 && nəticə == 0) {// Sensor basılarsa və hələ heç bir nəticə qeydə alınmamışdırsa, indeks nəticəsini (indeks = interval) ilə oxudun {// Cərəyanın olub olmadığını yoxlayın döngü əvvəlkiMs = cariMs aralığını aşır; // Yeni aralığı cari vaxt + interval indeksi + = 1 olaraq təyin edin; // LEDləri döngədə bir addım daha irəli qoyun, əgər (indeks> 17) {// Döngənin işlənmə sonu indeksi = 0; if (nəticə == 2) {// Doğru nəticə aralığında = (int) max ((interval * 0,95), 50); // 50ms aralığına qədər 10%sürətləndirin/ color = strip. Color (0, 255, 0); // LEDləri yaşıl} olaraq təyin edin} else if (result == 1) {// Yanlış nəticə intervalında = 300; // color = strip. Color (255, 0, 0) intervalını sıfırlayın; // Ledləri qırmızıya təyin edin} başqa {// Nəticə alınmadıqda color = strip. Color (255, 0, 0); // LEDləri qırmızıya təyin edin} result = 0; // Növbəti döngə üçün nəticəni sıfırlayın} TheaterChaseOne (rəng, indeks); // Ekran üçün ledləri yandırın. }} // Cizgi effektləri yaratmaq üçün özümüzə aid bəzi funksiyalar ----------------- // Teatr-marquee üslubunda işıqları təqib etmək. Rəng (32 bitlik dəyər, // a la strip. Color (r, g, b) yuxarıda qeyd edildiyi kimi) və çərçivələr arasında gecikmə müddəti (ms olaraq) // keçin. void teatrChaseOne (uint32_t rəng, int indeksi) {strip.clear (); strip.setPixelColor (17 - indeks, rəng); // birinci sıra led işıqlar strip.setPixelColor (18 + indeks, rəng); // ikinci sıra led işıqlar strip.setPixelColor (53 - indeks, rəng); // üçüncü sıra led işıqlar strip.show (); }
Tövsiyə:
Arduino MIDI Ritm Bölmə Sequencer: 8 Addım (Şəkillərlə birlikdə)
Arduino MIDI Ritm Bölmə Sequencer: Yaxşı bir proqram nağara maşınına sahib olmaq bu gün asan və ucuzdur, amma siçan istifadə etmək mənim üçün əyləncəni öldürür. Bu səbəbdən əvvəlcə 12 fərqli baraban elementini işə sala bilən təmiz 64 addımlı MIDI tambur ardıcıllığı olaraq nəyin nəzərdə tutulduğunu başa düşdüm
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)
Arduino Ritm Oyun Nəzarətçisi (Öz Oyunum üçün): 6 addım
Arduino Ritm Oyun Nəzarətçisi (Öz Oyunum üçün): Bu təlimatda sizə bu Ritm Oyun Nəzarətçisini sıfırdan necə qurduğumu göstərəcəyəm. Əsas ağac emalı bacarıqlarını, əsas 3d çap bacarıqlarını və əsas lehimləmə bacarıqlarını əhatə edir. Sıfır keçmişiniz varsa, yəqin ki, bu layihəni uğurla qura bilərsiniz
DIY Çərçivəli Ritm Lambası: 9 Addım (Şəkillərlə birlikdə)
DIY Çərçivəli Ritm Lampası: Dinc gecələri və rəqs edən işıqları sevirsənmi? LEDləri sevirsənmi? Fantastik mürəbbələri sevirsən? Bu sizin üçün əla və olduqca asan bir layihədir! Bu, əvvəllər görmüş ola biləcəyiniz yaxşı bəzədilmiş bir bəzəkdir. Səs alaraq, təhlil edərək və işləyir
ANDI - Təsadüfi Ritm Generatoru - Elektronika: 24 addım (şəkillərlə)
ANDI - Random Rhythm Generator - Electronics: ANDI, bir düyməyə basmaqla təsadüfi bir ritm yaradan bir maşındır. Hər vuruş unikaldır və beş düymə ilə düzəldilə bilər. ANDI, musiqiçiləri ruhlandırmaq və barabanla işləməyin yeni yollarını araşdırmaqla bağlı bir universitet layihəsinin nəticəsidir