Tartalomjegyzék:

Ritmus kéz: 6 lépés
Ritmus kéz: 6 lépés

Videó: Ritmus kéz: 6 lépés

Videó: Ritmus kéz: 6 lépés
Videó: A helyes kézmosás 6 lépésben 2024, Július
Anonim
Ritmus kéz
Ritmus kéz

Ez a cyberlove arról szól, hogy a megfelelő lépést a megfelelő pillanatban tegye meg.

A fények a karodtól (könyöködtől) a kezed felé haladnak, és amikor a fények a kezedhez érnek, akkor meg kell nyomnod az ujjaidat a mini fotocellán.

Ha a megfelelő pillanatban nyomja meg a kezét a mini fotocellán, a LED -ek zöldre váltanak. Ha nem, a LED -ek pirossá válnak.

Lépés: Gyűjtse össze az anyagokat

  • Kesztyű
  • Anyag, amely hosszabbá teszi a kesztyűt
  • WS2812B LED szalag
  • Vezetékek
  • Arduino
  • Mini fotóeladó

2. lépés: Áramkörök készítése

Áramkörök készítése
Áramkörök készítése
Áramkörök készítése
Áramkörök készítése

Először csatlakoztassa a led szalagot az arduino -hoz. Ezt úgy teheti meg, hogy a +5v -ot az arduino 5V -jához csatlakoztatja. A Din -t az arduino A0 -jához, a GND -t pedig az arduino GND -hez kell csatlakoztatni.

Ezenkívül a mini fotocellát az arduino -hoz kell csatlakoztatnia az 5 V -os vezetékhez való csatlakoztatás révén, és ugyanabból a forrásból, amely egy vezetékkel csatlakozik az arduino PIN -kódjához. A mini fotocella másik oldalát a LED szalag GND vezetékéhez kell csatlakoztatni

3. lépés: A kesztyű tervezése

A kesztyű tervezése
A kesztyű tervezése

A kesztyűnek megfelelő méretűnek kell lennie ahhoz, hogy illeszkedjen a ledszalagokhoz. A LED -eket igazítani kell, hogy élvezetesebb legyen nézni.

Ehhez a játékhoz a karját kell használnia, és szabad mozgást szeretne. Ez úgy valósítható meg, hogy az arduino -t a kesztyűre helyezi. Tépőzárral rögzítettem az arduinót a kesztyűhöz. A nagyobb stabilitás érdekében kötelet köthet a kesztyű és az arduino körül.

A mini fotocellát a kesztyű belsejébe varrták, így a helyén marad.

Végül el kell rejtenie a vezetékeket, hogy jobban nézzen ki. Ezt megteheti szövetekkel, amelyeket a vezetékek tetejére varrnak.

4. lépés: Forrasztás

Forrasztás
Forrasztás

Most forrasztással biztonságossá teheti az áramkör csatlakozóvezetékeit.

5. lépés: Kódolás

Kódolás
Kódolás
Kódolás
Kódolás
Kódolás
Kódolás

// Alapvető mindennapi NeoPixel szalag tesztprogram.

// A NEOPIXEL LEGJOBB GYAKORLATA a legmegbízhatóbb működéshez: // - Adjon hozzá 1000 uF KAPACITORT a NeoPixel szalag + és - csatlakozásaihoz. // - MINIMÁLI A VEZETÉK HOSSZÁT a mikrokontroller kártya és az első pixel között. //-A NeoPixel szalag DATA-IN-jének 300-500 OHM-os ellenálláson kell áthaladnia. // - Kerülje a NeoPixelek csatlakoztatását ÉLŐ ÁRAMKÖRÖN. Ha szükséges, MINDIG // először csatlakoztassa a GROUND (-), majd a +, majd az adatokat. //-Ha 3,3 V-os mikrokontrollert használ 5 V-os NeoPixel szalaggal, // a LOGIC-LEVEL CONVERTER az adatvonalon ERŐSEN JAVASOLT. // (Ezek kihagyása működhet rendesen a munkaasztalon, de nem sikerül a területen)

#include #ifdef _AVR_ #include // 16 MHz -es Adafruit csecsebecséhez szükséges #endif

// Az Arduino melyik csapja csatlakozik a NeoPixelshez? // Egy csecsebecse vagy Gemma esetén javasoljuk, hogy ezt változtassa meg 1 -re: #define LED_PIN 6

// Hány NeoPixel kapcsolódik az Arduino -hoz? #define LED_COUNT 60

// NeoPixel szalag objektumunk deklarálása: Adafruit_NeoPixel szalag (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t szín = csík. Szín (127, 127, 127); // Fehér szín, alapértelmezett bool kattintvaCorrectly = false; // Argument 1 = A pixelek száma a NeoPixel szalagon // Argument 2 = Arduino pin number (legtöbb érvényes) // Argument 3 = Pixel típusú zászlók, szükség szerint összeadva: // NEO_KHZ800 800 KHz bitfolyam (a legtöbb NeoPixel termék WS2812 LED -ek) // NEO_KHZ400 400 KHz (klasszikus 'v1' (nem v2) FLORA képpontok, WS2811 illesztőprogramok) // NEO_GRB Pixelek GRB bitfolyamhoz vannak kötve (a legtöbb NeoPixel termék) // A NEO_RGB képpontok RGB bitfolyamhoz vannak kötve (v1 FLORA képpontok), nem v2) // NEO_RGBW A Pixelek vezetékesek az RGBW bitfolyamhoz (NeoPixel RGBW termékek)

// setup () függvény-indításkor egyszer fut --------------------------------

void setup () {// Ezek a sorok kifejezetten az Adafruit Trinket 5V 16 MHz támogatását szolgálják. // Bármely más fórumon eltávolíthatja ezt a részt (de nem árt ha hagyja): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END of Trinket-specifikus kód.

pinMode (A0, INPUT); strip.begin (); // INICIALIZÁLÁS NeoPixel szalag objektum (SZÜKSÉGES) strip.show (); // Kapcsolja ki az összes pixelt ASAP strip.setBrightness (10); // Állítsa a FÉNYESSÉGET körülbelül 1/5 értékre (max = 255)}

// loop () függvény-ismétlődően fut, amíg a tábla be van kapcsolva ---------------

void loop () {kattintottCorrectly = TheaterChaseOne (szín); if (helyesen kattintott) {color = strip. Color (0, 255, 0); } else {szín = csík. Szín (255, 0, 0); }}

// Néhány saját funkció animált effektek létrehozásához -----------------

// Színházi sátor stílusú üldöző fények. Adjon meg egy színt (32 bites érték, // a la csík. Szín (r, g, b), ahogy fent említettük), és késleltetési időt (ms-ban) // a keretek között. bool TheaterChaseOne (uint32_t color) {bool correct = false; bool kattintottWrong = false; for (int index = 0; index 800) {// érték a fényérzékelő, ha (index <16) {// 2 led a vége előtt, akkor rákattinthat a color = strip. Color (255, 0, 0); // piros színű LED -ek kattintottakWrong = true; // rosszul kattintott, majd a ledek pirosra változtak} else if (! clickWrong) {// ha nem rossz szín = csík. Szín (0, 255, 0); // zöld színű ledek helyes = igaz; // helyesen kattintott, majd a ledek zöldre váltak}} strip.clear (); strip.setPixelColor (17 - index, szín); // első sor led fények strip.setPixelColor (18 + index, szín); // második sor led fények strip.setPixelColor (53 - index, szín); // harmadik sor led fények csík.show (); késleltetés (300); } visszatérés helyes; }

6. lépés: Változások

Változtatások
Változtatások
Változtatások
Változtatások
Változtatások
Változtatások

Végeztem néhány változtatást. Először is elrejtettem az arduino -t, hogy kényelmesebb legyen a "Rythm hand" használata, másodszor pedig kicsit megváltoztattam a kódot. A kódot úgy változtattam meg, hogy amikor megnyomja a megfelelő pillanatban, a szín zöld lesz, és a LED -ek gyorsabban mozognak. Ezzel a LED Swill 10% -kal gyorsabb lesz, mint korábban. Ez érdekesebbé teszi a játékot

A kód most így néz ki:

// Alapvető mindennapi NeoPixel szalag tesztprogram. // A NEOPIXEL LEGJOBB GYAKORLATA a legmegbízhatóbb működéshez: // - Adjon hozzá 1000 uF KAPACITORT a NeoPixel szalag + és - csatlakozásaihoz. // - MINIMÁLI A VEZETÉK HOSSZÁT a mikrokontroller kártya és az első pixel között. //-A NeoPixel szalag DATA-IN-jének 300-500 OHM-os ellenálláson kell áthaladnia. // - Kerülje a NeoPixelek csatlakoztatását ÉLŐ ÁRAMKÖRÖN. Ha szükséges, MINDIG // először csatlakoztassa a GROUND (-), majd a +, majd az adatokat. //-Ha 3,3 V-os mikrokontrollert használ 5 V-os NeoPixel szalaggal, // a LOGIC-LEVEL CONVERTER az adatvonalon ERŐSEN JAVASOLT. // (Ezek kihagyása működhet rendesen a munkaasztalon, de nem sikerül a területen) #include #ifdef _AVR_ #include // Szükséges a 16 MHz -es Adafruit csecsebecséhez #endif // Az Arduino melyik tűje csatlakozik a NeoPixels -hez? // Egy csecsebecse vagy Gemma esetén javasoljuk, hogy ezt változtassa meg 1 -re: #define LED_PIN 6 // Hány NeoPixel van az Arduino -hoz csatlakoztatva? #define LED_COUNT 60 // NeoPixel szalag objektumunk deklarálása: Adafruit_NeoPixel szalag (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t szín = csík. Szín (127, 127, 127); // Fehér szín, alapértelmezett bool kattintvaCorrectly = false; int index = 0; int intervallum = 300; int eredmény = 0; előjel nélküli hosszú előzőMs = millis (); // Argument 1 = A pixelek száma a NeoPixel szalagon // Argument 2 = Arduino pin number (legtöbb érvényes) // Argument 3 = Pixel típusú zászlók, szükség szerint összeadva: // NEO_KHZ800 800 KHz bitfolyam (a legtöbb NeoPixel termék WS2812 LED -ek) // NEO_KHZ400 400 KHz (klasszikus 'v1' (nem v2) FLORA képpontok, WS2811 illesztőprogramok) // NEO_GRB Pixelek GRB bitfolyamhoz vannak kötve (a legtöbb NeoPixel termék) // A NEO_RGB képpontok RGB bitfolyamhoz vannak kötve (v1 FLORA képpontok), nem v2) // NEO_RGBW A Pixelek be vannak kötve az RGBW bitfolyamhoz (NeoPixel RGBW termékek) // setup () függvény-indításkor egyszer fut -------------------- ------------ void setup () {// Ezek a sorok kifejezetten az Adafruit Trinket 5V 16 MHz támogatását szolgálják. // Bármely más tábla eltávolíthatja ezt a részt (de nem árt, ha elhagyja): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END a Trinket-specifikus kód. Sorozat.kezdet (9600); while (! Sorozat) {; // várjon, amíg a soros port csatlakozik. Csak natív USB -porthoz szükséges} pinMode (A0, INPUT); strip.begin (); // INICIALIZÁLÁS NeoPixel szalag objektum (SZÜKSÉGES) strip.show (); // Kapcsolja ki az összes pixelt ASAP strip.setBrightness (10); // A FÉNYESSÉG beállítása körülbelül 1/5 (max = 255)} // loop () függvény-ismétlődően fut, amíg a tábla be van kapcsolva --------------- void loop () {unsigned long currentMs = millis (); // Az aktuális idő lekérése int érték = analogRead (A0); // Az aktuális fényérzékelő leolvasása, ha (érték> 900 && eredmény == 0) {// Ha az érzékelőt megnyomja, és még nincs eredmény rögzítve, indítsa el az eredmény rögzítését, ha (index = intervallum) {// Ellenőrizze, hogy az aktuális ciklus meghaladja az előzőMs = aktuálisMs intervallumot; // Az új intervallum beállítása az aktuális idő + intervallum index + = 1; // Állítsa a LED -eket egy lépéssel tovább a ciklusban, ha (index> 17) {// A ciklusvége indításának vége index = 0; if (eredmény == 2) {// Helyes eredményintervallumon = (int) max ((intervallum * 0,95), 50); // 10%-os gyorsítás, 50 ms intervallumig/ color = strip. Color (0, 255, 0); // Állítsa a ledeket zöldre} else if (result == 1) {// Helytelen eredményintervallumon = 300; // Az intervallum visszaállítása color = strip. Color (255, 0, 0); // Állítsa a LED -eket pirosra} else {// Ha nincs eredmény, akkor szín = csík. Szín (255, 0, 0); // Állítsa pirosra a ledeket} result = 0; // A következő ciklus eredményének visszaállítása} TheaterChaseOne (szín, index); // Világítsa meg a LED -eket a megjelenítéshez. }} // Néhány saját funkció animált effektek létrehozásához ----------------- // Színházi sátor stílusú üldöző fények. Adjon meg egy színt (32 bites érték, // a la csík. Szín (r, g, b), ahogy fent említettük), és késleltetési időt (ms-ban) // a keretek között. void TheaterChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - index, szín); // első sor led fények strip.setPixelColor (18 + index, szín); // második sor led fények strip.setPixelColor (53 - index, szín); // harmadik sor led fények csík.show (); }

Ajánlott: