Sisällysluettelo:

Rytmikäsi: 6 vaihetta
Rytmikäsi: 6 vaihetta

Video: Rytmikäsi: 6 vaihetta

Video: Rytmikäsi: 6 vaihetta
Video: Kasvohieronan opetusvideo_1 2024, Marraskuu
Anonim
Rytmin käsi
Rytmin käsi

Tässä kyberrakkaudessa on kyse oikeasta liikkeestä oikeaan aikaan.

Valot menevät käsivarresta (kyynärpäästä) käteen ja kun valot saapuvat käteen, sinun on painettava sormiasi mini -valokennossa.

Jos painat kättäsi mini -valokennossa oikeaan aikaan, ledit muuttuvat vihreiksi. Jos ei, ledit muuttuvat punaisiksi.

Vaihe 1: Kerää materiaaleja

  • Hanska
  • Kangas tekee käsineestä pidemmän
  • WS2812B LED -nauha
  • Johdot
  • Arduino
  • Mini valokuvamyynti

Vaihe 2: Piirien tekeminen

Piirien tekeminen
Piirien tekeminen
Piirien tekeminen
Piirien tekeminen

Liitä ensin led -nauha arduinoon. Voit tehdä sen yhdistämällä +5v arduinon 5v: iin. Din on liitettävä arduinon A0: een ja GND on liitettävä arduinon GND: hen.

Sinun on myös liitettävä mini -valokenno arduinoon liittämällä 5 -napainen johto led -nauhasta ja samasta lähteestä yhdistämällä johdolla arduinon PIN -koodiin 6. Mini -valokennon toinen puoli on liitettävä led -nauhan GND -johtoon

Vaihe 3: Käsineen suunnittelu

Käsineen suunnittelu
Käsineen suunnittelu

Käsineen on oltava oikean kokoinen, jotta se sopii led -nauhoihin. Ledit on kohdistettava, jotta niistä olisi miellyttävämpi katsoa.

Tässä pelissä sinun on käytettävä kättäsi ja haluat voida liikkua vapaasti. Tämä voidaan toteuttaa asettamalla arduino käsineeseen. Käytin tarranauhaa kiinnikkeenä arduinon kiinnittämiseen käsineeseen. Sitten vakauden lisäämiseksi voit laittaa köyden käsineen ja arduinon ympärille.

Minivalokenno on ommeltu käsineen sisään, joten se pysyy paikallaan.

Lopuksi johdot on piilotettava, jotta se näyttää paremmalta. Tämä voidaan tehdä kankaalla, joka ommellaan lankojen päälle.

Vaihe 4: Juotos

Juotos
Juotos

Nyt voit tehdä piirin liitäntäjohdot turvallisiksi juottamalla.

Vaihe 5: Koodaus

Koodaus
Koodaus
Koodaus
Koodaus
Koodaus
Koodaus

// Perus päivittäinen NeoPixel -nauhatestausohjelma.

// NEOPIXELIN PARHAAT KÄYTÄNNÖT luotettavimmalle toiminnalle: // - Lisää 1000 uF KAPASITAATTORIA NeoPixel -nauhan + ja - -liitäntöjen väliin. // - MINIMOI KYTKENTÄPITUUS mikrokortin ja ensimmäisen pikselin välillä. //-NeoPixel-nauhan DATA-IN: n tulee kulkea 300-500 OHM: n vastuksen läpi. // - VÄLTÄ NeoPixelien yhdistämistä LIVE CIRCUIT -sovelluksessa. Jos on pakko, AINA // liitä ensin GROUND (-), sitten +ja sitten data. //-Kun käytät 3,3 V: n mikro-ohjainta, jossa on 5 V: n virtalähteenä toimiva NeoPixel-nauha, // LOGIC-LEVEL CONVERTER -tietorivillä on VAHVASTI SUOSITELTU. // (Näiden ohittaminen voi toimia OK työpöydälläsi, mutta voi epäonnistua kentällä)

#include #ifdef _AVR_ #include // Pakollinen 16 MHz: n Adafruit -rihkalle #endif

// Mikä Arduinon nasta on yhdistetty NeoPixel -laitteisiin? // Herkussa tai Gemmassa suosittelemme vaihtamaan tämän arvoon 1: #define LED_PIN 6

// Kuinka monta NeoPixeliä on liitetty Arduinoon? #define LED_COUNT 60

// Ilmoita NeoPixel -nauhaobjektimme: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Valkoinen väri, oletusarvoisen boolin napsautuksen jälkeenCorrectly = false; // Argumentti 1 = NeoPixel -nauhan pikselien lukumäärä // Argumentti 2 = Arduino -pin -numero (useimmat ovat kelvollisia) // Argumentti 3 = Pikselityyppiset liput, lisää tarvittaessa: // NEO_KHZ800 800 KHz: n bittivirta (useimmat NeoPixel -tuotteet WS2812 LEDit) // NEO_KHZ400 400 KHz (klassinen 'v1' (ei v2) FLORA -pikseliä, WS2811 -ohjaimet) // NEO_GRB Pikselit on kytketty GRB -bittivirtaan (useimmat NeoPixel -tuotteet) // NEO_RGB Pikselit on kytketty RGB -bittivirtaan (v1 FLORA -pikseliä), ei v2) // NEO_RGBW Pikselit on kytketty RGBW -bittivirtaan (NeoPixel RGBW -tuotteet)

// setup () -toiminto-suoritetaan kerran käynnistyksen yhteydessä --------------------------------

void setup () {// Nämä linjat tukevat erityisesti Adafruit Trinket 5V 16 MHz -taajuutta. // Mikä tahansa muu levy, voit poistaa tämän osan (mutta ei haittaa siitä): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END of Trinket-spesifinen koodi.

pinMode (A0, INPUT); strip.begin (); // ALOITA NeoPixel -nauhaobjekti (VAATIMUS) strip.show (); // Sammuta kaikki pikselit ASAP strip.setBrightness (10); // Aseta KIRKKAUS arvoon noin 1/5 (enintään = 255)}

// loop () -toiminto-toimii toistuvasti niin kauan kuin levy on päällä ---------------

void loop () {clickckedCorrectly = TheaterChaseOne (väri); if (napsautetaan oikein) {color = strip. Color (0, 255, 0); } else {väri = nauha. Väri (255, 0, 0); }}

// Jotkut omat toiminnot animoitujen tehosteiden luomiseen -----------------

// Teatteriteltatyyliset jahtaavat valot. Anna väri (32-bittinen arvo, // a la strip, väri (r, g, b) kuten edellä mainittiin) ja viiveaika (ms) // kehysten välillä. bool -teatteriChaseOne (uint32_t väri) {bool correct = false; bool clickWrong = false; for (int index = 0; index 800) {// arvo valoanturi jos (indeksi <16) {// 2 lediä ennen loppua, voit napsauttaa color = strip. Color (255, 0, 0); // punaisen värin ledit napsauttivatWrong = true; // napsautti väärin ja ledit muuttuivat punaisiksi} else if (! clickckedWrong) {// jos ei väärä väri = strip. Color (0, 255, 0); // vihreät värit osoittavat oikein = true; // napsautti oikein ja ledit muuttuivat vihreäksi}} strip.clear (); strip.setPixelColor (17 - indeksi, väri); // ensimmäisen rivin led -valot strip.setPixelColor (18 + indeksi, väri); // toisen rivin led -valot strip.setPixelColor (53 - indeksi, väri); // kolmannen rivin led -valot strip.show (); viive (300); } palauta oikein; }

Vaihe 6: Muutokset

Muutokset
Muutokset
Muutokset
Muutokset
Muutokset
Muutokset

Tein joitain muutoksia. Ensinnäkin piilotin arduinon, jotta olisi mukavampaa käyttää "Rythm -kättä", ja toiseksi muutin koodia hieman. Muutin koodin niin, että kun painat oikealla hetkellä, väri muuttuu vihreäksi ja LED -valot liikkuvat nopeammin. Näin LED Swill tulee 10% nopeampi kuin ennen. Tämä tekee pelistä mielenkiintoisemman

Koodi on nyt näin:

// Perus päivittäinen NeoPixel -nauhatestausohjelma. // NEOPIXELIN PARHAAT KÄYTÄNNÖT luotettavimmalle toiminnalle: // - Lisää 1000 uF KAPASITAATTORIA NeoPixel -nauhan + ja - -liitäntöjen väliin. // - MINIMOI KYTKENTÄPITUUS mikrokortin ja ensimmäisen pikselin välillä. //-NeoPixel-nauhan DATA-IN: n tulee kulkea 300-500 OHM: n vastuksen läpi. // - VÄLTÄ NeoPixelien yhdistämistä LIVE CIRCUIT -sovelluksessa. Jos on pakko, AINA // liitä ensin GROUND (-), sitten +ja sitten data. //-Kun käytät 3,3 V: n mikro-ohjainta, jossa on 5 V: n virtalähteenä toimiva NeoPixel-nauha, // LOGIC-LEVEL CONVERTER -tietorivillä on VAHVASTI SUOSITELTU. // (Näiden ohittaminen voi toimia OK työpöydälläsi, mutta voi epäonnistua kentällä) #include #ifdef _AVR_ #include // Pakollinen 16 MHz: n Adafruit -rihkalle #endif // Mikä Arduino -nasta on liitetty NeoPixeleihin? // Herkussa tai Gemmassa suosittelemme vaihtamaan tämän arvoon 1: #define LED_PIN 6 // Kuinka monta NeoPixeliä on liitetty Arduinoon? #define LED_COUNT 60 // Ilmoita NeoPixel -nauhaobjektimme: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Valkoinen väri, oletusarvoisen boolin napsautuksen jälkeenCorrectly = false; int -indeksi = 0; int -väli = 300; int tulos = 0; allekirjoittamaton aikaisempiMs = millis (); // Argumentti 1 = NeoPixel -nauhan pikselien lukumäärä // Argumentti 2 = Arduino -pin -numero (useimmat ovat kelvollisia) // Argumentti 3 = Pikselityyppiset liput, lisää tarvittaessa: // NEO_KHZ800 800 KHz: n bittivirta (useimmat NeoPixel -tuotteet WS2812 LEDit) // NEO_KHZ400 400 KHz (klassinen 'v1' (ei v2) FLORA -pikseliä, WS2811 -ohjaimet) // NEO_GRB Pikselit on kytketty GRB -bittivirtaan (useimmat NeoPixel -tuotteet) // NEO_RGB Pikselit on kytketty RGB -bittivirtaan (v1 FLORA -pikseliä), ei v2) // NEO_RGBW Pikselit on kytketty RGBW-bittivirtaan (NeoPixel RGBW -tuotteet) // setup () -toiminto-toimii kerran käynnistyksen yhteydessä -------------------- ------------ void setup () {// Nämä linjat tukevat erityisesti Adafruit Trinket 5V 16 MHz -taajuutta. // Mikä tahansa muu levy, voit poistaa tämän osan (mutta ei haittaa siitä): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END of Trinket-spesifinen koodi. Sarja.alku (9600); while (! Sarja) {; // odota, että sarjaportti muodostaa yhteyden. Tarvitaan vain natiiville USB -portille} pinMode (A0, INPUT); strip.begin (); // ALOITA NeoPixel -nauhaobjekti (VAATIMUS) strip.show (); // Sammuta kaikki pikselit ASAP strip.setBrightness (10); // Aseta KIRKKAUS noin 1/5 (maks. = 255)} // silmukka () -toiminto-toimii toistuvasti niin kauan kuin kortti on päällä --------------- mitätön silmukka () {unsigned long currentMs = millis (); // Nykyisen ajan saaminen int value = analogRead (A0); // Nykyisen valoanturin lukeminen, jos (arvo> 900 && result == 0) {// Jos anturia painetaan eikä tulosta ole vielä tallennettu, laukaise tulosten kaappaus, jos (indeksi = väli) {// Tarkista, onko nykyinen silmukka ylittää aikavälin previousMs = currentMs; // Aseta uusi aikaväli nykyiseen aika + väliindeksi + = 1; // Aseta ledit askeleen pidemmälle silmukassa, jos (indeksi> 17) {// Käynnistä silmukankäsittelyn loppu index = 0; if (tulos == 2) {// Oikealla tulosvälillä = (int) max ((väli * 0,95), 50); // Nopeuta 10%, aina 50 ms: n välein/ color = strip. Color (0, 255, 0); // Aseta ledit vihreäksi} else if (result == 1) {// Väärällä tulovälein = 300; // Nollaa värin väri = nauha. Väri (255, 0, 0); // Aseta ledit punaisiksi} else {// Ei tulosta väri = nauha. Väri (255, 0, 0); // Aseta ledit punaisiksi} result = 0; // Palauta seuraavan silmukan tulos} TheaterChaseOne (väri, hakemisto); // Sytytä LEDit näytölle. }} // Jotkut omat toiminnot animoitujen tehosteiden luomiseen ----------------- // Teatteriteltatyyliset jahtaavat valot. Anna väri (32-bittinen arvo, // a la strip, väri (r, g, b) kuten edellä mainittiin) ja viiveaika (ms) // kehysten välillä. void teatteriChaseOne (uint32_t väri, int -indeksi) {strip.clear (); strip.setPixelColor (17 - indeksi, väri); // ensimmäisen rivin led -valot strip.setPixelColor (18 + indeksi, väri); // toisen rivin led -valot strip.setPixelColor (53 - indeksi, väri); // kolmannen rivin led -valot strip.show (); }

Suositeltava: