INHOUDSOPGAWE:

Ritmehand: 6 stappe
Ritmehand: 6 stappe

Video: Ritmehand: 6 stappe

Video: Ritmehand: 6 stappe
Video: ЗАМОРОЗЬТЕ КОСТИ И ВАРИТЕ 6 ЧАСОВ! Рецепт который изменит вашу жизнь! 2024, Julie
Anonim
Ritme Hand
Ritme Hand

Hierdie cyberglove gaan oor die regte skuif op die regte oomblik.

Die ligte gaan van u arm (elmboog) na u hand, en as die ligte by u kom, moet u met u vingers op die mini -fotosel druk.

As u op die regte oomblik met u hand op die mini -fotosel druk, word die LED's groen. Indien nie, word die LED's rooi.

Stap 1: Versamel materiaal

  • 'N Handskoen
  • Stof om die handskoen langer te maak
  • WS2812B LED strook
  • Drade
  • Arduino
  • Mini fotosel

Stap 2: Maak stroombane

Kringbane maak
Kringbane maak
Kringbane maak
Kringbane maak

Koppel eers die ledstrook aan die arduino. U kan dit doen deur die +5v aan die 5v op die arduino te koppel. Die Din moet gekoppel wees aan A0 op die arduino en die GND moet aan die GND op die arduino gekoppel word.

U moet ook die mini -fotosel aan die arduino koppel deur aan te sluit op die 5v -draad vanaf die ledstrook en vanaf dieselfde bron wat met 'n draad verbind word met PIN 6 op die arduino. Die ander kant van die mini -fotosel moet vanaf die LED -strook aan die GND -draad gekoppel word

Stap 3: Ontwerp die handskoen

Ontwerp van die handskoen
Ontwerp van die handskoen

Die handskoen moet die regte grootte hê om by die LED -stroke te pas. Die LED's moet in lyn gebring word om aangenamer te maak.

Vir hierdie speletjie moet u u arm gebruik en u wil vrylik kan beweeg. Dit kan besef word deur die arduino op die handskoen te sit. Ek het klittenband as 'n sluiting gebruik om die arduino aan die handskoen te plak. Om meer stabiliteit te verseker, kan u 'n tou om die handskoen en om die arduino sit.

Die mini -fotosel is in die handskoen vasgewerk sodat dit op sy plek bly.

Uiteindelik moet u die drade verberg om dit beter te laat lyk. Dit kan gedoen word met stof wat bo -op die drade vasgewerk word.

Stap 4: Soldeer

Soldeer
Soldeer

Nou kan u die verbindingsdrade uit die kring veilig maak deur te soldeer.

Stap 5: Kodering

Kodering
Kodering
Kodering
Kodering
Kodering
Kodering

// 'n Basiese daaglikse NeoPixel -strook -toetsprogram.

// BESTE PRAKTYKE VAN NEOPIXEL vir die betroubaarste werking: // - Voeg 1000 uF KAPASITEER by tussen die + en - verbindings van NeoPixel strip. // - MINIMALE BEDRADINGSLENGTE tussen mikrokontrollerbord en eerste pixel. //-Die DATA-IN van NeoPixel-strook moet deur 'n weerstand van 300-500 ohm gaan. // - VERMY om NeoPixels aan te sluit op 'n LIVE CIRCUIT. As u moet, moet ALTYD // eers GROUND (-) koppel, dan +, dan data. //-By die gebruik van 'n 3.3V-mikrobeheerder met 'n 5V-aangedrewe NeoPixel-strook, // word 'n LOGIESE VLAKKONVERTER op die datalyn sterk aanbeveel. // (dit kan goed werk op u werkbank, maar dit kan misluk in die veld)

#include #ifdef _AVR_ #include // Vereis vir 16 MHz Adafruit Trinket #endif

// Watter pen op die Arduino is aan die NeoPixels gekoppel? // Op 'n snuistery of Gemma stel ons voor dat u dit verander na 1: #define LED_PIN 6

// Hoeveel NeoPixels is aan die Arduino gekoppel? #definieer LED_COUNT 60

// Verklaar ons NeoPixel -strookvoorwerp: Adafruit_NeoPixel -strook (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Wit kleur, vir standaard bool clickCorrect = false; // Argument 1 = Aantal pixels in NeoPixel -strook // Argument 2 = Arduino -speldnommer (die meeste is geldig) // Argument 3 = Pixel -tipe vlae, voeg by indien nodig: // NEO_KHZ800 800 KHz bitstroom (die meeste NeoPixel -produkte w/ WS2812 LED's) // NEO_KHZ400 400 KHz (klassieke 'v1' (nie v2) FLORA -pixels, WS2811 -bestuurders) // NEO_GRB Pixels is bedraad vir GRB -bitstroom (die meeste NeoPixel -produkte) // NEO_RGB Pixels is bedraad vir RGB -bitstroom (v1 FLORA -pixels, nie v2) // NEO_RGBW Pixels word bedraad vir RGBW -bitstroom (NeoPixel RGBW -produkte)

// setup () funksie-loop een keer by die aanvang --------------------------------

void setup () {// Hierdie reëls is spesifiek ter ondersteuning van die Adafruit Trinket 5V 16 MHz. // Enige ander bord, u kan hierdie deel verwyder (maar sonder om dit te laat): #as gedefinieer (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // EINDE van Trinket-spesifieke kode.

pinMode (A0, INVOER); strip.begin (); // INITIALISEER NeoPixel -strookvoorwerp (VEREIST) strip.show (); // Skakel alle pixels so gou as moontlik strip.setBrightness (10) af; // Stel BRIGHTNESS op ongeveer 1/5 (maksimum = 255)}

// loop () funksie-loop herhaaldelik solank die bord aan is ---------------

leemte -lus () {clickedCorrectly = theaterChaseOne (kleur); as (reg geklik) {color = strip. Color (0, 255, 0); } anders {color = strip. Color (255, 0, 0); }}

// Sommige van ons eie funksies vir die skep van geanimeerde effekte -----------------

// Teater-markiestyl-agtige ligte. Gee 'n kleur in (32-biswaarde, // a la strook. Kleur (r, g, b) soos hierbo genoem), en 'n vertragingstyd (in ms) // tussen rame. bool theaterChaseOne (uint32_t color) {bool correct = false; bool clickedWrong = false; vir (int indeks = 0; indeks 800) {// waarde ligsensor as (indeks <16) {// 2 LED's voor einde, kan u op color = strip. Color (255, 0, 0) klik; // rooi kleur leds clickedWrong = true; // verkeerd geklik dan word LED's rooi} anders as (! clickedWrong) {// indien nie verkeerd nie kleur = strip. Color (0, 255, 0); // groen kleur leds korrek = waar; // reg geklik dan word LEDs groen}} strip.clear (); strip.setPixelColor (17 - indeks, kleur); // eerste ry ledligte strip.setPixelColor (18 + indeks, kleur); // tweede ry ledligte strip.setPixelColor (53 - indeks, kleur); // derde ry ledligte strip.show (); vertraging (300); } korrek terugstuur; }

Stap 6: Veranderinge

Veranderinge
Veranderinge
Veranderinge
Veranderinge
Veranderinge
Veranderinge

Ek het 'n paar veranderinge aangebring. Eerstens het ek die arduino weggesteek sodat dit gemakliker sou wees om die "Rythm hand" te gebruik, en tweedens het ek die kode 'n bietjie verander. Ek het die kode verander sodat die kleur groen word en die LED's vinniger beweeg as u op die regte oomblik druk. Deur dit te doen, word die LED Swill 10% vinniger as voorheen. Dit maak die spel interessanter

Dit is hoe die kode nou is:

// 'n Basiese daaglikse NeoPixel -strook -toetsprogram. // BESTE PRAKTYKE VAN NEOPIXEL vir die betroubaarste werking: // - Voeg 1000 uF KAPASITEUR by tussen die + en - verbindings van NeoPixel strook. // - MINIMALE BEDRADINGSLENGTE tussen mikrokontrollerbord en eerste pixel. //-Die DATA-IN van NeoPixel-strook moet deur 'n weerstand van 300-500 ohm gaan. // - VERMIJD dat jy NeoPixels verbind op 'n LIVE CIRCUIT. As u moet, moet u ALTYD // eers GROUND (-) koppel, dan +, dan data. //-By die gebruik van 'n 3.3V-mikrobeheerder met 'n 5V-aangedrewe NeoPixel-strook, // word 'n LOGIESE VLAKKONVERTER op die datalyn sterk aanbeveel. // (dit kan goed werk op u werkbank, maar dit kan misluk in die veld) #include #ifdef _AVR_ #include // Vereis vir 16 MHz Adafruit Trinket #endif // Watter pen op die Arduino is aan die NeoPixels gekoppel? // Op 'n snuistery of Gemma stel ons voor dat u dit verander na 1: #define LED_PIN 6 // Hoeveel NeoPixels is aan die Arduino gekoppel? #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); // Wit kleur, by verstek bool clickCorrect = false; int indeks = 0; int interval = 300; int resultaat = 0; ongetekende lang vorigeMs = millis (); // Argument 1 = Aantal pixels in NeoPixel -strook // Argument 2 = Arduino -speldnommer (die meeste is geldig) // Argument 3 = Pixel -tipe vlae, voeg by indien nodig: // NEO_KHZ800 800 KHz bitstroom (die meeste NeoPixel -produkte w/ WS2812 LED's) // NEO_KHZ400 400 KHz (klassieke 'v1' (nie v2) FLORA -pixels, WS2811 -bestuurders) // NEO_GRB Pixels is bedraad vir GRB -bitstroom (die meeste NeoPixel -produkte) // NEO_RGB Pixels is bedraad vir RGB -bitstroom (v1 FLORA -pixels, nie v2) // NEO_RGBW Pixels word bedraad vir RGBW-bitstroom (NeoPixel RGBW-produkte) // setup () -funksie-loop een keer by die aanvang -------------------- ------------ leemte-opstelling () {// Hierdie reëls is spesifiek ter ondersteuning van die Adafruit Trinket 5V 16 MHz. // Enige ander bord, u kan hierdie deel verwyder (maar sonder om dit te laat): #as gedefinieer (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // EINDE van Trinket-spesifieke kode. Serial.begin (9600); terwyl (! Serial) {; // wag totdat die seriële poort verbind is. Benodig slegs vir inheemse USB -poort} pinMode (A0, INPUT); strip.begin (); // INITIALISEER NeoPixel -strookvoorwerp (VEREIST) strip.show (); // Skakel alle pixels so gou as moontlik strip.setBrightness (10) uit; // Stel BRIGHTNESS op ongeveer 1/5 (maksimum = 255)} // lus () -funksie-loop herhaaldelik solank die bord aan is --------------- leemte lus () {ongetekende lang stroomMs = millis (); // Kry die huidige tyd int waarde = analogRead (A0); // Lees die huidige ligsensor as (waarde> 900 && resultaat == 0) {// As die sensor ingedruk word en daar nog geen resultaat aangeteken is nie, aktiveer die resultaatopname as (indeks = interval) {// Kontroleer of die huidige lus oorskry die interval previousMs = currentMs; // Stel die nuwe interval op die huidige tyd + intervalindeks + = 1; // Stel die LED's nog 'n stap verder in die lus as (indeks> 17) {// Trigger end of lus hantering indeks = 0; if (resultaat == 2) {// Op 'n korrekte resultaatinterval = (int) max ((interval * 0,95), 50); // Versnel met 10%, af na 50ms interval/ color = strip. Color (0, 255, 0); // Stel die leds op groen} anders as (resultaat == 1) {// Op 'n verkeerde resultaatinterval = 300; // Herstel die interval kleur = strip. Color (255, 0, 0); // Stel die leds op rooi} anders {// Op geen resultaat vasgevang kleur = strook. Kleur (255, 0, 0); // Stel die LED's op rooi} result = 0; // Stel die resultaat vir die volgende lus} theaterChaseOne (kleur, indeks) terug; // Verlig die LED's om te vertoon. }} // Ons eie funksies vir die skep van geanimeerde effekte ----------------- // Teater-markiestyl-jaagligte. Gee 'n kleur in (32-biswaarde, // a la strook. Kleur (r, g, b) soos hierbo genoem), en 'n vertragingstyd (in ms) // tussen rame. void theaterChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - indeks, kleur); // eerste ry ledligte strip.setPixelColor (18 + indeks, kleur); // tweede ry ledligte strip.setPixelColor (53 - indeks, kleur); // derde ry ledligte strip.show (); }

Aanbeveel: