Daftar Isi:

Irama Tangan: 6 Langkah
Irama Tangan: 6 Langkah

Video: Irama Tangan: 6 Langkah

Video: Irama Tangan: 6 Langkah
Video: LAGU CUCI TANGAN 6 LANGKAH MENURUT WHO UPDATE 2022 (Official Music Video) 2024, November
Anonim
Tangan Irama
Tangan Irama

Cyberglove ini adalah tentang membuat langkah yang tepat pada saat yang tepat.

Lampu pergi dari lengan Anda (siku) ke tangan Anda dan ketika lampu tiba di tangan Anda Anda harus menekan jari Anda pada fotosel mini.

Jika Anda menekan tangan Anda pada fotosel mini pada saat yang tepat, led akan berubah menjadi hijau. Jika tidak, led akan berubah menjadi merah.

Langkah 1: Kumpulkan Bahan

  • Sebuah sarung tangan
  • Kain untuk membuat sarung tangan lebih panjang
  • Strip LED WS2812B
  • kabel
  • Arduino
  • Foto mini

Langkah 2: Membuat Sirkuit

Membuat Sirkuit
Membuat Sirkuit
Membuat Sirkuit
Membuat Sirkuit

Pertama sambungkan strip led ke arduino. Anda dapat melakukannya dengan menghubungkan +5v ke 5v pada arduino. Din harus terhubung ke A0 pada arduino dan GND harus terhubung ke GND pada arduino.

Anda juga harus menghubungkan fotosel mini ke arduino melalui menghubungkan ke kabel 5v dari strip led dan dari sumber yang sama menghubungkan dengan kabel ke PIN 6 pada arduino. Sisi lain dari fotosel mini harus dihubungkan ke kabel GND dari strip yang dipimpin

Langkah 3: Mendesain Sarung Tangan

Mendesain Sarung Tangan
Mendesain Sarung Tangan

Sarung tangan harus memiliki ukuran yang tepat agar sesuai dengan strip yang dipimpin. Led harus disejajarkan agar lebih menyenangkan untuk dilihat.

Untuk permainan ini Anda harus menggunakan lengan Anda dan Anda ingin dapat bergerak dengan bebas. Hal ini dapat diwujudkan dengan meletakkan arduino pada sarung tangan. Saya menggunakan velcro sebagai pengikat untuk menempelkan arduino ke sarung tangan. Kemudian untuk membangun stabilitas lebih Anda dapat meletakkan tali di sekitar sarung tangan dan di sekitar arduino.

Fotosel mini telah dijahit di dalam sarung tangan sehingga akan tetap di tempatnya.

Terakhir Anda harus menyembunyikan kabel agar terlihat lebih baik. Itu bisa dilakukan dengan kain yang akan dijahit di atas kabel.

Langkah 4: Menyolder

Pematerian
Pematerian

Sekarang Anda dapat membuat kabel penghubung dari sirkuit aman dengan menyolder.

Langkah 5: Pengkodean

Pengkodean
Pengkodean
Pengkodean
Pengkodean
Pengkodean
Pengkodean

// Program tes strip NeoPixel sehari-hari dasar.

// PRAKTIK TERBAIK NEOPIXEL untuk operasi yang paling andal: // - Tambahkan 1000 uF CAPACITOR antara koneksi strip + dan - NeoPixel. // - MEMINIMALKAN PANJANG KABEL antara papan mikrokontroler dan piksel pertama. // - DATA-IN strip NeoPixel harus melewati RESISTOR 300-500 OHM. // - HINDARI menghubungkan NeoPixels pada SIRKUIT LANGSUNG. Jika harus, SELALU // sambungkan GROUND (-) dulu, lalu +, lalu data. // - Saat menggunakan mikrokontroler 3.3V dengan strip NeoPixel bertenaga 5V, // KONVERTER TINGKAT LOGIKA pada jalur data SANGAT DIREKOMENDASIKAN. // (Melewati ini mungkin berhasil di meja kerja Anda tetapi bisa gagal di lapangan)

#include #ifdef _AVR_ #include // Diperlukan untuk Adafruit Trinket 16 MHz #endif

// Pin mana di Arduino yang terhubung ke NeoPixels? // Pada Trinket atau Gemma, kami sarankan untuk mengubahnya menjadi 1: #define LED_PIN 6

// Berapa banyak NeoPixels yang terpasang ke Arduino? #define LED_COUNT 60

// Deklarasikan objek strip NeoPixel kami: Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color(127, 127, 127); // Warna putih, untuk default bool clickedCorrectly = false; // Argumen 1 = Jumlah piksel dalam strip NeoPixel // Argumen 2 = Nomor pin Arduino (sebagian besar valid) // Argumen 3 = Bendera jenis piksel, tambahkan sesuai kebutuhan: // NEO_KHZ800 800 KHz bitstream (sebagian besar produk NeoPixel w/ WS2812 LEDs) // NEO_KHZ400 400 KHz (piksel 'v1' klasik (bukan v2) FLORA, driver WS2811) // NEO_GRB Piksel disambungkan untuk bitstream GRB (sebagian besar produk NeoPixel) // Piksel NEO_RGB disambungkan untuk bitstream RGB (piksel FLORA v1, bukan v2) // NEO_RGBW Piksel disambungkan untuk bitstream RGBW (produk NeoPixel RGBW)

// fungsi setup() -- dijalankan sekali saat startup --------------------------------

void setup() { // Baris-baris ini khusus untuk mendukung Adafruit Trinket 5V 16 MHz. // Papan lainnya, Anda dapat menghapus bagian ini (tetapi tidak ada salahnya meninggalkannya): #if didefinisikan(_AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // END dari kode khusus Trinket.

pinMode(A0, INPUT); strip.mulai(); // INITIALIZE NeoPixel strip objek (DIPERLUKAN) strip.show(); // Matikan semua piksel ASAP strip.setBrightness(10); // Atur BRIGHTNESS menjadi sekitar 1/5 (maks = 255) }

// fungsi loop() -- berjalan berulang kali selama board aktif ---------------

void loop() { clickedCorrectly = theaterChaseOne(warna); if (diklik dengan benar) { color = strip. Color(0, 255, 0); } else { warna = strip. Warna(255, 0, 0); } }

// Beberapa fungsi kita sendiri untuk membuat efek animasi -----------------

// Lampu kejar gaya tenda teater. Berikan warna (nilai 32-bit, // a la strip. Color(r, g, b) seperti yang disebutkan di atas), dan waktu tunda (dalam ms) // antar frame. bool theaterChaseOne(warna uint32_t) { bool benar = salah; bool clickedWrong = salah; for (int index = 0; index 800) { //nilai sensor cahaya if (indeks < 16) { //2 led sebelum akhir maka anda bisa klik color = strip. Color(255, 0, 0); // led warna merah clickedWrong = true; //salah klik maka led berubah menjadi merah } else if (!clickedWrong) { //jika tidak salah warna = strip. Color(0, 255, 0); // led warna hijau benar = benar; //klik benar maka led berubah menjadi hijau } } strip.clear(); strip.setPixelColor(17 - indeks, warna); //baris pertama lampu led strip.setPixelColor(18 + indeks, warna); //baris kedua lampu led strip.setPixelColor(53 - indeks, warna); //baris ketiga lampu led strip.show(); penundaan (300); } kembali benar; }

Langkah 6: Perubahan

Perubahan
Perubahan
Perubahan
Perubahan
Perubahan
Perubahan

Saya membuat beberapa perubahan. Pertama saya menyembunyikan arduino agar lebih nyaman menggunakan "Rythm hand" dan kedua saya mengubah kodenya sedikit. Saya ubah kodenya sehingga ketika Anda menekan di saat yang tepat warnanya menjadi hijau dan LED bergerak lebih cepat. Dengan begitu, LED Swill menjadi 10% lebih cepat dari sebelumnya. Ini membuat permainan lebih menarik

Beginilah kodenya sekarang:

// Program tes strip NeoPixel sehari-hari dasar. // PRAKTIK TERBAIK NEOPIXEL untuk operasi yang paling andal: // - Tambahkan 1000 uF CAPACITOR antara koneksi strip + dan - NeoPixel. // - MEMINIMALKAN PANJANG KABEL antara papan mikrokontroler dan piksel pertama. // - DATA-IN strip NeoPixel harus melewati 300-500 OHM RESISTOR. // - HINDARI menghubungkan NeoPixels pada SIRKUIT LANGSUNG. Jika harus, SELALU // sambungkan GROUND (-) dulu, lalu +, lalu data. // - Saat menggunakan mikrokontroler 3.3V dengan strip NeoPixel bertenaga 5V, // KONVERTER TINGKAT LOGIKA pada jalur data SANGAT DIREKOMENDASIKAN. // (Melewati ini mungkin berhasil di meja kerja Anda tetapi bisa gagal di lapangan) #include #ifdef _AVR_ #include // Diperlukan untuk 16 MHz Adafruit Trinket #endif // Pin mana pada Arduino yang terhubung ke NeoPixels? // Pada Trinket atau Gemma kami sarankan untuk mengubahnya menjadi 1: #define LED_PIN 6 // Berapa banyak NeoPixels yang terpasang ke Arduino? #define LED_COUNT 60 // Deklarasikan objek strip NeoPixel kita: Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t warna = strip. Warna(127, 127, 127); // Warna putih, untuk default bool clickedCorrectly = false; int indeks = 0; int interval = 300; int hasil = 0; unsigned long beforeMs = milis(); // Argumen 1 = Jumlah piksel dalam strip NeoPixel // Argumen 2 = Nomor pin Arduino (sebagian besar valid) // Argumen 3 = Bendera jenis piksel, tambahkan sesuai kebutuhan: // NEO_KHZ800 800 KHz bitstream (sebagian besar produk NeoPixel w/ WS2812 LEDs) // NEO_KHZ400 400 KHz (piksel FLORA klasik 'v1' (bukan v2), driver WS2811) // NEO_GRB Piksel disambungkan untuk bitstream GRB (sebagian besar produk NeoPixel) // Piksel NEO_RGB disambungkan untuk bitstream RGB (piksel FLORA v1, bukan v2) // NEO_RGBW Piksel disambungkan untuk bitstream RGBW (produk NeoPixel RGBW) // fungsi setup() -- berjalan sekali saat startup -------------------- ------------ void setup() { // Baris-baris ini khusus untuk mendukung Adafruit Trinket 5V 16 MHz. // Papan lainnya, Anda dapat menghapus bagian ini (tetapi tidak ada salahnya meninggalkannya): #if didefinisikan(_AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // END dari kode khusus Trinket. Serial.begin(9600); while (!Serial) {; // tunggu port serial terhubung. Diperlukan hanya untuk port USB asli } pinMode(A0, INPUT); strip.mulai(); // INITIALIZE NeoPixel strip objek (DIPERLUKAN) strip.show(); // Matikan semua piksel ASAP strip.setBrightness(10); // Atur BRIGHTNESS menjadi sekitar 1/5 (maks = 255) } // fungsi loop() -- berjalan berulang kali selama board aktif --------------- void loop() { unsigned long currentMs = milis(); // Mendapatkan nilai int waktu saat ini = analogRead(A0); // Membaca sensor cahaya saat ini if (nilai > 900 && hasil == 0) { //Jika sensor ditekan dan belum ada hasil yang direkam, picu hasil tangkapan if (indeks = interval) { // Periksa apakah arus loop melebihi interval beforeMs = currentMs; // Atur interval baru ke waktu saat ini + indeks interval += 1; // Atur led satu langkah lebih jauh dalam loop if (indeks > 17) { // Trigger end of loop handling index = 0; if (hasil == 2) { // Pada hasil yang benar interval = (int)max((interval * 0,95), 50); // Mempercepat 10%, turun ke interval 50ms/ color = strip. Color(0, 255, 0); // Atur led menjadi hijau } else if (hasil == 1) { // Pada interval hasil yang salah = 300; // Atur ulang interval warna = strip. Color(255, 0, 0); // Atur led menjadi merah } else { // Tidak ada hasil yang ditangkap color = strip. Color(255, 0, 0); // Atur led menjadi merah } result = 0; // Reset hasil untuk loop berikutnya } theaterChaseOne(color, index); // Nyalakan led untuk tampilan. } } // Beberapa fungsi kita sendiri untuk membuat efek animasi ----------------- // Lampu mengejar bergaya tenda teater. Berikan warna (nilai 32-bit, // a la strip. Color(r, g, b) seperti yang disebutkan di atas), dan waktu tunda (dalam ms) // antar frame. void theaterChaseOne(warna uint32_t, indeks int) { strip.clear(); strip.setPixelColor(17 - indeks, warna); //baris pertama lampu led strip.setPixelColor(18 + indeks, warna); //baris kedua lampu led strip.setPixelColor(53 - indeks, warna); //baris ketiga lampu led strip.show(); }

Direkomendasikan: