Obsah:

Rytmická ruka: 6 kroků
Rytmická ruka: 6 kroků

Video: Rytmická ruka: 6 kroků

Video: Rytmická ruka: 6 kroků
Video: Rytmus a pravá ruka - Škola ukulele Matěje Homoly #6 2024, Červenec
Anonim
Rytmická ruka
Rytmická ruka

Tato cyberglove je o správném pohybu ve správný okamžik.

Světla jdou z vaší paže (lokte) do vaší ruky, a když vám světla přijdou do ruky, musíte prsty přitlačit na mini fotobuňku.

Pokud ve správný okamžik stisknete ruku na mini fotobuňku, diody se rozsvítí zeleně. Pokud ne, LED diody zčervená.

Krok 1: Sbírejte materiály

  • Rukavice
  • Tkanina, která prodlouží rukavici
  • WS2812B LED pásek
  • Dráty
  • Arduino
  • Mini photosell

Krok 2: Vytváření obvodů

Vytváření obvodů
Vytváření obvodů
Vytváření obvodů
Vytváření obvodů

Nejprve připojte LED pásek k arduinu. Můžete to udělat připojením +5v k 5v na arduinu. Din musí být připojen k A0 na arduinu a GND musí být připojen k GND na arduinu.

Musíte také připojit mini fotobuňku k arduinu připojením k 5v drátu z LED pásku a ze stejného zdroje spojeného vodičem na PIN 6 na arduinu. Druhá strana mini fotobuňky musí být připojena k vodiči GND z LED pásky

Krok 3: Navrhování rukavice

Navrhování rukavice
Navrhování rukavice

Rukavice musí mít správnou velikost, aby odpovídala LED páskům. LED diody musí být zarovnány, aby byl příjemnější na pohled.

Pro tuto hru musíte použít paži a chcete, abyste se mohli volně pohybovat. Toho lze dosáhnout nasazením arduina na rukavici. Použil jsem suchý zip jako spojovací materiál a přilepil arduino k rukavici. Poté pro zajištění větší stability můžete kolem rukavice a arduina navléknout lano.

Mini fotobuňka byla všita uvnitř rukavice, takže zůstane na svém místě.

Nakonec musíte dráty schovat, aby vypadaly lépe. To lze provést látkou, která bude přišita na horní část drátů.

Krok 4: Pájení

Pájení
Pájení

Nyní můžete spojovací vodiče z obvodu zajistit pájením.

Krok 5: Kódování

Kódování
Kódování
Kódování
Kódování
Kódování
Kódování

// Základní každodenní testovací program proužků NeoPixel.

// NEOPIXEL NEJLEPŠÍ POSTUPY pro nejspolehlivější provoz: // - Přidejte 1000 uF KAPACITORU mezi připojení + a - pásku NeoPixel. // - MINIMALIZUJTE DÉLKU ZAPOJENÍ mezi deskou mikrokontroléru a prvním pixelem. //-DATA-IN proužku NeoPixel by měl procházet rezistorem 300-500 OHM. // - VYHNĚTE se připojení NeoPixelů na ŽIVÉM OBVODU. Pokud musíte, VŽDY // nejprve připojte GROUND (-), pak +, pak data. //-Při použití 3,3V mikrokontroléru s 5V napájeným pásem NeoPixel je // DOPORUČENĚ DOPORUČENO LOGIC-LEVEL CONVERTER na datové lince. // (Jejich přeskočení může na vašem pracovním stole fungovat dobře, ale v poli může selhat)

#include #ifdef _AVR_ #include // Vyžadováno pro 16 MHz Adafruit Trinket #endif

// Který pin na Arduinu je připojen k NeoPixelům? // Na Trinketu nebo Gemmě doporučujeme změnit toto na 1: #define LED_PIN 6

// Kolik NeoPixelů je připojeno k Arduinu? #define LED_COUNT 60

// Deklarujte náš objekt pásu NeoPixel: proužek Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Bílá barva, pro výchozí bool clickedCorrectly = false; // Argument 1 = počet pixelů v pásu NeoPixel // Argument 2 = počet pinů Arduino (většina je platná) // Argument 3 = příznaky typu pixelů, sčítejte podle potřeby: // NEO_KHZ800 800 KHz bitstream (většina produktů NeoPixel w/ WS2812 LED) // NEO_KHZ400 400 KHz (klasický 'v1' (ne v2) pixely FLORA, ovladače WS2811) // NEO_GRB Pixely jsou zapojeny pro bitový tok GRB (většina produktů NeoPixel) // NEO_RGB Pixely jsou zapojeny pro bitový tok RGB (v1 pixely FLORA, ne v2) // NEO_RGBW Pixely jsou zapojeny pro bitový tok RGBW (produkty NeoPixel RGBW)

// funkce setup ()-spustí se jednou při spuštění --------------------------------

void setup () {// Tyto linky jsou speciálně pro podporu Adafruit Trinket 5V 16 MHz. // Tuto desku můžete odebrat z jakékoli jiné desky (ale bez poškození): #if definováno (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END kódu specifického pro Trinket.

pinMode (A0, INPUT); strip.begin (); // INICIALIZUJTE objekt pásu NeoPixel (POVINNÝ) strip.show (); // VYPNĚTE všechny pixely ASAP strip.setBrightness (10); // Nastavte BRIGHTNESS na přibližně 1/5 (max = 255)}

// funkce loop ()-běží opakovaně, dokud je deska zapnutá ---------------

void loop () {clickedCorrectly = TheaterChaseOne (barva); if (clickedCorrectly) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Některé naše vlastní funkce pro vytváření animovaných efektů -----------------

// Pronásledující světla ve stylu divadelního stanu. Předejte barvu (32bitová hodnota, // a la strip. Color (r, g, b) jak je uvedeno výše), a čas zpoždění (v ms) // mezi snímky. bool TheaterChaseOne (barva uint32_t) {bool correct = false; bool clickedWrong = false; for (int index = 0; index 800) {// hodnota světelného senzoru if (index <16) {// 2 leds before end then you can click color = strip. Color (255, 0, 0); // červená barva LED klikla Špatně = true; // klikli špatně, pak se LED začaly červeně} else if (! clickedWrong) {// if not bad color = strip. Color (0, 255, 0); // zelená barva leds correct = true; // klikli správně, pak se diody rozsvítí zeleně}} strip.clear (); strip.setPixelColor (17 - index, barva); // první řada LED světel strip.setPixelColor (18 + index, barva); // druhá řada LED světel strip.setPixelColor (53 - index, barva); // třetí řada LED světel strip.show (); zpoždění (300); } vrátit správně; }

Krok 6: Změny

Změny
Změny
Změny
Změny
Změny
Změny

Udělal jsem nějaké změny. Za prvé jsem arduino schoval, takže by bylo pohodlnější použít „rythmskou ruku“a za druhé jsem trochu změnil kód. Změnil jsem kód tak, že když ve správný okamžik stisknete, barva zezelená a LED se pohybují rychleji. Díky tomu se LED Swill stane o 10% rychlejší než dříve. Tím je hra zajímavější

Takto vypadá kód nyní:

// Základní každodenní testovací program proužků NeoPixel. // NEOPIXEL NEJLEPŠÍ POSTUPY pro nejspolehlivější provoz: // - Přidejte 1000 uF KAPACITORU mezi připojení + a - pásku NeoPixel. // - MINIMALIZUJTE DÉLKU ZAPOJENÍ mezi deskou mikrokontroléru a prvním pixelem. //-DATA-IN proužku NeoPixel by měl procházet rezistorem 300-500 OHM. // - VYHNĚTE se připojení NeoPixelů na ŽIVÉM OBVODU. Pokud musíte, VŽDY // nejprve připojte GROUND (-), pak +, pak data. //-Při použití 3,3V mikrokontroléru s 5V napájeným pásem NeoPixel je // DOPORUČENĚ DOPORUČENO LOGIC-LEVEL CONVERTER na datové lince. // (Jejich přeskočení může na vašem pracovním stole fungovat dobře, ale v poli může selhat) #include #ifdef _AVR_ #include // Vyžadováno pro 16 MHz Adafruit Trinket #endif // Který pin na Arduinu je připojen k NeoPixelům? // Na Trinketu nebo Gemmě doporučujeme změnit toto na 1: #define LED_PIN 6 // Kolik NeoPixelů je připojeno k Arduinu? #define LED_COUNT 60 // Deklarujte náš objekt pásu NeoPixel: proužek Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Bílá barva, pro výchozí bool clickedCorrectly = false; int index = 0; int interval = 300; int výsledek = 0; unsigned long previousMs = millis (); // Argument 1 = počet pixelů v pásu NeoPixel // Argument 2 = počet pinů Arduino (většina je platná) // Argument 3 = příznaky typu pixelů, sčítejte podle potřeby: // NEO_KHZ800 800 KHz bitstream (většina produktů NeoPixel w/ WS2812 LED) // NEO_KHZ400 400 KHz (klasický 'v1' (ne v2) FLORA pixely, ovladače WS2811) // NEO_GRB Pixely jsou zapojeny pro GRB bitstream (většina produktů NeoPixel) // NEO_RGB Pixely jsou zapojeny pro RGB bitstream (v1 FLORA pixely, ne v2) // NEO_RGBW Pixely jsou zapojeny pro bitový tok RGBW (produkty NeoPixel RGBW) // funkce setup ()-spustí se jednou při spuštění -------------------- ------------ void setup () {// Tyto řádky jsou speciálně pro podporu Adafruit Trinket 5V 16 MHz. // Tuto desku můžete odebrat z jakékoli jiné desky (ale bez poškození): #if definováno (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END kódu specifického pro Trinket. Serial.begin (9600); while (! Serial) {; // počkejte, až se připojí sériový port. Potřebné pouze pro nativní port USB} pinMode (A0, INPUT); strip.begin (); // INICIALIZUJTE objekt pásu NeoPixel (POVINNÝ) strip.show (); // VYPNĚTE všechny pixely ASAP strip.setBrightness (10); // Nastavte BRIGHTNESS na asi 1/5 (max = 255)} // funkce loop ()-běží opakovaně, dokud je deska zapnutá --------------- void loop () {unsigned long currentMs = millis (); // Získání aktuální časové int hodnoty = analogRead (A0); // Čtení aktuálního světelného senzoru if (hodnota> 900 && result == 0) {// Pokud je senzor stisknutý a dosud nebyl zaznamenán žádný výsledek, spusťte zachycení výsledku if (index = interval) {// Zkontrolujte, zda aktuální smyčka překračuje interval previousMs = currentMs; // Nastavit nový interval na aktuální čas + index intervalu + = 1; // Nastavte diody o krok dále ve smyčce if (index> 17) {// Spustí konec zpracování smyčky index = 0; if (result == 2) {// Na správném výsledku interval = (int) max ((interval * 0,95), 50); // Zrychlení o 10%, interval až 50 ms/ barva = pruh. Color (0, 255, 0); // Nastavte diody na zelenou} else if (result == 1) {// Na nesprávném výsledku výsledku = 300; // Reset intervalu color = strip. Color (255, 0, 0); // Nastavte diody na červené} else {// Žádný výsledek zachycená barva = strip. Color (255, 0, 0); // Nastavit diody na červené} result = 0; // Reset výsledku pro další smyčku} TheaterChaseOne (barva, index); // Rozsviťte LED diody pro zobrazení. }} // Některé naše vlastní funkce pro vytváření animovaných efektů ----------------- // Pronásledující světla ve stylu divadelního markýzy. Projděte barvou (32bitová hodnota, // a la proužek. Barva (r, g, b), jak je uvedeno výše), a doba zpoždění (v ms) // mezi snímky. void TheaterChaseOne (barva uint32_t, int index) {strip.clear (); strip.setPixelColor (17 - index, barva); // první řada LED světel strip.setPixelColor (18 + index, barva); // druhá řada LED světel strip.setPixelColor (53 - index, barva); // třetí řada LED světel strip.show (); }

Doporučuje: