Sisukord:

Rütmikäsi: 6 sammu
Rütmikäsi: 6 sammu

Video: Rütmikäsi: 6 sammu

Video: Rütmikäsi: 6 sammu
Video: Секрет опытных мастеров! Как легко состыковать материал, если в углу стоит круглая труба? #shorts 2024, Juuli
Anonim
Rütmikäsi
Rütmikäsi

See küberarmastus räägib õigest sammust õigel hetkel.

Tuled lähevad käest (küünarnukist) käele ja kui tuled teie kätte jõuavad, peate vajutama sõrmi minifotoelemendile.

Kui vajutate oma kätt minifotoelemendile õigel hetkel, muutuvad LED -id roheliseks. Kui ei, siis muutuvad LED -id punaseks.

Samm: koguge materjale

  • Kinda
  • Kangas, mis muudab kinda pikemaks
  • WS2812B LED -riba
  • Juhtmed
  • Arduino
  • Minifotosell

2. samm: ahelate tegemine

Ahelate tegemine
Ahelate tegemine
Ahelate tegemine
Ahelate tegemine

Ühendage esmalt LED -riba arduinoga. Seda saate teha, ühendades +5v arduino 5v -ga. Din peab olema ühendatud arduino A0 -ga ja GND peab olema ühendatud arduino GND -ga.

Samuti peate mini -fotoelemendi arduinoga ühendama, ühendades 5 -voldise juhtmega LED -ribalt ja samast allikast, ühendades juhtmega PIN -koodi 6 arduino -le. Mini -fotoelemendi teine pool tuleb ühendada LED -riba GND -juhtmega

3. samm: kinda kujundamine

Kinda kujundamine
Kinda kujundamine

Kindad peavad olema sobiva suurusega, et need sobiksid LED -ribadega. Valgusdioodid tuleb joondada, et neid oleks meeldivam vaadata.

Selle mängu jaoks peate kasutama oma kätt ja soovite vabalt liikuda. Sellest saab aru, pannes arduino kindale. Kasutasin kinnitusvahendina takjapaela, et arduino kinda külge kleepida. Suurema stabiilsuse saavutamiseks võite köie ümber kinnaste ja arduino ümber panna.

Minifotoelement on õmmeldud kinda sisse, nii et see jääb paigale.

Lõpuks peate juhtmed peitma, et see parem välja näeks. Seda saab teha kangaga, mis õmmeldakse juhtmete peale.

4. samm: jootmine

Jootmine
Jootmine

Nüüd saate ühendusahelaid ühendavad juhtmed jootmise abil turvaliseks muuta.

Samm: kodeerimine

Kodeerimine
Kodeerimine
Kodeerimine
Kodeerimine
Kodeerimine
Kodeerimine

// Põhiline igapäevane NeoPixel ribade testimise programm.

// NEOPIXELI PARIMAD TAVAD kõige usaldusväärsemaks tööks: // - lisage NeoPixeli riba + ja - ühenduste vahele 1000 uF KAPPAATOR. // - MINIMISEERIMINE PIKKUS mikrokontrolleri plaadi ja esimese piksli vahel. //-NeoPixeli riba DATA-IN peaks läbima 300-500 OHM TAKIST. // - VÄLTIDA NeoPixelite ühendamist reaalajas vooluringis. Kui peate, ühendage ALATI // kõigepealt GROUND (-), seejärel +, seejärel andmed. //-Kui kasutate 3,3 V mikrokontrollerit koos 5 V toitega NeoPixel ribaga, // SOOVITATAKSE TÕELISELT andmeliinil olevat LOOGILISE TASEME KONVERTEERIJAT. // (Nende vahelejätmine võib teie töölaual hästi toimida, kuid võib põllul ebaõnnestuda)

#include #ifdef _AVR_ #include // Nõutav 16 MHz Adafruit nipsasja jaoks #endif

// Milline Arduino tihvt on NeoPixelitega ühendatud? // Trinketis või Gemmas soovitame muuta selle väärtuseks 1: #define LED_PIN 6

// Mitu NeoPikslit on Arduino külge kinnitatud? #define LED_COUNT 60

// Deklareerige meie NeoPixel riba objekt: Adafruit_NeoPixel riba (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t värv = riba. Värv (127, 127, 127); // Valge värv, vaikimisi klõpsati boolCorrectly = false; // Argument 1 = pikslite arv NeoPixel ribal // Argument 2 = Arduino pin number (enamik neist on kehtivad) // Argument 3 = Pixel type lipud, lisage vastavalt vajadusele: // NEO_KHZ800 800 KHz bitivoog (enamik NeoPixeli tooteid/ WS2812 LEDid) // NEO_KHZ400 400 KHz (klassikaline 'v1' (mitte v2) FLORA pikslid, WS2811 draiverid) // NEO_GRB Pikslid on ühendatud GRB bitivooga (enamik NeoPixeli tooteid) // NEO_RGB pikslid on ühendatud RGB bitivooga (v1 FLORA pikslit), mitte v2) // NEO_RGBW Pikslid on ühendatud RGBW bitivooga (NeoPixel RGBW tooted)

// setup () funktsioon-käivitamisel töötab üks kord --------------------------------

void setup () {// Need read on spetsiaalselt Adafruit Trinket 5V 16 MHz toeks. // Mis tahes muu tahvli saate selle osa eemaldada (kuid selle jätmine ei kahjusta): #if defineeritud (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END Trinket-spetsiifilisest koodist.

pinMode (A0, INPUT); riba.algus (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // Lülita kõik pikslid ASAP riba välja. SetBrightness (10); // Seadke Heledus umbes 1/5 (max = 255)}

// loop () funktsioon-töötab korduvalt, kuni plaat on sisse lülitatud ---------------

void loop () {klikitudKorrektselt = TheaterChaseOne (värv); if (õigesti klõpsatud) {color = strip. Color (0, 255, 0); } else {värv = riba. Värv (255, 0, 0); }}

// Mõned meie funktsioonid animeeritud efektide loomiseks -----------------

// Teatritelgi stiilis jahtvalgustid. Edastage värv (32-bitine väärtus, // a la riba. Värv (r, g, b), nagu eespool mainitud) ja viivitusaeg (ms) // kaadrite vahel. bool TheaterChaseOne (uint32_t värv) {bool correct = false; bool klikitudViga = vale; jaoks (int indeks = 0; indeks 800) {// väärtustab valgusandurit, kui (indeks <16) {// 2 viitab enne lõppu, siis saate klõpsata värvi = riba. Värv (255, 0, 0); // punase värvi ledid klõpsasidWrong = true; // klõpsati valesti, seejärel muutuvad LED -id punaseks} else if (! clickckedWrong) {// kui mitte vale värv = riba. Värv (0, 255, 0); // roheline värv viitab õigele = true; // klõpsati õigesti, siis muutuvad LED -id roheliseks}} riba.selge (); strip.setPixelColor (17 - indeks, värv); // esimese rea led -tulede riba.setPixelColor (18 + indeks, värv); // teise rea LED -tuled riba.setPixelColor (53 - indeks, värv); // kolmanda rea led -tulede riba.show (); viivitus (300); } tagastamine õige; }

6. samm: muudatused

Muudatused
Muudatused
Muudatused
Muudatused
Muudatused
Muudatused

Tegin mõned muudatused. Esiteks peitsin arduino ära, et oleks mugavam kasutada "Rythm -kätt", ja teiseks muutsin natuke koodi. Muutsin koodi nii, et õigel hetkel vajutades muutub värv roheliseks ja LED -id liiguvad kiiremini. Seda tehes muutub LED Swill 10% kiiremaks kui varem. See muudab mängu huvitavamaks

Kood on nüüd selline:

// Põhiline igapäevane NeoPixel ribade testimise programm. // NEOPIXELI PARIMAD TAVAD kõige usaldusväärsemaks tööks: // - lisage NeoPixeli riba + ja - ühenduste vahele 1000 uF KAPPAATOR. // - MINIMISEERIMINE PIKKUS mikrokontrolleri plaadi ja esimese piksli vahel. //-NeoPixeli riba DATA-IN peaks läbima 300-500 OHM TAKIST. // - VÄLTIDA NeoPixelite ühendamist reaalajas vooluringis. Kui peate, ühendage ALATI // kõigepealt GROUND (-), seejärel +, seejärel andmed. //-Kui kasutate 3,3 V mikrokontrollerit koos 5 V toitega NeoPixel ribaga, // SOOVITATAKSE TÕELISELT andmeliinil olevat LOOGILISE TASEME KONVERTEERIJAT. // (Nende vahelejätmine võib teie töölaual hästi toimida, kuid võib valdkonnas ebaõnnestuda) #include #ifdef _AVR_ #include // Nõutav 16 MHz Adafruit nipsasja jaoks #endif // Milline Arduino tihvt on ühendatud NeoPixelitega? // Nipsasjal või Gemmal soovitame selle muuta 1 -ks: #define LED_PIN 6 // Mitu NeoPikslit on Arduino külge kinnitatud? #define LED_COUNT 60 // Deklareerige meie NeoPixel riba objekt: Adafruit_NeoPixel riba (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t värv = riba. Värv (127, 127, 127); // Valge värv, vaikimisi klõpsati boolCorrectly = false; int indeks = 0; int intervall = 300; int tulemus = 0; allkirjastamata pikad eelmisedMs = millis (); // Argument 1 = pikslite arv NeoPixel ribal // Argument 2 = Arduino pin number (enamik on kehtivad) // Argument 3 = Pixel type lipud, lisage vastavalt vajadusele: // NEO_KHZ800 800 KHz bitivoog (enamik NeoPixeli tooteid WS2812 LEDid) // NEO_KHZ400 400 KHz (klassikaline 'v1' (mitte v2) FLORA pikslid, WS2811 draiverid) // NEO_GRB Pikslid on ühendatud GRB bitivooga (enamik NeoPixeli tooteid) // NEO_RGB pikslid on ühendatud RGB bitivooga (v1 FLORA pikslit), mitte v2) // NEO_RGBW Pikslid on ühendatud RGBW bitivooga (NeoPixel RGBW tooted) // setup () funktsioon-töötab käivitamisel üks kord -------------------- ------------ void setup () {// Need read on mõeldud spetsiaalselt Adafruit Trinket 5V 16 MHz toetamiseks. // Mis tahes muu tahvli saate selle osa eemaldada (kuid selle jätmine ei kahjusta): #if defineeritud (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END Trinket-spetsiifilisest koodist. Seriaalne algus (9600); while (! Seeria) {; // oodake, kuni jadaport ühendatakse. Vajalik ainult oma USB -pordi jaoks} pinMode (A0, INPUT); riba.algus (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // Lülita kõik pikslid ASAP riba välja. SetBrightness (10); // Seadke heledus umbes 1/5 (max = 255)} // loop () funktsioon-töötab korduvalt seni, kuni plaat on sisse lülitatud --------------- void loop () {allkirjastamata pikkvoolMs = millis (); // Praeguse aja saamine int väärtus = analogRead (A0); // Praeguse valgusanduri lugemine, kui (väärtus> 900 && tulemus == 0) {// Kui andurit vajutatakse ja tulemust pole veel salvestatud, käivitage tulemuste jäädvustamine, kui (indeks = intervall) {// Kontrollige, kas praegune silmus ületab intervalli previousMs = currentMs; // Seadke uus intervall praegusele ajale + intervalli indeks + = 1; // Seadke LED -id silmusesse ühe sammu võrra edasi, kui (indeks> 17) {// Lingi käivitamise lõpu käivitav indeks = 0; if (result == 2) {// Õige tulemuste vahemiku korral = (int) max ((intervall * 0,95), 50); // Kiirendage 10%, kuni 50 ms intervalliga/ color = strip. Color (0, 255, 0); // Määra LED -id roheliseks} else if (result == 1) {// Vales tulemustevahemikus = 300; // Lähtesta intervall värv = riba. Värv (255, 0, 0); // Seadke LED -id punaseks} else {// Tulemuseta jäädvustatud värv = riba. Värv (255, 0, 0); // Seadke ledid punaseks} result = 0; // Lähtesta järgmise silmuse tulemus} TheaterChaseOne (värv, indeks); // Sütti LED -id näitamiseks. }} // Mõned meie funktsioonid animeeritud efektide loomiseks ----------------- // Teatritelgi stiilis jahtvalgustid. Edastage värv (32-bitine väärtus, // a la riba. Värv (r, g, b), nagu eespool mainitud) ja viivitusaeg (ms) // kaadrite vahel. void TheaterChaseOne (uint32_t värv, int indeks) {strip.clear (); strip.setPixelColor (17 - indeks, värv); // esimese rea led -tulede riba.setPixelColor (18 + indeks, värv); // teise rea LED -tuled riba.setPixelColor (53 - indeks, värv); // kolmanda rea led -tulede riba.show (); }

Soovitan: