Inhoudsopgave:

Ritmehand: 6 stappen
Ritmehand: 6 stappen

Video: Ritmehand: 6 stappen

Video: Ritmehand: 6 stappen
Video: Shri Lakshmi Stuti | श्री लक्ष्मी स्तुति सुने स्पष्ट उच्चारण के साथ | Vasant Vijay ji Maharaj 2024, Juli-
Anonim
Ritmehand
Ritmehand

Deze cyberhandschoen gaat over het maken van de juiste zet op het juiste moment.

De lichten gaan van je arm (elleboog) naar je hand en wanneer de lichten bij je hand komen, moet je met je vingers op de mini-fotocel drukken.

Als je op het juiste moment met je hand op de mini fotocel drukt worden de leds groen. Zo niet, dan worden de leds rood.

Stap 1: Verzamel materialen

  • Een handschoen
  • Stof om de handschoen langer te maken
  • WS2812B LED-strip
  • Draden
  • Arduino
  • Mini fotoverkoop

Stap 2: Circuits maken

Circuits maken
Circuits maken
Circuits maken
Circuits maken

Sluit eerst de ledstrip aan op de arduino. Dat doe je door de +5v aan te sluiten op de 5v op de arduino. De Din moet worden aangesloten op A0 op de arduino en de GND moet worden aangesloten op de GND op de arduino.

Je moet ook de mini-fotocel op de arduino aansluiten door verbinding te maken met de 5v-draad van de ledstrip en van dezelfde bron die met een draad verbindt met PIN 6 op de arduino. De andere kant van de mini-fotocel moet worden aangesloten op de GND-draad van de ledstrip

Stap 3: De handschoen ontwerpen

De handschoen ontwerpen
De handschoen ontwerpen

De handschoen moet de juiste maat hebben om op de ledstrips te passen. De leds moeten worden uitgelijnd om het kijken aangenamer te maken.

Voor dit spel moet je je arm gebruiken en wil je vrij kunnen bewegen. Dit kan worden gerealiseerd door de arduino op de handschoen te plaatsen. Ik gebruikte klittenband als sluiting om de arduino aan de handschoen te plakken. Dan kun je voor meer stabiliteit een touw om de handschoen en rond de arduino leggen.

De mini-fotocel is in de handschoen genaaid, zodat deze op zijn plaats blijft.

Ten slotte moet je de draden verbergen om het er beter uit te laten zien. Dat kan met stof die over de draden wordt genaaid.

Stap 4: Solderen

Solderen
Solderen

Nu kunt u de verbindingsdraden van het circuit veilig maken door te solderen.

Stap 5: Coderen

codering
codering
codering
codering
codering
codering

// Een standaard NeoPixel-striptestprogramma voor elke dag.

// NEOPIXEL BEST PRAKTIJKEN voor de meest betrouwbare werking: // - Voeg 1000 uF CAPACITOR toe tussen de + en - aansluitingen van de NeoPixel-strip. // - MINIMALISEER DE BEDRADINGSLENGTE tussen microcontrollerkaart en eerste pixel. // - De DATA-IN van de NeoPixel-strip moet door een WEERSTAND van 300-500 OHM gaan. // - VERMIJD het aansluiten van NeoPixels op een LIVE CIRCUIT. Als het moet, sluit dan ALTIJD // GROUND (-) eerst aan, dan +, dan data. // - Bij gebruik van een 3,3V-microcontroller met een 5V-gevoede NeoPixel-strip, // wordt een LOGIC-LEVEL CONVERTER op de datalijn STERK AANBEVOLEN. // (Deze overslaan werkt misschien goed op uw werkbank, maar kan in het veld mislukken)

#include #ifdef _AVR_ #include // Vereist voor 16 MHz Adafruit Trinket #endif

// Welke pin op de Arduino is verbonden met de NeoPixels? // Op een Trinket of Gemma raden we aan dit te wijzigen in 1: #define LED_PIN 6

// Hoeveel NeoPixels zijn aangesloten op de Arduino? #define LED_COUNT 60

// Verklaar ons NeoPixel-stripobject: Adafruit_NeoPixel-strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t kleur = strip. Kleur (127, 127, 127); // Witte kleur, voor standaard bool gekliktCorrectly = false; // Argument 1 = Aantal pixels in NeoPixel-strip // Argument 2 = Arduino-pinnummer (de meeste zijn geldig) // Argument 3 = Pixeltype-vlaggen, indien nodig bij elkaar optellen: // NEO_KHZ800 800 KHz bitstream (de meeste NeoPixel-producten met WS2812 LED's) // NEO_KHZ400 400 KHz (klassiek 'v1' (niet v2) FLORA-pixels, WS2811-stuurprogramma's) // NEO_GRB Pixels zijn bedraad voor GRB-bitstream (de meeste NeoPixel-producten) // NEO_RGB Pixels zijn bedraad voor RGB-bitstream (v1 FLORA-pixels, niet v2) // NEO_RGBW Pixels zijn bedraad voor RGBW-bitstream (NeoPixel RGBW-producten)

// setup() functie -- wordt één keer uitgevoerd bij het opstarten --------------------------------

void setup() { // Deze regels zijn specifiek bedoeld om de Adafruit Trinket 5V 16 MHz te ondersteunen. // Elk ander bord, je kunt dit onderdeel verwijderen (maar het kan geen kwaad het te laten): #if defined(_AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // END van Trinket-specifieke code.

pinMode (A0, INGANG); strip.begin(); // INITIALISEER NeoPixel stripobject (VEREIST) strip.show(); // Schakel alle pixels zo snel mogelijk UIT strip.setBrightness (10); // Stel HELDERHEID in op ongeveer 1/5 (max = 255)}

// loop() functie -- wordt herhaaldelijk uitgevoerd zolang het bord aan staat ---------------

void loop () { clickedCorrectly = theaterChaseOne (kleur); if (Correct aangeklikt) { color = strip. Color (0, 255, 0); } else { color = strip. Color (255, 0, 0); } }

// Enkele eigen functies voor het maken van geanimeerde effecten -----------------

// Achterlichten in theatertentstijl. Geef een kleur door (32-bits waarde, // a la strip. Color(r, g, b) zoals hierboven vermeld), en een vertragingstijd (in ms) // tussen frames. bool theaterChaseOne(uint32_t color) { bool correct = false; bool clickedWrong = false; for (int index = 0; index 800) {//value light sensor if (index < 16) { //2 leds voor einde dan kun je op color = strip. Color (255, 0, 0) klikken; // rode kleur leds clickedWrong = true; // verkeerd geklikt, dan worden leds rood } else if (! clickedWrong) { // if not wrong color = strip. Color (0, 255, 0); // groene kleur leds correct = waar; // correct geklikt en leds worden groen } } strip.clear(); strip.setPixelColor (17 - index, kleur); // eerste rij led-verlichting strip.setPixelColor (18 + index, kleur); // led-verlichting op de tweede rij strip.setPixelColor (53 - index, kleur); //derde rij led-verlichting strip.show(); vertraging (300); } correct retourneren; }

Stap 6: Wijzigingen

Veranderingen
Veranderingen
Veranderingen
Veranderingen
Veranderingen
Veranderingen

Ik heb wat wijzigingen aangebracht. Ten eerste heb ik de arduino verborgen, zodat het comfortabeler zou zijn om de "Rythm-hand" te gebruiken en ten tweede heb ik de code een klein beetje veranderd. Ik heb de code zo veranderd dat als je op het juiste moment drukt de kleur groen wordt en de LEDS sneller bewegen. Hierdoor wordt de LED S 10% sneller dan voorheen. Dit maakt het spel interessanter

Zo is de code nu:

// Een standaard NeoPixel-striptestprogramma voor elke dag. // NEOPIXEL BEST PRAKTIJKEN voor de meest betrouwbare werking: // - Voeg 1000 uF CAPACITOR toe tussen de + en - aansluitingen van de NeoPixel-strip. // - MINIMALISEER DE BEDRADINGSLENGTE tussen microcontrollerkaart en eerste pixel. // - De DATA-IN van de NeoPixel-strip moet door een WEERSTAND van 300-500 OHM gaan. // - VERMIJD het aansluiten van NeoPixels op een LIVE CIRCUIT. Als het moet, sluit dan ALTIJD // GROUND (-) eerst aan, dan +, dan data. // - Bij gebruik van een 3,3V-microcontroller met een 5V-gevoede NeoPixel-strip, // wordt een LOGIC-LEVEL CONVERTER op de datalijn STERK AANBEVOLEN. // (Deze overslaan werkt misschien goed op uw werkbank, maar kan in het veld mislukken) #include #ifdef _AVR_ #include // Vereist voor 16 MHz Adafruit Trinket #endif // Welke pin op de Arduino is verbonden met de NeoPixels? // Op een Trinket of Gemma raden we aan dit te veranderen in 1: #define LED_PIN 6 // Hoeveel NeoPixels zijn aangesloten op de Arduino? #define LED_COUNT 60 // Verklaar ons NeoPixel-stripobject: Adafruit_NeoPixel-strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t kleur = strip. Kleur (127, 127, 127); // Witte kleur, voor standaard bool gekliktCorrectly = false; int-index = 0; int-interval = 300; int resultaat = 0; unsigned long previousMs = millis(); // Argument 1 = Aantal pixels in NeoPixel-strip // Argument 2 = Arduino-pinnummer (de meeste zijn geldig) // Argument 3 = Pixeltype-vlaggen, indien nodig bij elkaar optellen: // NEO_KHZ800 800 KHz bitstream (de meeste NeoPixel-producten met WS2812 LED's) // NEO_KHZ400 400 KHz (klassiek 'v1' (niet v2) FLORA-pixels, WS2811-stuurprogramma's) // NEO_GRB Pixels zijn bedraad voor GRB-bitstream (de meeste NeoPixel-producten) // NEO_RGB Pixels zijn bedraad voor RGB-bitstream (v1 FLORA-pixels, niet v2) // NEO_RGBW Pixels zijn bedraad voor RGBW-bitstream (NeoPixel RGBW-producten) // setup()-functie -- wordt één keer uitgevoerd bij het opstarten -------------------- ------------ void setup() { // Deze regels zijn specifiek bedoeld om de Adafruit Trinket 5V 16 MHz te ondersteunen. // Elk ander bord, je kunt dit onderdeel verwijderen (maar het kan geen kwaad het te laten): #if defined(_AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // END van Trinket-specifieke code. Serieel.begin(9600); while (!Serial) {; // wacht tot de seriële poort verbinding maakt. Alleen nodig voor native USB-poort } pinMode (A0, INPUT); strip.begin(); // INITIALISEREN NeoPixel stripobject (VEREIST) strip.show(); // Schakel alle pixels zo snel mogelijk UIT strip.setBrightness (10); // Stel BRIGHTNESS in op ongeveer 1/5 (max = 255) } // loop() functie -- wordt herhaaldelijk uitgevoerd zolang het bord aan staat --------------- void loop() { unsigned long currentMs = millis(); // De huidige tijd int-waarde ophalen = analogRead (A0); // Lezen van de huidige lichtsensor if (waarde > 900 && resultaat == 0) { // Als de sensor wordt ingedrukt en er is nog geen resultaat geregistreerd, activeer dan het vastleggen van het resultaat als (index = interval) { // Controleer of de huidige lus overschrijdt het interval previousMs = currentMs; // Stel het nieuwe interval in op de huidige tijd + intervalindex += 1; // Zet de leds een stap verder in de lus if (index > 17) { // Trigger end of loop handling index = 0; if (resultaat == 2) { // Op een correct resultaatinterval = (int) max ((interval * 0,95), 50); // Versnel met 10%, tot een interval van 50 ms / kleur = strip. Kleur (0, 255, 0); // Zet de leds op groen } else if (resultaat == 1) { // Bij een onjuist resultaatinterval = 300; // Reset de intervalkleur = strip. Color (255, 0, 0); // Zet de leds op rood } else { // Op geen resultaat vastgelegde kleur = strip. Color (255, 0, 0); // Zet de leds op rood} resultaat = 0; // Reset het resultaat voor de volgende lus } theaterChaseOne (kleur, index); // Verlicht de leds voor weergave. } } // Enkele eigen functies voor het maken van geanimeerde effecten ----------------- // Achterlichten in theatertent-stijl. Geef een kleur door (32-bits waarde, // a la strip. Color(r, g, b) zoals hierboven vermeld), en een vertragingstijd (in ms) // tussen frames. void theaterChaseOne(uint32_t kleur, int index) { strip.clear(); strip.setPixelColor (17 - index, kleur); // eerste rij led-verlichting strip.setPixelColor (18 + index, kleur); // led-verlichting op de tweede rij strip.setPixelColor (53 - index, kleur); //derde rij led-verlichting strip.show(); }

Aanbevolen: