Satura rādītājs:

Ritma roka: 6 soļi
Ritma roka: 6 soļi

Video: Ritma roka: 6 soļi

Video: Ritma roka: 6 soļi
Video: 120 BPM - ROCK - 4/4 Drum Track - Metronome - Drum Beat 2024, Novembris
Anonim
Ritma roka
Ritma roka

Šī kibermīla ir par pareizo gājienu īstajā brīdī.

Gaismas virzās no rokas (elkoņa) līdz rokai, un, kad gaismas nonāk pie rokas, jums ir jānospiež pirksti uz mini fotoelementa.

Ja īstajā brīdī nospiežat roku uz mini fotoelementa, gaismas diodes kļūst zaļas. Ja nē, gaismas diodes kļūst sarkanas.

1. darbība: savāc materiālus

  • Cimds
  • Audums, lai padarītu cimdu garāku
  • WS2812B LED sloksne
  • Vadi
  • Arduino
  • Mini foto pārdevējs

2. solis: shēmu izgatavošana

Ķēžu izgatavošana
Ķēžu izgatavošana
Ķēžu izgatavošana
Ķēžu izgatavošana

Vispirms pievienojiet LED sloksni arduino. To var izdarīt, savienojot +5v ar 5d arduino. Din arduino ir jāpievieno A0, bet GND - arduino GND.

Jums ir arī jāpievieno mini fotoelements arduino, pieslēdzoties 5V vadam no LED sloksnes un no tā paša avota, savienojot ar vadu arduino PIN 6. Otra puse no mini fotoelementa ir jāpievieno GND vadam no LED sloksnes

3. solis: Cimdu projektēšana

Cimdu projektēšana
Cimdu projektēšana

Cimdam jābūt pareizā izmērā, lai tas atbilstu led sloksnēm. Gaismas diodes ir jāsaskaņo, lai būtu patīkamāk skatīties.

Šai spēlei jums jāizmanto roka un vēlaties brīvi pārvietoties. To var realizēt, uzvelkot arduino uz cimda. Es izmantoju velcro kā stiprinājumu, lai pielīmētu arduino pie cimda. Tad, lai panāktu lielāku stabilitāti, varat uzlikt virvi ap cimdu un ap arduino.

Mini fotoelements ir uzšūts cimda iekšpusē, lai tas paliktu vietā.

Visbeidzot, jums ir jāslēpj vadi, lai tas izskatītos labāk. To var izdarīt ar audumu, kas tiks uzšūts vadu augšpusē.

4. solis: lodēšana

Lodēšana
Lodēšana

Tagad jūs varat padarīt savienojošos vadus no ķēdes drošus, lodējot.

5. darbība: kodēšana

Kodēšana
Kodēšana
Kodēšana
Kodēšana
Kodēšana
Kodēšana

// Pamata ikdienas NeoPixel sloksnes pārbaudes programma.

// NEOPIXEL LABĀKĀS PRAKSES drošākajai darbībai: // - Pievienojiet 1000 uF KAPACITORU starp NeoPixel sloksnes + un - savienojumiem. // - MINIMIZĒT VADU GARUMU starp mikrokontrollera plati un pirmo pikseli. //-NeoPixel sloksnes DATA-IN jāiet cauri 300-500 OHM REZISTORAM. // - IZVĒLIES savienot NeoPikseļus LIVE CIRCUIT. Ja jums tas ir nepieciešams, VIENMĒR // vispirms pieslēdziet GROUND (-), tad +, pēc tam datus. //-Ja izmantojat 3,3 V mikrokontrolleru ar 5 V barotu NeoPixel sloksni, // LOGIC-LEVEL CONVERTER datu līnijā ir STIPRI IETEICAMS. // (To izlaišana var darboties labi jūsu darbagaldā, bet var neizdoties laukā)

#include #ifdef _AVR_ #include // Nepieciešams 16 MHz Adafruit piekariņam #endif

// Kura Arduino tapa ir savienota ar NeoPixels? // Krekliņā vai Gemmā mēs iesakām to mainīt uz 1: #define LED_PIN 6

// Cik NeoPikseļu ir pievienoti Arduino? #define LED_COUNT 60

// Deklarējiet mūsu NeoPixel sloksnes objektu: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t krāsa = sloksne. Krāsa (127, 127, 127); // Balta krāsa, noklusējuma bool noklikšķinājaPareizi = false; // Arguments 1 = pikseļu skaits NeoPixel joslā // Arguments 2 = Arduino pin numurs (lielākā daļa ir derīgi) // Arguments 3 = Pixel tipa karodziņi, pēc vajadzības pievienojiet: // NEO_KHZ800 800 KHz bitu plūsma (lielākā daļa NeoPixel produktu ar/ WS2812 LED) // NEO_KHZ400 400 KHz (klasiskais “v1” (ne v2) FLORA pikseļi, WS2811 draiveri) // NEO_GRB Pikseļi ir savienoti ar GRB bitu plūsmu (lielākā daļa NeoPixel produktu) // NEO_RGB pikseļi ir pieslēgti RGB bitu plūsmai (v1 FLORA pikseļi), nevis v2) // NEO_RGBW Pikseļi ir savienoti ar RGBW bitu plūsmu (NeoPixel RGBW produkti)

// setup () funkcija-tiek palaista vienreiz startēšanas laikā --------------------------------

void setup () {// Šīs līnijas ir īpaši paredzētas, lai atbalstītu Adafruit Trinket 5V 16 MHz. // Jebkura cita tāfele, jūs varat noņemt šo daļu (bet nekaitēt to atstāt): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // BEZMAKSAS īpašam kodam.

pinMode (A0, INPUT); strip.begin (); // SĀKOT NeoPixel sloksnes objektu (OBLIGĀTS) strip.show (); // ASAP izslēgt visus pikseļus ASAP strip.setBrightness (10); // Iestatiet BRIGHTNESS uz aptuveni 1/5 (maks. = 255)}

// cilpa () funkcija-darbojas atkārtoti, kamēr tāfele ir ieslēgta ---------------

void loop () {clickckedCorrectly = TheaterChaseOne (krāsa); ja (pareizi noklikšķināts) {krāsa = sloksne. Krāsa (0, 255, 0); } cits {krāsa = sloksne. Krāsa (255, 0, 0); }}

// Dažas mūsu funkcijas animētu efektu radīšanai -----------------

// Teātra telts stila tramdīšanas gaismas. Ievadiet krāsu (32 bitu vērtība, // a la sloksne. Krāsa (r, g, b), kā minēts iepriekš) un aizkaves laiks (ms) // starp kadriem. bool TheaterChaseOne (uint32_t krāsa) {bool correct = false; bool clickckedWrong = false; par (int indekss = 0; indekss 800) {// vērtības gaismas sensors, ja (indekss <16) {// 2 noved pirms beigām, tad varat noklikšķināt uz krāsa = sloksne. Krāsa (255, 0, 0); // noklikšķināja sarkanās krāsas gaismas diodesWrong = true; // noklikšķināja nepareizi, tad gaismas diodes kļūst sarkanas} else if (! clickckedWrong) {// ja nav nepareiza krāsa = sloksne. Krāsa (0, 255, 0); // zaļās krāsas gaismas diodes pareizi = true; // noklikšķināja pareizi, tad gaismas diodes kļūst zaļas}} strip.clear (); strip.setPixelColor (17 - indekss, krāsa); // pirmās rindas LED gaismas sloksne.setPixelColor (18 + indekss, krāsa); // otrās rindas LED gaismas sloksne.setPixelColor (53 - indekss, krāsa); // trešās rindas LED gaismas sloksne.show (); kavēšanās (300); } atgriešanās pareiza; }

6. darbība: izmaiņas

Izmaiņas
Izmaiņas
Izmaiņas
Izmaiņas
Izmaiņas
Izmaiņas

Es veicu dažas izmaiņas. Pirmkārt, es paslēpu arduino, lai būtu ērtāk izmantot "Rythm roku", un, otrkārt, es nedaudz mainīju kodu. Es mainīju kodu tā, ka, nospiežot īstajā brīdī, krāsa kļūst zaļa un gaismas diodes pārvietojas ātrāk. Tādējādi LED Swill kļūst par 10% ātrāks nekā iepriekš. Tas padara spēli interesantāku

Šobrīd kods ir šāds:

// Pamata ikdienas NeoPixel sloksnes pārbaudes programma. // NEOPIXEL LABĀKĀS PRAKSES drošākajai darbībai: // - Pievienojiet 1000 uF KAPACITORU starp NeoPixel sloksnes + un - savienojumiem. // - MINIMIZĒT VADU GARUMU starp mikrokontrollera plati un pirmo pikseli. //-NeoPixel sloksnes DATA-IN jāiet cauri 300-500 OHM REZISTORAM. // - IZVĒLIES savienot NeoPikseļus tiešraidē. Ja jums tas ir nepieciešams, VIENMĒR // vispirms pieslēdziet GROUND (-), tad +, pēc tam datus. //-Ja izmantojat 3,3 V mikrokontrolleru ar 5 V barotu NeoPixel sloksni, // LOGIC-LEVEL CONVERTER datu līnijā ir STIPRI IETEICAMS. // (To izlaišana var darboties labi jūsu darbagaldā, bet var neizdoties laukā) #include #ifdef _AVR_ #include // Nepieciešams 16 MHz Adafruit piekariņam #endif // Kura Arduino tapa ir savienota ar NeoPixels? // Krekliņā vai Gemmā mēs iesakām to mainīt uz 1: #define LED_PIN 6 // Cik NeoPikseļu ir pievienoti Arduino? #define LED_COUNT 60 // Deklarējiet mūsu NeoPixel sloksnes objektu: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t krāsa = sloksne. Krāsa (127, 127, 127); // Balta krāsa, noklusējuma bool noklikšķinājaPareizi = false; int indekss = 0; int intervāls = 300; int rezultāts = 0; neparakstīts ilgi iepriekšMs = milis (); // Arguments 1 = pikseļu skaits NeoPixel joslā // Arguments 2 = Arduino pin numurs (lielākā daļa ir derīgi) // Arguments 3 = Pixel tipa karodziņi, pēc vajadzības pievienojiet: // NEO_KHZ800 800 KHz bitu plūsma (lielākā daļa NeoPixel produktu ar/ WS2812 LED) // NEO_KHZ400 400 KHz (klasiskais “v1” (ne v2) FLORA pikseļi, WS2811 draiveri) // NEO_GRB Pikseļi ir savienoti ar GRB bitu plūsmu (lielākā daļa NeoPixel produktu) // NEO_RGB pikseļi ir pieslēgti RGB bitu plūsmai (v1 FLORA pikseļi), nevis v2) // NEO_RGBW Pikseļi ir savienoti ar RGBW bitu plūsmu (NeoPixel RGBW produkti) // setup () funkcija-darbojas vienreiz startēšanas laikā -------------------- ------------ void setup () {// Šīs līnijas ir īpaši paredzētas, lai atbalstītu Adafruit Trinket 5V 16 MHz. // Jebkura cita tāfele, jūs varat noņemt šo daļu (bet nekaitēt to atstāt): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // BEZMAKSAS īpašam kodam. Sērijas sākums (9600); while (! Serial) {; // pagaidiet, līdz tiek izveidots seriālais ports. Nepieciešams tikai vietējam USB portam} pinMode (A0, INPUT); strip.begin (); // SĀKOT NeoPixel sloksnes objektu (OBLIGĀTS) strip.show (); // ASAP izslēgt visus pikseļus ASAP strip.setBrightness (10); // Iestatiet BRIGHTNESS uz aptuveni 1/5 (maks. = 255)} // loop () funkcija-darbojas atkārtoti tik ilgi, kamēr tāfele ir ieslēgta --------------- void loop () {neparakstīta garā strāvaMs = milis (); // Pašreizējā laika iegūšana int vērtība = analogRead (A0); // Pašreizējā gaismas sensora nolasīšana, ja (vērtība> 900 && rezultāts == 0) {// Ja sensors ir nospiests un rezultāts vēl nav ierakstīts, aktivizējiet rezultātu uztveršanu, ja (indekss = intervāls) {// Pārbaudiet, vai pašreizējais cilpa pārsniedz intervālu previousMs = currentMs; // Iestatīt jauno intervālu uz pašreizējo laika + intervāla indeksu + = 1; // Iestatiet gaismas diodes vienu soli tālāk cilpā, ja (indekss> 17) {// Aktivizējiet cilpas apstrādes beigas indekss = 0; ja (rezultāts == 2) {// Par pareizu rezultātu intervālu = (int) max ((intervāls * 0,95), 50); // Paātrināt par 10%, līdz 50 ms intervālam/ krāsa = sloksne. Krāsa (0, 255, 0); // Iestatiet gaismas diodes uz zaļām} else if (result == 1) {// Par nepareizu rezultātu intervālu = 300; // Atiestatīt intervālu color = strip. Color (255, 0, 0); // Iestatiet gaismas diodes sarkanā krāsā} else {// Ja nav rezultātu, krāsa = sloksne. Krāsa (255, 0, 0); // Iestatiet gaismas diodes sarkanā krāsā} result = 0; // Atiestatīt nākamās cilpas rezultātu} TheaterChaseOne (krāsa, indekss); // Izgaismojiet gaismas diodes, lai tās parādītu. }} // Dažas mūsu funkcijas animētu efektu radīšanai ----------------- // Teātra telts stila pakaļdzīšanās gaismas. Ievadiet krāsu (32 bitu vērtība, // a la sloksne. Krāsa (r, g, b), kā minēts iepriekš) un aizkaves laiks (ms) // starp kadriem. void TheaterChaseOne (uint32_t krāsa, int indekss) {strip.clear (); strip.setPixelColor (17 - indekss, krāsa); // pirmās rindas LED gaismas sloksne.setPixelColor (18 + indekss, krāsa); // otrās rindas LED gaismas sloksne.setPixelColor (53 - indekss, krāsa); // trešās rindas LED gaismas sloksne.show (); }

Ieteicams: