Sadržaj:

Ritam: 6 koraka
Ritam: 6 koraka

Video: Ritam: 6 koraka

Video: Ritam: 6 koraka
Video: Без этого чтение Корана не принесёт пользу! 2024, Juli
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 kada 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žavanje rukavice
  • WS2812B LED traka
  • Žice
  • Arduino
  • Mini fotoprodaja

Korak 2: Pravljenje kola

Izrada kola
Izrada kola
Izrada kola
Izrada kola

Prvo povežite LED traku s arduinom. 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 sa LED trake i iz istog izvora povezivanjem žicom na PIN 6 na arduinu. Druga strana mini fotoćelije mora biti spojena na GND žicu sa LED trake

Korak 3: Dizajniranje rukavice

Dizajniranje rukavice
Dizajniranje rukavice

Rukavica mora imati odgovarajuću veličinu da odgovara LED trakama. 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 NeoPixel test test program.

// NEOPIXEL NAJBOLJE PRAKSE za najpouzdaniji rad: // - Dodajte 1000 uF KAPACITORA između + i - veza NeoPixel trake. // - Smanjite dužinu ožičenja između ploče mikrokontrolera i prvog piksela. //-DATA-IN NeoPixel trake bi trebao 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 koristite mikrokontroler od 3,3 V s NeoPixel trakom na 5V, // LEGIČKI NIVO KONVERTER na podatkovnoj liniji se JAKO PREPORUČUJE. // (Preskakanje ovih stavki može dobro funkcionirati na radnoj površini, 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

// Deklariramo naš NeoPixel strip objekt: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Bijela boja, za zadano bool clickedCorrect = false; // Argument 1 = Broj piksela u NeoPixel traci // Argument 2 = Arduino pin broj (većina je ispravnih) // Argument 3 = Zastavice tipa piksela, zbrajajte se po potrebi: // NEO_KHZ800 800 KHz bitstream (većina NeoPixel proizvoda w/ WS2812 LED diode) // 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): #if defined (_ 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ČITE 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 -----------------

// Jurišna svjetla u stilu kazališta. Prenesite 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 u crvenoj boji clickedWrong = true; // ako je kliknuo pogrešno, LED diode postaju crvene} else if (! clickedWrong) {// ako nije pogrešno color = strip. Color (0, 255, 0); // LED diode u zelenoj boji ispravno = true; // kliknuli ispravno pa LED diode postaju zelene}} strip.clear (); strip.setPixelColor (17 - indeks, boja); // LED svjetla prvog reda strip.setPixelColor (18 + indeks, boja); // LED svjetla u drugom redu strip.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. Ovo igru čini zanimljivijom

Evo koda je sada:

// Osnovni svakodnevni NeoPixel test test program. // NEOPIXEL NAJBOLJE PRAKSE za najpouzdaniji rad: // - Dodajte 1000 uF KAPACITORA između + i - veza NeoPixel trake. // - Smanjite dužinu ožičenja između ploče mikrokontrolera i prvog piksela. //-DATA-IN NeoPixel trake bi trebao 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 koristite mikrokontroler od 3,3 V s NeoPixel trakom na 5V, // LEGIČKI NIVO KONVERTER na podatkovnoj liniji se JAKO PREPORUČUJE. // (Preskakanje ovih stavki može dobro funkcionirati na vašem radnom stolu, ali može i na terenu) // 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 color = strip. Color (127, 127, 127); // Bijela boja, za zadano bool clickedCorrect = false; int indeks = 0; int interval = 300; int rezultat = 0; nepotpisani dugi prethodniMs = millis (); // Argument 1 = Broj piksela u NeoPixel traci // Argument 2 = Arduino broj pina (većina je važeća) // Argument 3 = Zastavice tipa piksela, zbrajajte se po potrebi: // NEO_KHZ800 800 KHz bitstream (većina NeoPixel proizvoda w/ WS2812 LED diode) // 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 podataka (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): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // KRAJ specifičnog koda 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ČITE 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; // Novi interval postavljamo na trenutno vrijeme + indeks intervala + = 1; // Postavljamo LED diode još jedan korak dalje u petlji if (index> 17) {// Trigger end of loop loop handling index = 0; if (rezultat == 2) {// Na tačnom rezultatskom intervalu = (int) max ((interval * 0,95), 50); // Ubrzajte za 10%, do intervala od 50ms/ color = strip. Color (0, 255, 0); // Postavimo LED diode na zeleno} else if (result == 1) {// Na neispravnom intervalu rezultata = 300; // Vraćanje intervala u boji = strip. Color (255, 0, 0); // Postavimo LED diode na crveno} else {// Nema rezultata snimljena boja = strip. Color (255, 0, 0); // Postavimo LED diode na crveno} result = 0; // Resetiranje rezultata 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. Prenesite 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); // LED svjetla prvog reda strip.setPixelColor (18 + indeks, boja); // LED red drugog reda strip.setPixelColor (53 - indeks, boja); // LED svjetla trećeg reda strip.show (); }

Preporučuje se: