Innehållsförteckning:

Rytmhand: 6 steg
Rytmhand: 6 steg

Video: Rytmhand: 6 steg

Video: Rytmhand: 6 steg
Video: 13 Millions Views, You Must Watch If You Love Music 2024, Juli
Anonim
Rytm Hand
Rytm Hand

Denna cyberglove handlar om att göra rätt drag i rätt ögonblick.

Ljusen går från din arm (armbåge) till din hand och när lamporna kommer till din hand måste du trycka fingrarna på minifotocellen.

Om du trycker på handen på minifotocellen i rätt ögonblick blir lysdioderna gröna. Om inte blir lysdioderna röda.

Steg 1: Samla material

  • En handske
  • Tyg för att göra handsken längre
  • WS2812B LED -remsa
  • Trådar
  • Arduino
  • Mini fotosell

Steg 2: Gör kretsar

Gör kretsar
Gör kretsar
Gör kretsar
Gör kretsar

Anslut först ledremsan till arduinoen. Du kan göra det genom att ansluta +5v till 5v på arduino. Din måste vara ansluten till A0 på arduino och GND måste anslutas till GND på arduino.

Du måste också ansluta minifotocellen till arduino genom att ansluta till 5v -kabeln från ledremsan och från samma källa som ansluter med en kabel till PIN 6 på arduino. Den andra sidan från minifotocellen måste anslutas till GND -kabeln från ledremsan

Steg 3: Designa handsken

Designa handsken
Designa handsken

Handsken måste ha rätt storlek för att passa LED -remsorna. Lysdioderna måste justeras för att bli roligare att titta på.

För det här spelet måste du använda din arm och du vill kunna röra dig fritt. Detta kan förverkligas genom att sätta arduino på handsken. Jag använde kardborre som ett fästelement för att fästa arduino på handsken. För att skapa mer stabilitet kan du sätta ett rep runt handsken och runt arduinoen.

Minifotocellen har sys inuti handsken så att den håller sig på plats.

Slutligen måste du dölja trådarna för att det ska se bättre ut. Det kan göras med tyg som sys ovanpå trådarna.

Steg 4: Lödning

Lödning
Lödning

Nu kan du göra anslutningskablarna från kretsen säkra genom lödning.

Steg 5: Kodning

Kodning
Kodning
Kodning
Kodning
Kodning
Kodning

// Ett grundläggande vardagligt NeoPixel -testprogram.

// NEOPIXEL BÄSTA PRAKTIKER för mest pålitlig drift: // - Lägg till 1000 uF KAPACITOR mellan NeoPixel remsans + och - anslutningar. // - MINIMERA KABELLÄNGD mellan mikrokontrollerkort och första pixel. //-NeoPixel-remsans DATA-IN ska passera genom en 300-500 OHM-RESISTOR. // - UNDVIK att ansluta NeoPixels på en LIVE CIRCUIT. Om du måste, ALLTID // ansluta GRUND (-) först, sedan +, sedan data. //-När du använder en 3,3V mikrokontroller med en 5V-driven NeoPixel-remsa, // REKOMMENDERAS EN LOGISK NIVÅKONVERTERARE på datalinjen. // (Hoppa över dessa kan fungera OK på din arbetsbänk men kan misslyckas i fältet)

#include #ifdef _AVR_ #include // Krävs för 16 MHz Adafruit Trinket #endif

// Vilken pin på Arduino är ansluten till NeoPixels? // På en prydnad eller Gemma föreslår vi att du ändrar detta till 1: #define LED_PIN 6

// Hur många NeoPixels är anslutna till Arduino? #define LED_COUNT 60

// Deklarera vårt NeoPixel -bandobjekt: Adafruit_NeoPixel -remsa (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Vit färg, för standard bool clickedCorrectly = false; // Argument 1 = Antal pixlar i NeoPixel -remsan // Argument 2 = Arduino -pinnummer (de flesta är giltiga) // Argument 3 = Pixel -flaggor, lägg ihop efter behov: // NEO_KHZ800 800 KHz bitström (de flesta NeoPixel -produkter m/ WS2812 -lysdioder) // NEO_KHZ400 400 KHz (klassiska 'v1' (inte v2) FLORA -pixlar, WS2811 -drivrutiner) // NEO_GRB Pixlar är anslutna för GRB -bitström (de flesta NeoPixel -produkter) // NEO_RGB -pixlar är anslutna för RGB -bitström (v1 FLORA -pixlar), inte v2) // NEO_RGBW Pixlar är anslutna för RGBW -bitström (NeoPixel RGBW -produkter)

// setup () funktion-körs en gång vid start --------------------------------

void setup () {// Dessa rader är specifikt för att stödja Adafruit Trinket 5V 16 MHz. // Vilket annat kort som helst kan du ta bort denna del (men ingen skada lämnas av den): #if definierad (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // SLUT för Trinket-specifik kod.

pinMode (A0, INPUT); strip.begin (); // INITIALISERA NeoPixel -bandobjekt (KRÄVS) strip.show (); // Stäng av alla pixlar ASAP strip.setBrightness (10); // Ställ in LJUSSTYRKA till cirka 1/5 (max = 255)}

// loop () funktion-körs upprepade gånger så länge kortet är på ---------------

void loop () {clickedCorrectly = theaterChaseOne (color); om (klickade rätt) {color = strip. Color (0, 255, 0); } annat {color = strip. Color (255, 0, 0); }}

// Vissa egna funktioner för att skapa animerade effekter -----------------

// Jaktljus i teater-telt-stil. Skicka in en färg (32-bitars värde, // a la strip. Color (r, g, b) enligt ovan) och en fördröjningstid (i ms) // mellan bildrutor. bool theaterChaseOne (uint32_t color) {bool correct = false; bool clickedWrong = false; för (int index = 0; index 800) {// värde ljussensor om (index <16) {// 2 lysdioder före slutet kan du klicka på color = strip. Color (255, 0, 0); // rödfärgade lysdioder clickedWrong = true; // klickade fel så blir lysdioderna röda} annars om (! clickedWrong) {// om inte fel färg = strip. Color (0, 255, 0); // grön färg lysdioder korrekt = true; // klickade rätt så blev lysdioderna gröna}} strip.clear (); strip.setPixelColor (17 - index, färg); // första raden led lampor strip.setPixelColor (18 + index, färg); // andra raden led lampor strip.setPixelColor (53 - index, färg); // tredje raden led lampor strip.show (); fördröjning (300); } returnera korrekt; }

Steg 6: Ändringar

Ändringar
Ändringar
Ändringar
Ändringar
Ändringar
Ändringar

Jag gjorde några ändringar. För det första gömde jag arduino så att det skulle vara bekvämare att använda "Rythm hand" och för det andra ändrade jag koden lite. Jag ändrade koden så att när du trycker på i rätt ögonblick blir färgen grön och lysdioderna rör sig snabbare. Genom att göra det blir LED Swill 10% snabbare än tidigare. Detta gör spelet mer intressant

Så här är koden nu:

// Ett grundläggande vardagligt NeoPixel -bandtestprogram. // NEOPIXEL BÄSTA PRAKTIKER för mest pålitlig drift: // - Lägg till 1000 uF KAPACITOR mellan NeoPixel remsans + och - anslutningar. // - MINIMERA KABELLÄNGD mellan mikrokontrollerkort och första pixel. //-NeoPixel-remsans DATA-IN ska passera genom en 300-500 OHM-RESISTOR. // - UNDVIK att ansluta NeoPixels på en LIVE CIRCUIT. Om du måste, ALLTID // ansluta GRUND (-) först, sedan +, sedan data. //-När du använder en 3,3V mikrokontroller med en 5V-driven NeoPixel-remsa, // REKOMMENDERAS EN LOGISK NIVÅKONVERTERARE på datalinjen. // (Hoppa över dessa kan fungera OK på din arbetsbänk men kan misslyckas i fältet) #include #ifdef _AVR_ #include // Krävs för 16 MHz Adafruit Trinket #endif // Vilken pin på Arduino är ansluten till NeoPixels? // På en prydnad eller Gemma föreslår vi att du ändrar detta till 1: #define LED_PIN 6 // Hur många NeoPixels är anslutna till Arduino? #define LED_COUNT 60 // Declare our NeoPixel strip object: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Vit färg, för standard bool clickedCorrectly = false; int index = 0; int intervall = 300; int resultat = 0; osignerad lång tidigareMs = millis (); // Argument 1 = Antal pixlar i NeoPixel -remsan // Argument 2 = Arduino -pinnummer (de flesta är giltiga) // Argument 3 = Pixel -flaggor, lägg ihop efter behov: // NEO_KHZ800 800 KHz bitström (de flesta NeoPixel -produkter m/ WS2812 -lysdioder) // NEO_KHZ400 400 KHz (klassiska 'v1' (inte v2) FLORA -pixlar, WS2811 -drivrutiner) // NEO_GRB Pixlar är anslutna för GRB -bitström (de flesta NeoPixel -produkter) // NEO_RGB -pixlar är anslutna för RGB -bitström (v1 FLORA -pixlar), inte v2) // NEO_RGBW Pixlar är anslutna för RGBW-bitström (NeoPixel RGBW-produkter) // setup () -funktion-körs en gång vid start -------------------- ------------ void setup () {// Dessa rader är specifikt för att stödja Adafruit Trinket 5V 16 MHz. // Vilket annat kort som helst kan du ta bort denna del (men ingen skada lämnas av den): #if definierad (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // SLUT för Trinket-specifik kod. Serial.begin (9600); medan (! Seriell) {; // vänta på att seriell port ska anslutas. Behövs endast för inbyggd USB -port} pinMode (A0, INPUT); strip.begin (); // INITIALISERA NeoPixel -bandobjekt (KRÄVS) strip.show (); // Stäng av alla pixlar ASAP strip.setBrightness (10); // Ställ in BRIGHTNESS på cirka 1/5 (max = 255)} // loop () -funktionen-körs upprepade gånger så länge kortet är på --------------- void loop () {osignerad lång strömMs = millis (); // Få det aktuella tiden int -värdet = analogRead (A0); // Läser av den aktuella ljussensorn om (värde> 900 && resultat == 0) {// Om sensorn trycks in och inget resultat har registrerats ännu, trigga resultatinsamling om (index = intervall) {// Kontrollera om strömmen loop överskrider intervallet previousMs = currentMs; // Ställ in det nya intervallet på aktuell tid + intervallindex + = 1; // Ställ in lysdioderna ett steg längre i slingan om (index> 17) {// Trigger end of loop -hanteringsindex = 0; if (resultat == 2) {// På ett korrekt resultatintervall = (int) max ((intervall * 0,95), 50); // Snabba upp med 10%, ner till 50ms intervall/ färg = strip. Color (0, 255, 0); // Ställ in lysdioderna på grönt} annars om (resultat == 1) {// På ett felaktigt resultatintervall = 300; // Återställ intervallfärgen = strip. Color (255, 0, 0); // Ställ in lysdioderna på rött} else {// På inget resultat fångad färg = strip. Color (255, 0, 0); // Ställ in lysdioderna på rött} resultat = 0; // Återställ resultatet för nästa slinga} theaterChaseOne (färg, index); // Tänd lysdioderna för visning. }} // Några av våra egna funktioner för att skapa animerade effekter ----------------- // Teater-telt-stil jagar ljus. Skicka in en färg (32-bitars värde, // a la strip. Color (r, g, b) enligt ovan) och en fördröjningstid (i ms) // mellan bildrutor. void theaterChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - index, färg); // första raden led lampor strip.setPixelColor (18 + index, färg); // andra raden led lampor strip.setPixelColor (53 - index, färg); // tredje raden led lampor strip.show (); }

Rekommenderad: