Indholdsfortegnelse:

Rytmehånd: 6 trin
Rytmehånd: 6 trin

Video: Rytmehånd: 6 trin

Video: Rytmehånd: 6 trin
Video: Rytmisk samtidsmusiker 2024, Juli
Anonim
Rytmehånd
Rytmehånd

Denne cyberglove handler om at foretage det rigtige træk i det rigtige øjeblik.

Lysene går fra din arm (albue) til din hånd, og når lysene kommer til din hånd, skal du trykke fingrene på mini fotocellen.

Hvis du trykker din hånd på minifotocellen i det rigtige øjeblik, bliver lysdioderne grønne. Hvis ikke, bliver lysdioderne røde.

Trin 1: Saml materialer

  • En handske
  • Stof, der gør handsken længere
  • WS2812B LED -strimmel
  • Ledninger
  • Arduino
  • Mini fotosel

Trin 2: Lav kredsløb

Lav kredsløb
Lav kredsløb
Lav kredsløb
Lav kredsløb

Tilslut først ledstrimlen til arduinoen. Du kan gøre det ved at tilslutte +5v til 5v på arduinoen. Din skal forbindes til A0 på arduinoen, og GND skal forbindes til GND på arduinoen.

Du skal også tilslutte mini -fotocellen til arduinoen ved at tilslutte 5v -ledningen fra ledstrimlen og fra den samme kilde, der forbinder med en ledning til PIN 6 på arduinoen. Den anden side fra mini -fotocellen skal forbindes til GND -ledningen fra ledstrimlen

Trin 3: Design af handsken

Design af handsken
Design af handsken

Handsken skal have den rigtige størrelse, så den passer til ledstrimlerne. Lysdioderne skal justeres for at gøre det mere behageligt at se på.

Til dette spil skal du bruge din arm, og du vil gerne kunne bevæge dig frit. Dette kan realiseres ved at sætte arduinoen på handsken. Jeg brugte velcro som lukning til at holde arduinoen på handsken. For at skabe mere stabilitet kan du lægge et reb omkring handsken og omkring arduinoen.

Minifotocellen er syet inde i handsken, så den forbliver på plads.

Endelig skal du skjule ledningerne for at få det til at se bedre ud. Det kan gøres med stof, der vil blive syet oven på ledningerne.

Trin 4: Lodning

Lodning
Lodning

Nu kan du gøre forbindelsesledningerne fra kredsløbet sikre ved lodning.

Trin 5: Kodning

Kodning
Kodning
Kodning
Kodning
Kodning
Kodning

// Et grundlæggende hverdags NeoPixel strip testprogram.

// NEOPIXEL BEDSTE PRAKTIKER for den mest pålidelige drift: // - Tilføj 1000 uF KAPACITOR mellem NeoPixel strips + og - forbindelser. // - MINIMER KABELLÆNGDE mellem mikrokontrollerkort og første pixel. //-NeoPixel strips DATA-IN skal passere gennem en 300-500 OHM RESISTOR. // - UNDGÅ at forbinde NeoPixels på en LIVE CIRCUIT. Hvis du skal, skal du ALTID // forbinde GROUND (-) først, derefter +, derefter data. //-Ved brug af en 3.3V mikrokontroller med en 5V-drevet NeoPixel-strimmel, // ANBEFALES en LOGISK NIVEAU-KONVERTER på datalinjen STÆRKT. // (Springe over disse fungerer muligvis OK på dit arbejdsbord, men kan mislykkes i feltet)

#include #ifdef _AVR_ #include // Påkrævet til 16 MHz Adafruit Trinket #endif

// Hvilken pin på Arduino er forbundet til NeoPixels? // På en Trinket eller Gemma foreslår vi at ændre dette til 1: #define LED_PIN 6

// Hvor mange NeoPixels er knyttet til Arduino? #define LED_COUNT 60

// Angiv vores NeoPixel -stripobjekt: Adafruit_NeoPixel -strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t farve = strip. Color (127, 127, 127); // Hvid farve, for standard bool clickedCorrectly = false; // Argument 1 = Antal pixels i NeoPixel -strimmel // Argument 2 = Arduino -pin -nummer (de fleste er gyldige) // Argument 3 = Pixel -typeflag, tilføj efter behov: // NEO_KHZ800 800 KHz bitstream (de fleste NeoPixel -produkter m/ WS2812 LED'er) // NEO_KHZ400 400 KHz (klassiske 'v1' (ikke v2) FLORA -pixels, WS2811 -drivere) // NEO_GRB Pixler er tilsluttet GRB -bitstrøm (de fleste NeoPixel -produkter) // NEO_RGB Pixels er forbundet til RGB -bitstrøm (v1 FLORA -pixels, ikke v2) // NEO_RGBW Pixels er forbundet til RGBW bitstream (NeoPixel RGBW -produkter)

// setup () funktion-kører en gang ved opstart --------------------------------

void setup () {// Disse linjer er specifikt til at understøtte Adafruit Trinket 5V 16 MHz. // Ethvert andet bord kan du fjerne denne del (men ingen skade forlader den): #if defineret (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END for Trinket-specifik kode.

pinMode (A0, INPUT); strip.begin (); // INITIALISER NeoPixel -strimmelobjekt (påkrævet) strip.show (); // Sluk for alle pixels ASAP strip.setBrightness (10); // Indstil BRIGHTNESS til ca. 1/5 (maks. = 255)}

// loop () funktion-kører gentagne gange, så længe brættet er tændt ---------------

void loop () {clickedCorrectly = theaterChaseOne (color); hvis (klikket korrekt) {color = strip. Color (0, 255, 0); } ellers {color = strip. Color (255, 0, 0); }}

// Nogle af vores egne funktioner til at skabe animerede effekter -----------------

// Teater-telt-lignende jagtlys. Indsæt en farve (32-bit værdi, // a la strip. Color (r, g, b) som nævnt ovenfor) og en forsinkelse (i ms) // mellem rammer. bool theaterChaseOne (uint32_t farve) {bool korrekt = falsk; bool clickedWrong = falsk; for (int index = 0; index 800) {// værdi lyssensor hvis (index <16) {// 2 lysdioder før slutning, kan du klikke på color = strip. Color (255, 0, 0); // røde lysdioder clickedWrong = true; // klikket forkert, så bliver lysdioderne røde} ellers hvis (! clickedWrong) {// hvis ikke forkert farve = strip. Color (0, 255, 0); // grønne lysdioder korrekt = sand; // klikket korrekt, så bliver lysdioder grøn}} strip.clear (); strip.setPixelColor (17 - indeks, farve); // første række led -lys strip.setPixelColor (18 + indeks, farve); // anden række led -lys strip.setPixelColor (53 - indeks, farve); // tredje række led -lys strip.show (); forsinkelse (300); } returner korrekt; }

Trin 6: Ændringer

Ændringer
Ændringer
Ændringer
Ændringer
Ændringer
Ændringer

Jeg lavede nogle ændringer. For det første skjulte jeg arduinoen, så det ville være mere behageligt at bruge "Rythm -hånden", og for det andet ændrede jeg koden en lille smule. Jeg ændrede koden, så når du trykker på i det rigtige øjeblik, bliver farven grøn, og lysdioderne bevæger sig hurtigere. Ved at gøre det bliver LED Swill 10% hurtigere end før. Dette gør spillet mere interessant

Sådan er koden nu:

// Et grundlæggende hverdags NeoPixel strip testprogram. // NEOPIXEL BEDSTE PRAKTIKER for den mest pålidelige drift: // - Tilføj 1000 uF KAPACITOR mellem NeoPixel strips + og - forbindelser. // - MINIMER KABELLÆNGDE mellem mikrokontrollerkort og første pixel. //-NeoPixel strips DATA-IN skal passere gennem en 300-500 OHM RESISTOR. // - UNDGÅ at forbinde NeoPixels på en LIVE CIRCUIT. Hvis du skal, skal du ALTID // forbinde GROUND (-) først, derefter +, derefter data. //-Ved brug af en 3.3V mikrokontroller med en 5V-drevet NeoPixel-bånd, // ANBEFALES en LOGISK NIVEAU-KONVERTER på datalinjen STERKT. // (Spring over disse fungerer muligvis OK på dit arbejdsbord, men kan mislykkes i feltet) #include #ifdef _AVR_ #include // Påkrævet til 16 MHz Adafruit Trinket #endif // Hvilken pin på Arduino er forbundet til NeoPixels? // På en Trinket eller Gemma foreslår vi at ændre dette til 1: #define LED_PIN 6 // Hvor mange NeoPixels er knyttet til Arduino? #define LED_COUNT 60 // Deklarere vores NeoPixel strip objekt: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t farve = strip. Color (127, 127, 127); // Hvid farve, for standard bool clickedCorrectly = false; int indeks = 0; int interval = 300; int resultat = 0; usigneret lang tidligereMs = millis (); // Argument 1 = Antal pixels i NeoPixel -strip // Argument 2 = Arduino -pin -nummer (de fleste er gyldige) // Argument 3 = Pixel -typeflag, tilføj efter behov: // NEO_KHZ800 800 KHz bitstream (de fleste NeoPixel -produkter m/ WS2812 LED'er) // NEO_KHZ400 400 KHz (klassiske 'v1' (ikke v2) FLORA -pixels, WS2811 -drivere) // NEO_GRB Pixler er tilsluttet GRB -bitstream (de fleste NeoPixel -produkter) // NEO_RGB Pixels er forbundet til RGB -bitstrøm (v1 FLORA -pixels, ikke v2) // NEO_RGBW Pixels er forbundet til RGBW bitstream (NeoPixel RGBW-produkter) // setup () funktion-kører en gang ved opstart -------------------- ------------ void setup () {// Disse linjer er specifikt til at understøtte Adafruit Trinket 5V 16 MHz. // Ethvert andet bord kan du fjerne denne del (men ingen skade forlader den): #if defineret (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END for Trinket-specifik kode. Serial.begin (9600); mens (! Seriel) {; // vent på, at den serielle port skal oprette forbindelse. Kræves kun til indbygget USB -port} pinMode (A0, INPUT); strip.begin (); // INITIALISER NeoPixel -strimmelobjekt (påkrævet) strip.show (); // Sluk for alle pixels ASAP strip.setBrightness (10); // Indstil BRIGHTNESS til ca. 1/5 (max = 255)} // loop () funktion-kører gentagne gange, så længe kortet er på --------------- void loop () {usigneret lang strømMs = millis (); // Henter den aktuelle tid int -værdi = analogRead (A0); // Læsning af den aktuelle lyssensor hvis (værdi> 900 && resultat == 0) {// Hvis der trykkes på sensoren, og der endnu ikke er registreret noget resultat, udløser resultatopsamling, hvis (indeks = interval) {// Kontroller, om den aktuelle loop overskrider intervallet previousMs = currentMs; // Indstil det nye interval til det aktuelle tidspunkt + intervalindeks + = 1; // Indstil lysdioderne et skridt videre i sløjfen, hvis (indeks> 17) {// Udløser ende af sløjfehåndteringsindeks = 0; hvis (resultat == 2) {// På et korrekt resultatinterval = (int) max ((interval * 0,95), 50); // Hastighed med 10%, ned til 50ms interval/ farve = strip. Color (0, 255, 0); // Indstil lysdioderne til grøn} ellers hvis (resultat == 1) {// På et forkert resultatinterval = 300; // Nulstil intervallets farve = strip. Color (255, 0, 0); // Indstil lysdioderne til rød} else {// På intet resultat fanget farve = strip. Color (255, 0, 0); // Indstil lysdioderne til rød} resultat = 0; // Nulstil resultatet for den næste sløjfe} theaterChaseOne (farve, indeks); // Tænd lysdioderne til visning. }} // Nogle egne funktioner til at skabe animerede effekter ----------------- // Teater-telt-stil jagtlys. Indsæt en farve (32-bit værdi, // a la strip. Color (r, g, b) som nævnt ovenfor), og en forsinkelsestid (i ms) // mellem rammer. void theaterChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - indeks, farve); // første række led -lys strip.setPixelColor (18 + indeks, farve); // anden række led -lys strip.setPixelColor (53 - indeks, farve); // tredje række led -lys strip.show (); }

Anbefalede: