Obsah:

Rytmus rúk: 6 krokov
Rytmus rúk: 6 krokov

Video: Rytmus rúk: 6 krokov

Video: Rytmus rúk: 6 krokov
Video: Дело рук утопающих (Серия 6) 2024, Júl
Anonim
rytmus Hand
rytmus Hand

Táto cyberglove je o tom, správny krok v správny okamih.

Svetlá prechádzajú z vašej ruky (lakťa) do vašej ruky, a keď sa vám svetlá dostanú do ruky, musíte pritlačiť prsty na mini fotobunku.

Ak v správnom momente stlačíte ruku na mini fotobunku, diódy sa rozsvietia na zeleno. Ak tomu tak nie je, LED začervená.

Krok 1: Zbierajte materiály

  • Rukavica
  • Fabric, aby rukavice dlhšie
  • LED pás WS2812B
  • Drôty
  • Arduino
  • Mini fotosell

Krok 2: Vytvorenie obvodov

Výroba obvodov
Výroba obvodov
Výroba obvodov
Výroba obvodov

Najprv pripojte LED pás k arduinu. Môžete to urobiť pripojením +5v k 5v na arduino. Din musí byť pripojený k A0 na arduino a GND musí byť pripojený k GND na arduino.

Mini fotobunku musíte tiež pripojiť k arduinu pripojením k 5V vodiču z LED diódy a z rovnakého zdroja pomocou drôtu na PIN 6 na arduine. Druhá strana mini fotobunky musí byť pripojená k vodiču GND z LED pásky

Krok 3: Navrhovanie rukavice

Navrhovanie rukavice
Navrhovanie rukavice

Rukavice musia mať správnu veľkosť, aby sa zmestili prúžky viedli. LED diódy musia byť zarovnané, aby bol príjemnejší na pohľad.

Pri tejto hre musíte použiť ruku a chcete, aby ste sa mohli voľne pohybovať. To možno dosiahnuť tým, že Arduino na rukavicu. Na pripevnenie arduina k rukavici som použil suchý zips ako zapínanie. Potom, aby ste dosiahli väčšiu stabilitu, môžete okolo rukavice a okolo arduina položiť lano.

Mini fotobunka bola všitá dovnútra rukavice, takže zostane na svojom mieste.

V neposlednom rade budete musieť skryť drôty, aby to vyzeralo lepšie. To sa dá dosiahnuť látkou, ktorá bude prišitá na vrch drôtov.

Krok 4: Spájkovanie

Spájkovanie
Spájkovanie

Teraz môžete spájacie vodiče z obvodu zaistiť spájkovaním.

Krok 5: Kódovanie

Kódovanie
Kódovanie
Kódovanie
Kódovanie
Kódovanie
Kódovanie

// Základný každodenný testovací program pásikov NeoPixel.

// NAJLEPŠIE POSTUPY NEOPIXELU pre najspoľahlivejšiu prevádzku: // - Pridajte 1000 uF KAPACITORU medzi spoje + a - na páse NeoPixel. // - MINIMALIZUJTE DĹŽKU zapojenia medzi doskou mikrokontroléra a prvým pixelom. //-DATA-IN prúžku NeoPixelu by mal prechádzať cez 300-500 OHM odpor. // - VYHNITE SA prepojeniu NeoPixelov na ŽIVOM OBVODE. Ak musíte, VŽDY // najskôr pripojte GROUND (-), potom +, potom dáta. //-Pri použití 3,3 V mikrokontroléra s 5V napájaným pásikom NeoPixel // LOGIC-LEVEL CONVERTER na dátovom vedení DOPORUČUJEME. // (Ich preskočenie môže na vašom pracovnom stole fungovať dobre, ale v poli môže zlyhať)

#include #ifdef _AVR_ #include // Vyžadované pre 16 MHz Adafruit Trinket #endif

// Ktorý pin na Arduine je pripojený k NeoPixels? // Na cetke alebo Gemme navrhujeme zmeniť toto na 1: #define LED_PIN 6

// Koľko NeoPixels sú pripojené k Arduino? #define LED_COUNT 60

// Deklarujte náš objekt pásu NeoPixel: pás Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t farba = pásik. Farba (127, 127, 127); // Biela farba, predvolene bool clickedCorrectly = false; // Argument 1 = počet pixelov v páse NeoPixel // Argument 2 = počet pinov Arduino (väčšina z nich je platná) // Argument 3 = vlajky typu pixelov, sčítajte podľa potreby: // NEO_KHZ800 800 KHz bitstream (väčšina produktov NeoPixel w/ LED WS2812) // NEO_KHZ400 400 KHz (klasické „v1“(nie v2) pixely FLORA, ovládače WS2811) // Pixely NEO_GRB sú zapojené pre bitový tok GRB (väčšina produktov NeoPixel) // Pixely NEO_RGB sú zapojené pre bitový tok RGB (v1 pixelov FLORA, nie v2) // NEO_RGBW Pixely sú zapojené pre bitový tok RGBW (produkty NeoPixel RGBW)

// funkcia setup () - prebieha raz pri štarte --------------------------------

void setup () {// Tieto linky sú konkrétne na podporu Adafruit Trinket 5V 16 MHz. // Akúkoľvek inú dosku môžete odstrániť, ale nie je na škodu ju ponechať: #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END of Trinket-špecifický kód.

pinMode (A0, INPUT); strip.begin (); // INICIALIZUJTE objekt objektu NeoPixel (POVINNÝ) strip.show (); // VYPNITE všetky pixely ASAP strip.setBrightness (10); // Nastavte BRIGHTNESS na približne 1/5 (max = 255)}

// funkcia loop ()-beží opakovane, pokiaľ je doska zapnutá ---------------

void loop () {clickedCorrectly = TheaterChaseOne (farba); if (clickedSprávne) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Niektoré naše vlastné funkcie na vytváranie animovaných efektov -----------------

// Divadlo-stan v štýle naháňa svetla. Prejdite farbou (32-bitová hodnota, // pásik la. Farba (r, g, b), ako je uvedené vyššie), a čas oneskorenia (v ms) // medzi snímkami. bool TheaterChaseOne (farba uint32_t) {bool correct = false; BOOL clickedWrong = false; pre (int index = 0; index 800) {// hodnota svetelného senzora if (index <16) {// 2 LED pred koncom, potom môžete kliknúť na color = strip. Color (255, 0, 0); // červená LED dióda klikla Nesprávne = true; // klikli zle, potom diódy sčervenali} else if (! clickedWrong) {// ak nie zle color = strip. Color (0, 255, 0); // farba zelená LED diódy korigovať = true; // klikli ste správne, potom sa LED diódy zazelenajú}} strip.clear (); strip.setPixelColor (17 - index, farba); // prvý riadok LED svetiel strip.setPixelColor (18 + index, farba); // druhý riadok LED svetiel strip.setPixelColor (53 - index, farba); // tretia rada led svetiel strip.show (); oneskorenie (300); } Vráti správne; }

Krok 6: Zmeny

Zmeny
Zmeny
Zmeny
Zmeny
Zmeny
Zmeny

Urobil som nejaké zmeny. Za prvé som arduino schoval, takže by bolo pohodlnejšie používať „ruku Rythma“a za druhé som trochu zmenil kód. Zmenil som kód tak, aby keď v správnom momente stlačíte, farba sa zmení na zelenú a LED diódy sa pohybujú rýchlejšie. Tým LED pomyje stala pred 10% rýchlejší ako. Vďaka tomu je hra zaujímavejšia

Takto vyzerá kód teraz:

// Základné každodenné NeoPixel testovací prúžok programu. // NAJLEPŠIE POSTUPY NEOPIXELU pre najspoľahlivejšiu prevádzku: // - Pridajte 1000 uF KAPACITORA medzi spoje + a - na páse NeoPixel. // - MINIMALIZUJTE DĹŽKU zapojenia medzi doskou mikrokontroléra a prvým pixelom. //-DATA-IN prúžku NeoPixelu by mal prechádzať cez 300-500 OHM odpor. // - VYHNITE SA prepojeniu NeoPixelov na ŽIVOM OBVODE. Ak musíte, VŽDY // najskôr pripojte GROUND (-), potom +, potom dáta. //-Pri použití 3,3 V mikrokontroléra s 5V napájaným pásikom NeoPixel // LOGIC-LEVEL CONVERTER na dátovom vedení DOPORUČUJEME. // (Ich preskočenie môže na vašom pracovnom stole fungovať dobre, ale v teréne môže zlyhať) #include #ifdef _AVR_ #include // Vyžadované pre 16 MHz Adafruit Trinket #endif // Ktorý pin na Arduine je pripojený k NeoPixels? // Na Trinket alebo Gemma navrhujeme zmeniť toto na 1: #define LED_PIN 6 // Koľko NeoPixelov je pripojených k Arduinu? #define LED_COUNT 60 // Deklarujte náš objekt pásu NeoPixel: pás Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t farba = pásik. Farba (127, 127, 127); // Biela farba, predvolene bool clickedCorrectly = false; int index = 0; int interval = 300; int výsledok = 0; unsigned long previousMs = Millis (); // Argument 1 = počet pixelov v páse NeoPixel // Argument 2 = počet pinov Arduino (väčšina z nich je platná) // Argument 3 = vlajky typu pixelov, sčítajte podľa potreby: // NEO_KHZ800 800 KHz bitstream (väčšina produktov NeoPixel w/ LED WS2812) // NEO_KHZ400 400 KHz (klasické „v1“(nie v2) pixely FLORA, ovládače WS2811) // Pixely NEO_GRB sú zapojené pre bitový tok GRB (väčšina produktov NeoPixel) // Pixely NEO_RGB sú zapojené pre bitový tok RGB (v1 pixelov FLORA, nie v2) // NEO_RGBW Pixely sú zapojené pre bitový tok RGBW (produkty NeoPixel RGBW) // funkcia setup ()-spustí sa raz pri štarte -------------------- ------------ void setup () {// Tieto riadky sú určené špeciálne na podporu Adafruit Trinket 5V 16 MHz. // Akúkoľvek inú dosku môžete odstrániť, ale nie je na škodu ju ponechať: #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END kódu špecifického pre Trinket. Serial.begin (9600); while (! Serial) {; // počkajte na pripojenie sériového portu. Potrebné iba pre natívny port USB} pinMode (A0, INPUT); strip.begin (); // INICIALIZUJTE objekt objektu NeoPixel (POVINNÝ) strip.show (); // VYPNITE všetky pixely ASAP strip.setBrightness (10); // Nastavte BRIGHTNESS na asi 1/5 (max = 255)} // funkcia loop ()-beží opakovane, pokiaľ je doska zapnutá --------------- void loop () {unsigned long currentMs = millis (); // Získanie aktuálnej hodnoty času int = analogRead (A0); // Čítanie aktuálneho svetelného senzora if (hodnota> 900 && result == 0) {// Ak je senzor stlačený a zatiaľ nebol zaznamenaný žiadny výsledok, spustite zachytenie výsledku if (index = interval) {// Skontrolujte, či je aktuálny slučka presahuje interval previousMs = currentMs; // nastaviť nový interval na aktuálny čas + intervale indexu + = 1; // Nastavte diódy v slučke o krok ďalej, ak (index> 17) {// Spustí koniec spracovania slučky index = 0; if (result == 2) {// Na správnom výsledku interval = = (int) max ((interval * 0,95), 50); // Zrýchlenie o 10%, interval až 50 ms/ farba = pásik. Farba (0, 255, 0); // Nastavte diódy na zelené} else if (result == 1) {// Na nesprávnom výsledku = 300; // Reset intervalu color = strip. Color (255, 0, 0); // Nastavte diódy na červené} else {// Žiadny výsledok zachytená farba = pás. Color (255, 0, 0); // Nastaviť LED diódy na červené} result = 0; // Resetovanie výsledku pre ďalšiu slučku} TheaterChaseOne (farba, index); // rozsvieti LED pre indikáciu. }} // Niektoré vlastné funkcie na vytváranie animovaných efektov ----------------- // Prenasledujúce svetlá v štýle divadla. Prejdite farbou (32-bitová hodnota, // a la pásik. Farba (r, g, b) ako je uvedené vyššie) a čas oneskorenia (v ms) // medzi snímkami. neplatné divadloChaseOne (uint32_t farba, int index) {strip.clear (); strip.setPixelColor (17 - index, farba); // prvý riadok LED svetiel strip.setPixelColor (18 + index, farba); // druhý riadok LED svetiel strip.setPixelColor (53 - index, farba); // tretia rada led svetiel strip.show (); }

Odporúča: