Kazalo:

Ritemska roka: 6 korakov
Ritemska roka: 6 korakov

Video: Ritemska roka: 6 korakov

Video: Ritemska roka: 6 korakov
Video: Микс😵 из классики😇 и рока👹🤘🤘 #shorts 2024, Julij
Anonim
Ritemska roka
Ritemska roka

Ta cyberglove govori o pravilni potezi v pravem trenutku.

Luči gredo od vaše roke (komolca) do vaše roke in ko lučke prispejo do vaše roke, morate pritisniti prste na mini fotocelico.

Če v pravem trenutku pritisnete roko na mini fotocelico, svetleče diode postanejo zelene. V nasprotnem primeru svetleče diode postanejo rdeče.

1. korak: Zberite materiale

  • Rokavica
  • Tkanina za podaljšanje rokavice
  • WS2812B LED trak
  • Žice
  • Arduino
  • Mini fotoprodaja

2. korak: Izdelava vezij

Izdelava vezij
Izdelava vezij
Izdelava vezij
Izdelava vezij

Najprej povežite LED trak z arduinom. To lahko storite tako, da priključite +5v na 5v na arduinu. Din mora biti priključen na A0 na arduinu, GND pa na GND na arduinu.

Mini fotocelico morate priključiti tudi na arduino tako, da se na 5 -voltno žico povežete z LED traku in iz istega vira povežete z žico na PIN 6 na arduinu. Druga stran mini fotocelice mora biti priključena na žico GND z LED traku

3. korak: Oblikovanje rokavice

Oblikovanje rokavic
Oblikovanje rokavic

Rokavica mora biti ustrezne velikosti, da se prilega LED trakovom. Svetleče diode morajo biti poravnane, da bodo videti prijetnejše.

Za to igro morate uporabiti roko in se želite svobodno gibati. To lahko uresničite tako, da arduino postavite na rokavico. Za pritrditev arduina na rokavico sem uporabil velcro. Nato lahko za večjo stabilnost vrv položite okoli rokavice in okoli arduina.

Mini fotocelica je všita v rokavico, tako da ostane na svojem mestu.

Nazadnje morate skriti žice, da bo videti bolje. To je mogoče storiti s tkanino, ki bo prišita na žice.

4. korak: Spajkanje

Spajkanje
Spajkanje

Zdaj lahko povežete žice iz vezja z varjenjem.

5. korak: Kodiranje

Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje

// Osnovni vsakodnevni testni program NeoPixel strip.

// NAJBOLJŠE PRAKSE NEOPIXEL -a za najbolj zanesljivo delovanje: // - Dodajte 1000 uF KAPACITORJA med priključkoma + in - na traku NeoPixel. // - Zmanjšajte dolžino ožičenja med ploščo mikrokrmilnika in prvo slikovno piko. //-DATA-IN traku NeoPixel naj bi šel skozi 300-500 OHM RESISTOR. // - Izogibajte se povezovanju NeoPixels na VŽIČU V ŽIVO. Če morate, VEDNO // najprej povežite GROUND (-), nato +, nato podatkov. //-Pri uporabi 3.3V mikrokrmilnika s 5V napajalnim trakom NeoPixel se // MOČNO PRIPOROČA PRETVORNIK LOGIČNE NIVO na podatkovni vrstici. // (Če jih preskočite, lahko na delovni mizi deluje v redu, na terenu pa ne uspe)

#include #ifdef _AVR_ #include // Potrebno za 16 MHz Adafruit Trinket #endif

// Kateri pin na Arduinu je povezan z NeoPixels? // Na Trinketu ali Gemmi predlagamo, da to spremenite v 1: #define LED_PIN 6

// Koliko NeoPixels je priključenih na Arduino? #define LED_COUNT 60

// Razglasimo naš objekt traku NeoPixel: trak Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Bela barva, za privzeto bool clickedCorrect = false; // Argument 1 = Število slikovnih pik v traku NeoPixel // Argument 2 = Številka pin Arduino (večina je veljavnih) // Argument 3 = Oznake tipa slikovnih pik, po potrebi seštejte: // NEO_KHZ800 800 KHz bitni tok (večina izdelkov NeoPixel z/ WS2812 LED) // NEO_KHZ400 400 KHz (klasični 'v1' (ne v2) slikovnih pik FLORA, gonilniki WS2811) // NEO_GRB Piksli so ožičeni za bitni tok GRB (večina izdelkov NeoPixel) // NEO_RGB Piksli so povezani za bitni tok RGB (v1 FLORA slikovnih pik, ne v2) // NEO_RGBW Piksli so povezani za RGBW bitstream (izdelki NeoPixel RGBW)

// funkcija setup ()-zažene se enkrat ob zagonu --------------------------------

void setup () {// Te vrstice posebej podpirajo Adafruit Trinket 5V 16 MHz. // Katero koli drugo ploščo, lahko odstranite ta del (vendar brez škode, če ga pustite): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // KONEC kode, specifične za Trinket.

pinMode (A0, INPUT); strip.begin (); // INICIALIZE NeoPixel strip object (REQUIRED) strip.show (); // IZKLOPI vse slikovne pike ASAP strip.setBrightness (10); // BRIGHTNESS nastavite na približno 1/5 (max = 255)}

// funkcija loop ()-deluje večkrat, dokler je plošča na ---------------

void loop () {clickedCorrect = theatreChaseOne (barva); if (pravilno kliknjeno) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Nekatere lastne funkcije za ustvarjanje animiranih učinkov -----------------

// Lovske luči v slogu gledališča. Prenesite barvo (32-bitna vrednost, // a la strip. Barva (r, g, b), kot je omenjeno zgoraj), in čas zamika (v ms) // med okvirji. bool theatreChaseOne (barva uint32_t) {bool pravilno = napačno; bool clickedWrong = false; for (int index = 0; index 800) {// vrednost svetlobnega senzorja if (index <16) {// 2 LED pred koncem, potem lahko kliknete color = strip. Color (255, 0, 0); // rdeče barve LED kliknjenoWrong = true; // če so kliknili narobe, svetleče diode postanejo rdeče} else if (! clickedWrong) {// če ni napačno color = strip. Color (0, 255, 0); // svetleče diode zelene barve pravilno = res; // pravilno kliknili, svetleče diode postanejo zelene}} strip.clear (); strip.setPixelColor (17 - indeks, barva); // LED vrstice v prvi vrsti strip.setPixelColor (18 + indeks, barva); // trak za LED luči druge vrstice.setPixelColor (53 - kazalo, barva); // LED luči v tretji vrsti strip.show (); zamuda (300); } pravilna vrnitev; }

6. korak: Spremembe

Spremembe
Spremembe
Spremembe
Spremembe
Spremembe
Spremembe

Naredil sem nekaj sprememb. Najprej sem skril arduino, da bi bilo bolj udobno uporabljati "Rythmovo roko", drugič pa sem nekoliko spremenil kodo. Kodo sem spremenil tako, da ob pravem pritisku barva postane zelena in LED diode se premikajo hitreje. S tem bo LED Swill postal 10% hitrejši kot prej. Zaradi tega je igra bolj zanimiva

Tako je koda zdaj:

// Osnovni vsakdanji testni program za trakove NeoPixel. // NAJBOLJŠE PRAKSE NEOPIXEL -a za najbolj zanesljivo delovanje: // - Dodajte 1000 uF KAPACITORJA med priključkoma + in - na traku NeoPixel. // - Zmanjšajte dolžino ožičenja med ploščo mikrokrmilnika in prvo slikovno piko. //-DATA-IN traku NeoPixel naj bi šel skozi 300-500 OHM RESISTOR. // - Izogibajte se povezovanju NeoPixels na VŽIČU V ŽIVO. Če morate, VEDNO // najprej povežite GROUND (-), nato +, nato podatkov. //-Pri uporabi 3.3V mikrokrmilnika s 5V napajalnim trakom NeoPixel se // MOČNO PRIPOROČA PRETVORNIK LOGIČNE NIVO na podatkovni vrstici. // (Preskok teh možnosti lahko deluje v redu na vaši delovni mizi, vendar lahko na terenu ne uspe) #include #ifdef _AVR_ #include // Potreben za 16 MHz Adafruit Trinket #endif // Kateri pin na Arduinu je priključen na NeoPixels? // Na Trinketu ali Gemmi predlagamo, da to spremenite v 1: #define LED_PIN 6 // Koliko NeoPixel je priključenih na Arduino? #define LED_COUNT 60 // Razglasimo naš objekt traku NeoPixel: trak Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Bela barva, za privzeto bool clickedCorrect = false; int indeks = 0; int interval = 300; int rezultat = 0; nepodpisani dolgi prejšnjiMs = millis (); // Argument 1 = Število slikovnih pik v traku NeoPixel // Argument 2 = Število pin Arduino (večina je veljavnih) // Argument 3 = Oznake tipa slikovnih pik, po potrebi seštejte: // NEO_KHZ800 800 KHz bitni tok (večina izdelkov NeoPixel w/ WS2812 LED) // NEO_KHZ400 400 KHz (klasični 'v1' (ne v2) slikovnih pik FLORA, gonilniki WS2811) // NEO_GRB Piksli so ožičeni za bitni tok GRB (večina izdelkov NeoPixel) // NEO_RGB Piksli so povezani za bitni tok RGB (v1 FLORA slikovnih pik, ne v2) // NEO_RGBW Piksli so povezani za RGBW bitni tok (izdelki NeoPixel RGBW) // funkcija setup ()-zažene se enkrat ob zagonu -------------------- ------------ void setup () {// Te vrstice posebej podpirajo Adafruit Trinket 5V 16 MHz. // Katero koli drugo ploščo, lahko odstranite ta del (vendar brez škode, če ga pustite): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // KONEC kode, specifične za Trinket. Serial.begin (9600); while (! Serijski) {; // počakajte, da se serijska vrata povežejo. Potrebujete samo za domača vrata USB} pinMode (A0, INPUT); strip.begin (); // INICIALIZE NeoPixel strip object (REQUIRED) strip.show (); // IZKLOPI vse slikovne pike ASAP strip.setBrightness (10); // BRIGHTNESS nastavite na približno 1/5 (max = 255)} // funkcija loop ()-deluje večkrat, dokler je plošča na --------------- void loop () {brez podpisa dolgi tokMs = millis (); // Pridobivanje trenutnega časa int value = analogRead (A0); // Odčitavanje trenutnega svetlobnega senzorja if (vrednost> 900 && rezultat == 0) {// Če je senzor pritisnjen in rezultat še ni bil zabeležen, sprožite zajem rezultata če (indeks = interval) {// Preverite, če je trenutni zanka presega interval previousMs = currentMs; // Novi interval nastavimo na trenutni čas + intervalni indeks + = 1; // Nastavimo LED še en korak naprej v zanki if (index> 17) {// Sproži konec indeksa ravnanja zanke = 0; if (rezultat == 2) {// Na pravilnem rezultatskem intervalu = (int) max ((interval * 0,95), 50); // Pospeši za 10%, do intervala do 50 ms/ barva = trak. Barva (0, 255, 0); // LED nastavimo na zeleno} else if (result == 1) {// Na napačnem rezultatskem intervalu = 300; // Ponastavi barvo intervala = strip. Color (255, 0, 0); // nastavimo svetleče diode na rdečo} else {// Brez rezultatov zajeta barva = strip. Color (255, 0, 0); // nastavimo LED na rdečo} result = 0; // Ponastavi rezultat za naslednjo zanko} TheaterChaseOne (barva, indeks); // Osvetlite LED diode za prikaz. }} // Nekatere lastne funkcije za ustvarjanje animiranih učinkov ----------------- // Lovljenje luči v slogu gledališča. Prenesite barvo (32-bitna vrednost, // a la strip. Barva (r, g, b), kot je omenjeno zgoraj), in čas zamika (v ms) // med okvirji. void theatreChaseOne (barva uint32_t, int indeks) {strip.clear (); strip.setPixelColor (17 - kazalo, barva); // LED vrstice v prvi vrsti strip.setPixelColor (18 + indeks, barva); // trak za LED luči druge vrstice.setPixelColor (53 - kazalo, barva); // LED luči v tretji vrsti strip.show (); }

Priporočena: