Isi kandungan:

Tangan Irama: 6 Langkah
Tangan Irama: 6 Langkah

Video: Tangan Irama: 6 Langkah

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

Cyberlove ini adalah mengenai membuat pergerakan yang tepat pada saat yang tepat.

Lampu akan bergerak dari lengan anda (siku) ke tangan anda dan apabila lampu tiba di tangan anda, anda harus menekan jari anda pada photocell mini.

Sekiranya anda menekan tangan pada photocell mini pada masa yang tepat, led bertukar menjadi hijau. Sekiranya tidak, led bertukar menjadi merah.

Langkah 1: Kumpulkan Bahan

  • Sarung tangan
  • Kain untuk menjadikan sarung tangan lebih panjang
  • Jalur LED WS2812B
  • Wayar
  • Arduino
  • Photosell mini

Langkah 2: Membuat Litar

Membuat Litar
Membuat Litar
Membuat Litar
Membuat Litar

Mula-mula sambungkan jalur yang dipimpin ke arduino. Anda boleh melakukannya dengan menyambungkan + 5v ke 5v di arduino. Din mesti disambungkan ke A0 di arduino dan GND mesti disambungkan ke GND di arduino.

Anda juga perlu menyambungkan photocell mini ke arduino melalui penyambungan ke wayar 5v dari jalur yang dipimpin dan dari sumber yang sama yang menghubungkan dengan wayar ke PIN 6 di arduino. Bahagian lain dari mini photocell mesti disambungkan ke wayar GND dari jalur yang dipimpin

Langkah 3: Merancang Sarung Tangan

Merancang Sarung Tangan
Merancang Sarung Tangan

Sarung tangan harus mempunyai ukuran yang tepat agar sesuai dengan jalur yang dipimpin. Led mesti diselaraskan agar lebih senang dilihat.

Untuk permainan ini, anda mesti menggunakan lengan anda dan anda ingin dapat bergerak dengan bebas. Ini dapat direalisasikan dengan meletakkan arduino pada sarung tangan. Saya menggunakan velcro sebagai pengikat untuk melekatkan arduino pada sarung tangan. Kemudian untuk mewujudkan kestabilan yang lebih tinggi, anda boleh meletakkan tali di sekitar sarung tangan dan di sekitar arduino.

Fotocell mini telah dijahit di dalam sarung tangan supaya ia tetap di tempatnya.

Terakhir anda harus menyembunyikan wayar agar kelihatan lebih baik. Itu boleh dilakukan dengan kain yang akan dijahit di atas wayar.

Langkah 4: Pematerian

Pematerian
Pematerian

Sekarang anda boleh membuat wayar penyambungan dari litar menjadi selamat dengan pematerian.

Langkah 5: Pengekodan

Pengekodan
Pengekodan
Pengekodan
Pengekodan
Pengekodan
Pengekodan

// Program ujian jalur NeoPixel asas setiap hari.

// NEOPIXEL PRAKTIK TERBAIK untuk operasi yang paling dipercayai: // - Tambahkan 1000 uF CAPACITOR antara sambungan NeoPixel strip + dan -. // - MINIMASI PANJANG WIRING antara papan mikrokontroler dan piksel pertama. // - DATA-IN NeoPixel jalur harus melalui 300-500 OHM RESISTOR. // - MENGHINDARI menghubungkan NeoPixels pada LANGSUNG LANGSUNG. Sekiranya anda mesti, SELALU // sambungkan GROUND (-) terlebih dahulu, kemudian +, kemudian data. // - Semasa menggunakan mikrokontroler 3.3V dengan jalur NeoPixel berkuasa 5V, // LOGIC-LEVEL CONVERTER pada baris data DILARANG. // (Melangkau ini mungkin berfungsi dengan baik di meja kerja anda tetapi boleh gagal di lapangan)

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

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

// Berapa banyak NeoPixels yang dilekatkan pada Arduino? #tentukan LED_COUNT 60

// Nyatakan objek jalur NeoPixel kami: Jalur Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Warna putih, untuk bool lalai diklikCorrectly = false; // Argumen 1 = Jumlah piksel dalam jalur NeoPixel // Argumen 2 = Nombor pin Arduino (kebanyakannya sah) // Argumen 3 = Bendera jenis piksel, tambahkan bersama-sama jika diperlukan: // NEO_KHZ800 bitstream 800 KHz (kebanyakan produk NeoPixel tanpa / LED WS2812) // NEO_KHZ400 400 KHz (piksel FLORA klasik 'v1' (bukan v2), pemacu WS2811) // Piksel NEO_GRB adalah kabel untuk aliran bit GRB (kebanyakan produk NeoPixel) // Piksel NEO_RGB disambungkan untuk piksel bit RGB (piksel vOR FLORA, bukan v2) // NEO_RGBW Pixel berwayar untuk bitstream RGBW (produk NeoPixel RGBW)

// fungsi () fungsi - dijalankan sekali semasa permulaan --------------------------------

sia-sia persediaan () {// Garis-garis ini khusus untuk menyokong Adafruit Trinket 5V 16 MHz. // Mana-mana papan lain, anda boleh membuang bahagian ini (tetapi tidak ada salahnya meninggalkannya): #jika ditentukan (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // TAMAT kod khusus perhiasan.

pinMode (A0, INPUT); jalur.begin (); // INISIASI objek NeoPixel strip (DIPERLUKAN) strip.show (); // Matikan semua piksel ASAP strip.setBrightness (10); // Tetapkan BRIGHTNESS kepada kira-kira 1/5 (maksimum = 255)}

// fungsi loop () - berjalan berulang kali selagi papan dihidupkan ---------------

gelung void () {clickedCorrectly = TheaterChaseOne (warna); jika (diklik dengan betul) {color = strip. Color (0, 255, 0); } lain {color = strip. Color (255, 0, 0); }}

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

// Lampu mengejar gaya teater-marquee. Masukkan warna (nilai 32-bit, // a la strip. Warna (r, g, b) seperti yang disebutkan di atas), dan masa kelewatan (dalam ms) // antara bingkai. bool theatreChaseOne (warna uint32_t) {bool correct = false; bool clickedWrong = false; untuk (int index = 0; index 800) {// sensor cahaya nilai jika (indeks <16) {// 2 led sebelum akhir maka anda boleh mengklik color = strip. Color (255, 0, 0); // LED warna merah diklikSalah = benar; // diklik salah kemudian led bertukar menjadi merah} lain jika (! clickedWrong) {// jika tidak salah warna = strip. Color (0, 255, 0); // warna hijau dipimpin betul = benar; // diklik betul kemudian led berubah menjadi hijau}} strip.clear (); strip.setPixelColor (17 - indeks, warna); // jalur lampu led barisan pertama.setPixelColor (18 + indeks, warna); // jalur kedua dipimpin jalur lampu.setPixelColor (53 - indeks, warna); // jalur lampu jalur ketiga.show (); kelewatan (300); } kembali betul; }

Langkah 6: Perubahan

Perubahan
Perubahan
Perubahan
Perubahan
Perubahan
Perubahan

Saya membuat beberapa perubahan. Pertama saya menyembunyikan arduino supaya lebih selesa menggunakan "Rythm hand" dan kedua saya menukar kodnya sedikit. Saya menukar kod sehingga apabila anda menekan pada saat yang tepat warna menjadi hijau dan LEDS bergerak lebih cepat. Dengan berbuat demikian LED Swill menjadi 10% lebih cepat dari sebelumnya. Ini menjadikan permainan lebih menarik

Begini kodnya:

// Program ujian jalur NeoPixel asas setiap hari. // NEOPIXEL PRAKTIK TERBAIK untuk operasi yang paling dipercayai: // - Tambahkan 1000 uF CAPACITOR antara sambungan NeoPixel strip + dan -. // - MINIMASI PANJANG WIRING antara papan mikrokontroler dan piksel pertama. // - DATA-IN NeoPixel jalur harus melalui 300-500 OHM RESISTOR. // - MENGHINDARI menghubungkan NeoPixels pada LANGSUNG LANGSUNG. Sekiranya anda mesti, SELALU // sambungkan GROUND (-) terlebih dahulu, kemudian +, kemudian data. // - Semasa menggunakan mikrokontroler 3.3V dengan jalur NeoPixel berkuasa 5V, // LOGIC-LEVEL CONVERTER pada baris data DILARANG. // (Melangkau ini mungkin berfungsi dengan baik di meja kerja anda tetapi boleh gagal di lapangan) #include #ifdef _AVR_ #include // Diperlukan untuk Adafruit Trinket 16 MHz #endif // Pin mana di Arduino yang disambungkan ke NeoPixels? // Pada Trinket atau Gemma, kami sarankan mengubahnya menjadi 1: #define LED_PIN 6 // Berapa banyak NeoPixels yang dilekatkan pada Arduino? #define LED_COUNT 60 // Nyatakan objek jalur NeoPixel kami: Jalur Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Warna putih, untuk bool lalai diklikCorrectly = false; indeks int = 0; selang int = 300; hasil int = 0; lama sebelumnya yang tidak ditandatangani = milis (); // Argumen 1 = Jumlah piksel dalam jalur NeoPixel // Argumen 2 = Nombor pin Arduino (kebanyakannya sah) // Argumen 3 = Bendera jenis piksel, tambahkan bersama-sama jika diperlukan: // NEO_KHZ800 bitstream 800 KHz (kebanyakan produk NeoPixel tanpa / WS2812 LED) // NEO_KHZ400 400 KHz (piksel FLORA klasik 'v1' (bukan v2), pemacu WS2811) // Piksel NEO_GRB dikabelkan untuk aliran bit GRB (kebanyakan produk NeoPixel) // Piksel NEO_RGB disambungkan untuk piksel bit RGB (piksel vOR FLORA, bukan v2) // NEO_RGBW Pixel dikabelkan untuk aliran bit RGBW (produk NeoPixel RGBW) // fungsi () - berjalan sekali semasa permulaan -------------------- ------------ persediaan kosong () {// Garis-garis ini khusus untuk menyokong Adafruit Trinket 5V 16 MHz. // Mana-mana papan lain, anda boleh membuang bahagian ini (tetapi tidak ada salahnya meninggalkannya): #jika ditentukan (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // TAMAT kod khusus perhiasan. Serial.begin (9600); sambil (! bersiri) {; // tunggu port bersambung. Diperlukan untuk port USB asli sahaja} pinMode (A0, INPUT); jalur.begin (); // INISIASI objek NeoPixel strip (DIPERLUKAN) strip.show (); // Matikan semua piksel ASAP strip.setBrightness (10); // Tetapkan BRIGHTNESS kepada kira-kira 1/5 (maksimum = 255)} // fungsi gelung () - berulang kali selagi papan dihidupkan --------------- gelung kosong () {arus yang tidak ditandatanganiMs = milis (); // Mendapatkan nilai masa semasa = analogRead (A0); // Membaca sensor cahaya semasa jika (nilai> 900 && hasil == 0) {// Jika sensor ditekan dan belum ada hasil yang direkodkan, cetuskan hasil tangkapan jika (indeks = selang) {// Periksa apakah arus gelung melebihi selang sebelumnyaMs = currentMs; // Tetapkan selang baru ke masa semasa + selang indeks + = 1; // Tetapkan led satu langkah lebih jauh dalam gelung jika (indeks> 17) {// Mencetuskan akhir indeks pengendalian gelung = 0; jika (hasil == 2) {// Pada selang hasil yang betul = (int) maks ((selang * 0.95), 50); // Kelajuan 10%, selang hingga 50ms / warna = jalur. Warna (0, 255, 0); // Tetapkan led ke hijau} lain jika (hasil == 1) {// Pada selang hasil yang salah = 300; // Tetapkan semula warna selang = jalur. Warna (255, 0, 0); // Tetapkan led ke merah} lain {// Tanpa hasil ditangkap color = strip. Color (255, 0, 0); // Tetapkan led ke merah} hasil = 0; // Tetapkan semula hasilnya untuk gelung seterusnya} TheaterChaseOne (warna, indeks); // Nyalakan lampu untuk paparan. }} // Beberapa fungsi kita sendiri untuk mencipta kesan animasi ----------------- // Lampu mengejar gaya teater-marquee. Masukkan warna (nilai 32-bit, // a la strip. Warna (r, g, b) seperti yang disebutkan di atas), dan masa kelewatan (dalam ms) // antara bingkai. kekosongan teaterChaseOne (warna uint32_t, indeks int) {strip.clear (); strip.setPixelColor (17 - indeks, warna); // jalur lampu led barisan pertama.setPixelColor (18 + indeks, warna); // jalur kedua dipimpin jalur lampu.setPixelColor (53 - indeks, warna); // jalur lampu jalur ketiga.show (); }

Disyorkan: