Talaan ng mga Nilalaman:

Kamay ng Ritmo: 6 na Hakbang
Kamay ng Ritmo: 6 na Hakbang

Video: Kamay ng Ritmo: 6 na Hakbang

Video: Kamay ng Ritmo: 6 na Hakbang
Video: Grade 6 Music | Rhythmic Syllables with Clapping Exercises | Reading of Rhythmic Syllables 2024, Hulyo
Anonim
Kamay ng Ritmo
Kamay ng Ritmo

Ang cyberglove na ito ay tungkol sa paggawa ng tamang paglipat sa tamang sandali.

Ang mga ilaw ay pupunta mula sa iyong braso (siko) patungo sa iyong kamay at kapag dumating ang mga ilaw sa iyong kamay kailangan mong pindutin ang iyong mga daliri sa mini photocell.

Kung pinindot mo ang iyong kamay sa mini photocell sa tamang sandali ang mga leds ay berde. Kung hindi, namumula ang mga leds.

Hakbang 1: Mangolekta ng Mga Materyal

  • Isang gwantes
  • Tela upang gawing mas mahaba ang guwantes
  • WS2812B LED strip
  • Mga wire
  • Arduino
  • Mini photosell

Hakbang 2: Paggawa ng Circuits

Paggawa ng Circuits
Paggawa ng Circuits
Paggawa ng Circuits
Paggawa ng Circuits

Una ikonekta ang led strip sa arduino. Maaari mong gawin iyon sa pamamagitan ng pagkonekta sa + 5v sa 5v sa arduino. Ang Din ay dapat na konektado sa A0 sa arduino at ang GND ay dapat na konektado sa GND sa arduino.

Kailangan mo ring ikonekta ang mini photocell sa arduino sa pamamagitan ng pagkonekta sa 5v wire mula sa led strip at mula sa parehong mapagkukunan na kumokonekta sa isang wire sa PIN 6 sa arduino. Ang kabilang panig mula sa mini photocell ay dapat na konektado sa GND wire mula sa led strip

Hakbang 3: Pagdidisenyo ng guwantes

Pagdidisenyo ng Guwantes
Pagdidisenyo ng Guwantes

Ang guwantes ay dapat magkaroon ng tamang sukat upang magkasya sa mga led strip. Ang mga leds ay dapat na nakahanay upang mas maging kasiya-siya tingnan.

Para sa larong ito kailangan mong gamitin ang iyong braso at nais mong malayang makagalaw. Maaari itong mapagtanto sa pamamagitan ng paglalagay ng arduino sa guwantes. Gumamit ako ng velcro bilang isang fastener upang idikit ang arduino sa guwantes. Pagkatapos para sa pagtaguyod ng higit na katatagan maaari kang maglagay ng isang lubid sa paligid ng guwantes at sa paligid ng arduino.

Ang mini photocell ay naitahi na sa loob ng guwantes kaya mananatili ito sa lugar.

Panghuli kailangan mong itago ang mga wire upang gawing mas mahusay ito. Maaari itong gawin sa tela na tahiin sa tuktok ng mga wire.

Hakbang 4: Paghihinang

Paghihinang
Paghihinang

Ngayon ay maaari mo nang gawing ligtas ang mga wire na nagkokonekta mula sa circuit sa pamamagitan ng paghihinang.

Hakbang 5: Pag-coding

Coding
Coding
Coding
Coding
Coding
Coding

// Isang pangunahing araw-araw na NeoPixel strip test program.

// NEOPIXEL PINAKA MAHALAGANG Kasanayan para sa pinaka maaasahang operasyon: // - Magdagdag ng 1000 uF CAPACITOR sa pagitan ng NeoPixel strip's + at - mga koneksyon. // - MINIMIZE WIRING LENGTH sa pagitan ng microcontroller board at unang pixel. // - Ang NeoPixel strip's DATA-IN ay dapat dumaan sa isang 300-500 OHM RESISTOR. // - IWASAN ang pagkonekta ng NeoPixels sa isang LIVE CIRCUIT. Kung kinakailangan, ALWAYS // ikonekta ang GROUND (-) muna, pagkatapos ay +, pagkatapos ng data. // - Kapag gumagamit ng isang 3.3V microcontroller na may isang NeoPixel strip na pinapatakbo ng 5V, // isang LOGIC-LEVEL CONVERTER sa linya ng data ay LALAKING Inirerekomenda. // (Ang paglaktaw ng mga ito ay maaaring gumana OK sa iyong workbench ngunit maaaring mabigo sa patlang)

#include #ifdef _AVR_ #include // Kinakailangan para sa 16 MHz Adafruit Trinket #endif

// Aling pin sa Arduino ang konektado sa NeoPixels? // Sa isang Trinket o Gemma iminumungkahi namin na baguhin ito sa 1: # tukuyin ang LED_PIN 6

// Ilan sa mga NeoPixels ang nakakabit sa Arduino? # tukuyin ang LED_COUNT 60

// Declare our NeoPixel strip object: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Kulay (127, 127, 127); // White color, para sa default bool na na-clickCorrectly = false; // Argument 1 = Bilang ng mga pixel sa NeoPixel strip // Argument 2 = Arduino pin number (karamihan ay may bisa) // Argument 3 = Mga flag na uri ng Pixel, idagdag nang sama-sama kung kinakailangan: // NEO_KHZ800 800 KHz bitstream (karamihan sa mga produktong NeoPixel w / WS2812 LEDs) // NEO_KHZ400 400 KHz (klasikong 'v1' (hindi v2) FLORA pixel, mga driver ng WS2811) // Ang NEO_GRB Pixels ay naka-wire para sa GRB bitstream (karamihan sa mga produktong NeoPixel) // Ang NEO_RGB Pixels ay naka-wire para sa RGB bitstream (v1 FLORA pixel, hindi v2) // NEO_RGBW Ang mga pixel ay naka-wire para sa RGBW bitstream (mga produktong NeoPixel RGBW)

// function (setup) na - tumatakbo nang isang beses sa pagsisimula ----

void setup () {// Ang mga linyang ito ay partikular na suportado ng Adafruit Trinket 5V 16 MHz. // Anumang iba pang board, maaari mong alisin ang bahaging ito (ngunit walang pinsala na iwan ito): # Kung tinukoy (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END ng code na tukoy sa Trinket.

pinMode (A0, INPUT); strip.begin (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // OFF OFF all pixel ASAP strip.setBrightness (10); // Itakda ang KARAPATAN sa halos 1/5 (max = 255)}

// loop () function - tumatakbo nang paulit-ulit hangga't ang board ay nasa -------------

void loop () {clickedCorrectly = teatroChaseOne (kulay); kung (na-clickCorrectly) {color = strip. Color (0, 255, 0); } iba pa {color = strip. Color (255, 0, 0); }}

// Ang ilang mga pagpapaandar sa amin para sa paglikha ng mga animated na epekto -----------------

// Mga ilaw sa paghabol sa istilo ng teatro-marquee. Pumasa sa isang kulay (32-bit na halaga, // a la strip. Kulay (r, g, b) tulad ng nabanggit sa itaas), at isang oras ng pagkaantala (sa ms) // sa pagitan ng mga frame. bool theatreChaseOne (uint32_t color) {bool correct = false; bool clickedWrong = false; para sa (int index = 0; index 800) {// halaga light sensor kung (index <16) {// 2 leds bago magtapos pagkatapos ay maaari kang mag-click sa color = strip. Color (255, 0, 0); // red color leds na-clickWrong = totoo; // mali ang na-click pagkatapos ay namumula ang leds} iba pa kung (! clickedWrong) {// kung hindi maling kulay = strip. Color (0, 255, 0); // green color leds tama = totoo; // na-click nang tama pagkatapos leds maging berde}} strip.clear (); strip.setPixelColor (17 - index, kulay); // first row led lights strip.setPixelColor (18 + index, kulay); // ikalawang hilera na humantong ilaw strip.setPixelColor (53 - index, kulay); // third row led lights strip.show (); pagkaantala (300); } bumalik nang tama; }

Hakbang 6: Mga Pagbabago

Mga pagbabago
Mga pagbabago
Mga pagbabago
Mga pagbabago
Mga pagbabago
Mga pagbabago

Gumawa ako ng ilang pagbabago. Una itinago ko ang arduino upang mas komportable na gamitin ang "Rythm hand" at pangalawa binago ko nang kaunti ang code. Binago ko ang code upang kapag pinindot mo sa tamang sandali ang kulay ay nagiging berde at mas mabilis ang paggalaw ng LEDS. Sa pamamagitan nito, ang LED Swill ay naging 10% na mas mabilis kaysa dati. Ginagawa nitong mas kawili-wili ang laro

Ganito ang code ngayon:

// Isang pangunahing araw-araw na NeoPixel strip test program. // NEOPIXEL PINAKA MAHALAGANG Kasanayan para sa pinaka maaasahang operasyon: // - Magdagdag ng 1000 uF CAPACITOR sa pagitan ng NeoPixel strip's + at - mga koneksyon. // - MINIMIZE WIRING LENGTH sa pagitan ng microcontroller board at unang pixel. // - Ang NeoPixel strip's DATA-IN ay dapat dumaan sa isang 300-500 OHM RESISTOR. // - IWASAN ang pagkonekta ng NeoPixels sa isang LIVE CIRCUIT. Kung kinakailangan, ALWAYS // ikonekta ang GROUND (-) muna, pagkatapos ay +, pagkatapos ng data. // - Kapag gumagamit ng isang 3.3V microcontroller na may 5V na pinapatakbo na NeoPixel strip, // isang LOGIC-LEVEL CONVERTER sa linya ng data ay LALAKING Inirerekomenda. // (Ang paglaktaw ng mga ito ay maaaring gumana OK sa iyong workbench ngunit maaaring mabigo sa patlang) #include #ifdef _AVR_ #include // Kinakailangan para sa 16 MHz Adafruit Trinket #endif // Aling pin sa Arduino ang konektado sa NeoPixels? // Sa isang Trinket o Gemma iminumungkahi namin na baguhin ito sa 1: #define LED_PIN 6 // Ilan sa mga NeoPixels ang nakakabit sa Arduino? #define LED_COUNT 60 // Ipahayag ang aming NeoPixel strip object: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Kulay (127, 127, 127); // White color, para sa default bool na na-clickCorrectly = false; int index = 0; int interval = 300; int resulta = 0; unsigned matagal na nakaraangMs = millis (); // Argument 1 = Bilang ng mga pixel sa NeoPixel strip // Argument 2 = Arduino pin number (karamihan ay may bisa) // Argument 3 = Mga flag na uri ng Pixel, idagdag nang sama-sama kung kinakailangan: // NEO_KHZ800 800 KHz bitstream (karamihan sa mga produktong NeoPixel w / WS2812 LEDs) // NEO_KHZ400 400 KHz (klasikong 'v1' (hindi v2) FLORA pixel, mga driver ng WS2811) // Ang NEO_GRB Pixels ay naka-wire para sa GRB bitstream (karamihan sa mga produktong NeoPixel) // Ang NEO_RGB Pixels ay naka-wire para sa RGB bitstream (v1 FLORA pixel, hindi v2) // NEO_RGBW Ang mga pixel ay naka-wire para sa RGBW bitstream (mga produkto ng NeoPixel RGBW) // function na (setup) na tumatakbo nang isang beses sa pagsisimula -------------------- ------------ void setup () {// Ang mga linya na ito ay partikular na upang suportahan ang Adafruit Trinket 5V 16 MHz. // Anumang iba pang board, maaari mong alisin ang bahaging ito (ngunit walang pinsala na iwan ito): # Kung tinukoy (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END ng code na tukoy sa Trinket. Serial.begin (9600); habang (! Serial) {; // hintaying kumonekta ang serial port. Kailangan para sa katutubong USB port lamang} pinMode (A0, INPUT); strip.begin (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // OFF OFF all pixel ASAP strip.setBrightness (10); // Itakda ang KARAPATAN sa halos 1/5 (max = 255)} // loop () na pagpapaandar - paulit-ulit na tumatakbo hangga't ang board ay nasa --------------- void loop () {unsigned long currentMs = millis (); // Pagkuha ng kasalukuyang oras int halaga = analogRead (A0); // Pagbasa ng kasalukuyang light sensor kung (halaga> 900 && resulta == 0) {// Kung ang sensor ay pinindot at wala pang naitala na resulta, i-trigger ang pagkuha ng resulta kung (index = interval) {// Suriin kung ang kasalukuyang lumagpas ang loop sa agwat ng nakaraangMs = currentMs; // Itakda ang bagong agwat sa kasalukuyang time + interval index + = 1; // Itakda ang mga leds ng isang hakbang sa loop kung (index> 17) {// Trigger end of loop handling index = 0; kung (resulta == 2) {// Sa isang tamang agwat ng resulta = (int) max ((agwat * 0.95), 50); // Bilisin ng 10%, pababa sa 50ms agwat / kulay = strip. Kulay (0, 255, 0); // Itakda ang mga leds sa berde} iba pa kung (resulta == 1) {// Sa isang hindi tamang agwat ng resulta = 300; // Reset the interval color = strip. Kulay (255, 0, 0); // Itakda ang mga leds sa pula} iba pa {// Sa walang resulta na nakunan ng kulay = strip. Color (255, 0, 0); // Itakda ang mga leds sa pula} resulta = 0; // I-reset ang resulta para sa susunod na loop} teatroChaseOne (kulay, index); // I-ilaw ang mga leds para maipakita. }} // Ang ilan sa aming mga pag-andar para sa paglikha ng mga animated na epekto ----------------- // Mga ilaw sa paghabol sa istilo ng teatro-marquee. Pumasa sa isang kulay (32-bit na halaga, // a la strip. Kulay (r, g, b) tulad ng nabanggit sa itaas), at isang oras ng pagkaantala (sa ms) // sa pagitan ng mga frame. void theatreChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - index, kulay); // first row led lights strip.setPixelColor (18 + index, kulay); // ikalawang hilera na humantong ilaw strip.setPixelColor (53 - index, kulay); // third row led lights strip.show (); }

Inirerekumendang: