Sadržaj:

Ritam ruke: 6 koraka
Ritam ruke: 6 koraka

Video: Ritam ruke: 6 koraka

Video: Ritam ruke: 6 koraka
Video: Сердце как у олимпийского чемпиона! Аритмия, стенокардия, сбои ритма прошли после обычных … 2024, Srpanj
Anonim
Ritam ruke
Ritam ruke

Ova cyberglove je o tome da napravite pravi potez u pravom trenutku.

Svjetla idu od vaše ruke (lakta) do vaše ruke, a kad svjetla dođu do vaše ruke, morate pritisnuti prste na mini fotoćeliju.

Ako u pravom trenutku pritisnete ruku na mini fotoćeliju, LED diode postaju zelene. Ako ne, LED diode postaju crvene.

Korak 1: Prikupite materijale

  • Rukavica
  • Tkanina za produženje rukavice
  • WS2812B LED traka
  • Žice
  • Arduino
  • Mini fotoprodaja

Korak 2: Izrada sklopova

Izrada sklopova
Izrada sklopova
Izrada sklopova
Izrada sklopova

Prvo spojite LED traku na arduino. To možete učiniti spajanjem +5v na 5v na arduinu. Din mora biti spojen na A0 na arduinu, a GND na GND na arduinu.

Također morate spojiti mini fotoćeliju na arduino povezivanjem na 5v žicu s LED trake i iz istog izvora povezivanjem žicom na PIN 6 na arduinu. Druga strana mini fotoćelije mora biti spojena na GND žicu s LED trake

Korak 3: Dizajniranje rukavice

Dizajniranje rukavice
Dizajniranje rukavice

Rukavica mora imati odgovarajuću veličinu da stane na LED trake. LED diode moraju biti poravnate kako bi bile ugodnije za gledanje.

Za ovu igru morate koristiti ruku i želite se moći slobodno kretati. To se može postići stavljanjem arduina na rukavicu. Koristio sam čičak kao pričvršćivač za lijepljenje arduina na rukavicu. Zatim za uspostavljanje veće stabilnosti možete staviti uže oko rukavice i oko arduina.

Mini fotoćelija je ušivena unutar rukavice tako da će ostati na mjestu.

Na kraju morate sakriti žice kako bi izgledala bolje. To se može učiniti tkaninom koja će biti ušivena na vrhu žica.

Korak 4: Lemljenje

Lemljenje
Lemljenje

Sada možete spojiti žice iz kruga sigurnim lemljenjem.

Korak 5: Kodiranje

Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje

// Osnovni svakodnevni program za testiranje NeoPixel traka.

// NEOPIXEL NAJBOLJE PRAKSE za najpouzdaniji rad: // - Dodajte 1000 uF KAPACITORA između + i - veza NeoPixel trake. // - MINIMIZIRAJ DUŽINU OŽIČENJA između ploče mikrokontrolera i prvog piksela. //-DATA-IN NeoPixel trake trebao bi proći kroz OTPOR 300-500 OHM. // - IZBJEGAVAJTE povezivanje NeoPixela na ŽIVOM KRUGU. Ako morate, UVIJEK // prvo povežite GROUND (-), zatim +, a zatim podatke. //-Kad koristite mikrokontroler od 3,3 V s NeoPixel trakom na 5 V, // LEGIČKO-RAZINSKI PRETVARAČ na podatkovnoj liniji se STRELO PREPORUČUJE. // (Preskakanje ovih opcija može dobro funkcionirati na vašem radnom stolu, ali može propasti na terenu)

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

// Koji je pin na Arduinu spojen na NeoPixels? // Na Trinketu ili Gemmi predlažemo promjenu na 1: #define LED_PIN 6

// Koliko je NeoPixela priključeno na Arduino? #define LED_COUNT 60

// Deklarirajte naš NeoPixel strip objekt: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t boja = traka. Boja (127, 127, 127); // Bijela boja, zadano bool clickedCorrect = false; // Argument 1 = Broj piksela u NeoPixel traci // Argument 2 = Arduino broj pina (većina je ispravna) // Argument 3 = Zastavice tipa piksela, zbrajajte se prema potrebi: // NEO_KHZ800 800 KHz bitstream (većina NeoPixel proizvoda w/ WS2812 LED) // NEO_KHZ400 400 KHz (klasični 'v1' (ne v2) FLORA pikseli, upravljački programi WS2811) // NEO_GRB Pikseli su ožičeni za GRB bitstream (većina proizvoda NeoPixel) // NEO_RGB Pikseli su ožičeni za RGB bitstream (v1 FLORA piksela, ne v2) // NEO_RGBW Pikseli su ožičeni za RGBW tok bitova (NeoPixel RGBW proizvodi)

// funkcija setup ()-pokreće se jednom pri pokretanju --------------------------------

void setup () {// Ove linije posebno podržavaju Adafruit Trinket 5V 16 MHz. // Bilo koju drugu ploču, možete ukloniti ovaj dio (ali nema štete ako ga ostavite): #ako je definirano (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // KRAJ specifičnog koda za Trinket.

pinMode (A0, INPUT); strip.begin (); // INICIALIZE NeoPixel strip objekt (OBAVEZNO) strip.show (); // ISKLJUČI sve piksele ASAP strip.setBrightness (10); // Postavite BRIGHTNESS na otprilike 1/5 (max = 255)}

// funkcija loop ()-radi više puta sve dok je ploča na ---------------

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

// Neke naše funkcije za stvaranje animiranih efekata -----------------

// Svjetla za jurnjavom u stilu kazališta. Proslijedi boju (32-bitna vrijednost, // a la strip. Boja (r, g, b) kao što je gore spomenuto) i vrijeme kašnjenja (u ms) // između okvira. bool theatreChaseOne (uint32_t boja) {bool correct = false; bool clickedWrong = false; for (int index = 0; index 800) {// vrijednost svjetlosnog senzora if (index <16) {// 2 diode prije kraja tada možete kliknuti color = strip. Color (255, 0, 0); // LED diode crvene boje clickedWrong = true; // krivo kliknuli pa LED diode postaju crvene} else if (! clickedWrong) {// ako nije krivo color = strip. Color (0, 255, 0); // zelene boje ispravne = true; // ispravno pritisnuto pa LED diode postaju zelene}} strip.clear (); strip.setPixelColor (17 - indeks, boja); // traka za LED svjetla u prvom redu strip.setPixelColor (18 + indeks, boja); // traka za LED svjetla u drugom redu.setPixelColor (53 - indeks, boja); // LED svjetla trećeg reda strip.show (); kašnjenje (300); } return ispravan; }

Korak 6: Promjene

Promjene
Promjene
Promjene
Promjene
Promjene
Promjene

Napravio sam neke promjene. Prvo sam sakrio arduino kako bi bilo ugodnije koristiti "Rythm ruku", a zatim sam malo promijenio kod. Promijenio sam kôd tako da kada pritisnete u pravom trenutku boja postaje zelena, a LED diode se brže kreću. Na taj način LED Swill postaje 10% brži nego prije. To igru čini zanimljivijom

Evo koda je sada:

// Osnovni svakodnevni program za testiranje NeoPixel traka. // NEOPIXEL NAJBOLJE PRAKSE za najpouzdaniji rad: // - Dodajte 1000 uF KAPACITORA između + i - veza NeoPixel trake. // - MINIMIZIRAJ DUŽINU OŽIČENJA između ploče mikrokontrolera i prvog piksela. //-DATA-IN NeoPixel trake trebao bi proći kroz otpornik od 300-500 OHM. // - IZBJEGAVAJTE povezivanje NeoPixela na ŽIVOM KRUGU. Ako morate, UVIJEK // prvo povežite GROUND (-), zatim +, a zatim podatke. //-Kada se koristi mikrokontroler od 3,3 V s NeoPixel trakom na 5V, // JEDNO SE PREPORUČUJE PRETVARAČ LOGIČKE RAZINE na podatkovnoj liniji. // (Preskakanje ovih stavki može dobro funkcionirati na vašem radnom stolu, ali može biti pogrešno na terenu) #include #ifdef _AVR_ #include // Potrebno za 16 MHz Adafruit Trinket #endif // Koji je pin na Arduinu spojen na NeoPixels? // Na Trinketu ili Gemmi predlažemo promjenu na 1: #define LED_PIN 6 // Koliko je NeoPixela priključeno na Arduino? #define LED_COUNT 60 // Deklarirajte naš NeoPixel strip objekt: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t boja = traka. Boja (127, 127, 127); // Bijela boja, zadano bool clickedCorrect = false; int indeks = 0; int interval = 300; int rezultat = 0; bezznačni dugi prethodniMs = millis (); // Argument 1 = Broj piksela u NeoPixel traci // Argument 2 = Arduino broj pina (većina je ispravna) // Argument 3 = Zastavice tipa piksela, zbrajajte se prema potrebi: // NEO_KHZ800 800 KHz bitstream (većina NeoPixel proizvoda w/ WS2812 LED) // NEO_KHZ400 400 KHz (klasični 'v1' (ne v2) FLORA pikseli, upravljački programi WS2811) // NEO_GRB Pikseli su ožičeni za GRB bitstream (većina proizvoda NeoPixel) // NEO_RGB Pikseli su ožičeni za RGB bitstream (v1 FLORA piksela, ne v2) // NEO_RGBW Pikseli su ožičeni za RGBW tok bitova (NeoPixel RGBW proizvodi) // funkcija setup ()-pokreće se jednom pri pokretanju -------------------- ------------ void setup () {// Ove linije posebno podržavaju Adafruit Trinket 5V 16 MHz. // Bilo koju drugu ploču, možete ukloniti ovaj dio (ali nema štete ako ga ostavite): #ako je definirano (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // KRAJ koda specifičnog za Trinket. Serial.begin (9600); while (! Serijski) {; // čekati povezivanje serijskog porta. Potrebno samo za izvorni USB port} pinMode (A0, INPUT); strip.begin (); // INICIALIZE NeoPixel strip objekt (OBAVEZNO) strip.show (); // ISKLJUČI sve piksele ASAP strip.setBrightness (10); // Postavite BRIGHTNESS na otprilike 1/5 (max = 255)} // funkcija loop ()-radi više puta sve dok je ploča na --------------- void loop () {unsigned long currentMs = millis (); // Dobivanje trenutnog vremena int value = analogRead (A0); // Očitavanje trenutnog svjetlosnog senzora if (vrijednost> 900 && rezultat == 0) {// Ako je senzor pritisnut, a rezultat još nije zabilježen, pokrenite snimanje rezultata if (indeks = interval) {// Provjerite je li trenutna petlja premašuje interval previousMs = currentMs; // Postavi novi interval na trenutno vrijeme + indeks intervala + = 1; // Postavljanje LED dioda korak dalje u petlji if (index> 17) {// Pokretanje kraja petlje za rukovanje indeksom = 0; if (rezultat == 2) {// Na ispravnom intervalu rezultata = (int) max ((interval * 0,95), 50); // Ubrzajte za 10%, do intervala od 50 ms/ boja = traka. Boja (0, 255, 0); // Postavimo LED diode na zeleno} else if (result == 1) {// Na netočnom intervalu rezultata = 300; // Vraćanje boje intervala = strip. Color (255, 0, 0); // Postavimo LED diode na crveno} else {// Nema rezultata snimljena boja = strip. Color (255, 0, 0); // Postavi LED diode na crveno} result = 0; // Poništite rezultat za sljedeću petlju} TheaterChaseOne (boja, indeks); // Osvijetlite LED diode za prikaz. }} // Neke naše funkcije za stvaranje animiranih efekata ----------------- // Jurišna svjetla u stilu kazališta. Proslijedi boju (32-bitna vrijednost, // a la strip. Boja (r, g, b) kao što je gore spomenuto) i vrijeme kašnjenja (u ms) // između okvira. void theatreChaseOne (uint32_t boja, int indeks) {strip.clear (); strip.setPixelColor (17 - indeks, boja); // traka za LED svjetla u prvom redu strip.setPixelColor (18 + indeks, boja); // traka za LED svjetla u drugom redu.setPixelColor (53 - indeks, boja); // LED svjetla trećeg reda strip.show (); }

Preporučeni: