Turinys:

Ritmo ranka: 6 žingsniai
Ritmo ranka: 6 žingsniai

Video: Ritmo ranka: 6 žingsniai

Video: Ritmo ranka: 6 žingsniai
Video: Ritminis žaidimas vaikams | Kūno perkusija (1-6m.) | Body percussion play along for kids (1-6y) 2024, Lapkritis
Anonim
Ritmo ranka
Ritmo ranka

Ši kibernetinė meilė yra apie teisingą žingsnį tinkamu momentu.

Žibintai eina nuo rankos (alkūnės) iki rankos, o kai žibintai pasiekia ranką, turite paspausti pirštus ant mini fotoelemento.

Jei reikiamu momentu paspausite ranką ant mini fotoelemento, šviesos diodai taps žali. Jei ne, lemputės tampa raudonos.

1 žingsnis: Surinkite medžiagas

  • Pirštinė
  • Audinys, kad pirštinė būtų ilgesnė
  • WS2812B LED juostelė
  • Laidai
  • Arduino
  • Mini fotosesija

2 žingsnis: grandinių kūrimas

Grandinių kūrimas
Grandinių kūrimas
Grandinių kūrimas
Grandinių kūrimas

Pirmiausia prijunkite LED juostą prie arduino. Tai galite padaryti prijungę +5v prie 5v arduino. „Din“turi būti prijungtas prie „A0“arduino, o „GND“turi būti prijungtas prie „arduino“GND.

Taip pat turite prijungti mini fotoelementą prie „arduino“, jungdami 5v laidą iš LED juostos ir iš to paties šaltinio, jungdami laidą prie „arduino“PIN 6. Kita mini fotoelemento pusė turi būti prijungta prie GND laido iš LED juostos

3 žingsnis: pirštinės projektavimas

Pirštinių projektavimas
Pirštinių projektavimas

Pirštinės turi būti tinkamo dydžio, kad tilptų į ledines juosteles. Šviesos diodai turi būti suderinti, kad būtų maloniau žiūrėti.

Šiame žaidime jūs turite naudoti ranką ir norite laisvai judėti. Tai galima suprasti uždėjus arduino ant pirštinės. Aš naudojau velcro kaip tvirtinimo detalę, kad priklijuočiau arduino prie pirštinės. Tada, norėdami sukurti daugiau stabilumo, galite uždėti virvę aplink pirštinę ir aplink arduino.

Mini fotoelementas buvo siuvamas pirštinės viduje, todėl liks vietoje.

Galiausiai turite paslėpti laidus, kad jie atrodytų geriau. Tai galima padaryti su audiniu, kuris bus siuvamas ant laidų.

4 žingsnis: litavimas

Litavimas
Litavimas

Dabar jungiamieji laidai iš grandinės gali būti apsaugoti lituodami.

5 žingsnis: kodavimas

Kodavimas
Kodavimas
Kodavimas
Kodavimas
Kodavimas
Kodavimas

// Pagrindinė kasdienė „NeoPixel“juostelių bandymo programa.

// GERIAUSIA NEOPIXEL PRAKTIKA patikimiausiam darbui: // - Pridėkite 1000 uF KAPACITORIUS tarp „NeoPixel“juostos + ir - jungčių. // - Sumažinti laidų ilgį tarp mikrovaldiklio plokštės ir pirmojo pikselio. //-„NeoPixel“juostos DATA-IN turi praeiti per 300–500 OHM rezistorių. // - VENGTI prijungti „NeoPixels“GYVOJE KONTRA. Jei reikia, VISADA // pirmiausia prijunkite GROUND (-), tada +, tada duomenis. //-Kai naudojamas 3,3 V mikrovaldiklis su 5 V maitinamu „NeoPixel“juosteliu, // LOGINIO LYGIO KONVERTERIS duomenų linijoje yra labai rekomenduojamas. // (Jų praleidimas gali gerai veikti jūsų darbastalyje, bet gali nepavykti lauke)

#include #ifdef _AVR_ #include // Reikalingas 16 MHz „Adafruit“niekučiui #endif

// Kuris „Arduino“kaištis yra prijungtas prie „NeoPixels“? // „Trinket“ar „Gemma“siūlome tai pakeisti į 1: #define LED_PIN 6

// Kiek „NeoPixels“pridedama prie „Arduino“? #define LED_COUNT 60

// Deklaruoti mūsų NeoPixel juostelės objektą: Adafruit_NeoPixel strip (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t spalva = juostelė. Spalva (127, 127, 127); // Balta spalva, numatytajam booliui spustelėjusTeisingai = false; // Argumentas 1 = pikselių skaičius „NeoPixel“juostelėje WS2812 šviesos diodai) // NEO_KHZ400 400 KHz (klasikinis „v1“(ne v2) FLORA pikseliai, WS2811 tvarkyklės) // NEO_GRB Pikseliai prijungti prie GRB bitų srauto (dauguma „NeoPixel“produktų), ne v2) // NEO_RGBW Pikseliai yra prijungti prie RGBW bitų srauto („NeoPixel RGBW“produktai)

// sąrankos () funkcija-paleidžiama vieną kartą paleidžiant --------------------------------

void setup () {// Šios eilutės yra skirtos specialiai „Adafruit Trinket 5V 16 MHz“palaikymui. // Bet kuri kita lenta, galite pašalinti šią dalį (bet nepadarysite žalos): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // „Fingeret“specifinio kodo pabaiga.

pinMode (A0, INPUT); strip.begin (); // INICIALIZUOTI „NeoPixel“juostos objektą (REIKALINGA) strip.show (); // ASAP išjungti visus pikselius ASAP strip.setBrightness (10); // Nustatykite BRIGHTNESS į maždaug 1/5 (maks. = 255)}

// loop () funkcija-veikia pakartotinai, kol plokštė įjungta ---------------

void loop () {clickckedCorrectly = teatrasChaseOne (spalva); if (teisingai spustelėta) {color = strip. Color (0, 255, 0); } else {spalva = juostelė. Spalva (255, 0, 0); }}

// Kai kurios mūsų funkcijos animaciniams efektams kurti -----------------

// Teatro marquee stiliaus vejasi žiburiai. Perduokite spalvą (32 bitų reikšmė, // a la juostelė. Spalva (r, g, b), kaip minėta aukščiau) ir delsos laikas (ms) // tarp kadrų. bool TheaterChaseOne (uint32_t spalva) {bool correct = false; bool clickckedWrong = false; (int indeksas = 0; indeksas 800) {// reikšmės šviesos jutiklis, jei (indeksas <16) {// 2 šviesos diodai prieš pabaigą, tada galite spustelėti spalva = juostelė. Spalva (255, 0, 0); // raudonos spalvos diodai spustelėjoWrong = true; // spustelėjo neteisingai, tada šviesos diodai pasidarė raudoni} else if (! clickckedWrong) {// jei ne neteisinga spalva = strip. Color (0, 255, 0); // žalios spalvos lemputės teisingos = tiesa; // spustelėjo teisingai, tada lemputės tampa žalios}} strip.clear (); strip.setPixelColor (17 - indeksas, spalva); // pirmosios eilės šviesos diodų juostelė strip.setPixelColor (18 + indeksas, spalva); // antros eilės LED lemputės strip.setPixelColor (53 - indeksas, spalva); // trečios eilės LED žibintų juostelė.show (); vėlavimas (300); } grąžinti teisingai; }

6 žingsnis: pakeitimai

Pakeitimai
Pakeitimai
Pakeitimai
Pakeitimai
Pakeitimai
Pakeitimai

Aš padariau keletą pakeitimų. Pirma, aš paslėpiau arduino, kad būtų patogiau naudoti „Rythm hand“, ir, antra, šiek tiek pakeičiau kodą. Aš pakeičiau kodą taip, kad kai paspausite reikiamu momentu, spalva taps žalia ir šviesos diodai judės greičiau. Tokiu būdu šviesos diodų lemputė taps 10% greitesnė nei anksčiau. Tai daro žaidimą įdomesnį

Štai toks kodas dabar:

// Pagrindinė kasdienė „NeoPixel“juostelių bandymo programa. // GERIAUSIA NEOPIXEL PRAKTIKA patikimiausiam darbui: // - Pridėkite 1000 uF KAPACITORIUS tarp „NeoPixel“juostos + ir - jungčių. // - Sumažinti laidų ilgį tarp mikrovaldiklio plokštės ir pirmojo pikselio. //-„NeoPixel“juostos DATA-IN turėtų praeiti per 300–500 OHM rezistorių. // - VENGTI prijungti „NeoPixels“GYVOJE KONTRA. Jei reikia, VISADA // pirmiausia prijunkite GROUND (-), tada +, tada duomenis. //-Kai naudojamas 3,3 V mikrovaldiklis su 5 V maitinamu „NeoPixel“juosteliu, // LOGINIO LYGIO KONVERTERIS duomenų linijoje yra labai rekomenduojamas. // (Jų praleidimas gali gerai veikti jūsų darbastalyje, bet gali nepavykti lauke) #include #ifdef _AVR_ #include // Reikalingas 16 MHz „Adafruit“niekučiui #endif // Kuris „Arduino“kaištis prijungtas prie „NeoPixels“? // „Trinket“ar „Gemma“siūlome tai pakeisti į 1: #define LED_PIN 6 // Kiek „NeoPixels“pridedama prie „Arduino“? #define LED_COUNT 60 // Deklaruokite mūsų „NeoPixel“juostos objektą: „Adafruit_NeoPixel“juostelė (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t spalva = juostelė. Spalva (127, 127, 127); // Balta spalva, numatytajam booliui spustelėjusTeisingai = false; int indeksas = 0; int intervalas = 300; int rezultatas = 0; nepasirašytas ilgas ankstesnisMs = milis (); // Argumentas 1 = pikselių skaičius „NeoPixel“juostelėje WS2812 šviesos diodai) // NEO_KHZ400 400 KHz (klasikiniai „v1“(ne v2) FLORA pikseliai, WS2811 tvarkyklės) // NEO_GRB Pikseliai prijungti prie GRB bitų srauto (dauguma „NeoPixel“produktų), ne v2) // NEO_RGBW Pikseliai yra prijungti prie RGBW bitų srauto („NeoPixel RGBW“produktai) // sąrankos () funkcija-paleidžiama vieną kartą paleidžiant -------------------- ------------ void setup () {// Šios linijos yra skirtos specialiai „Adafruit Trinket 5V 16 MHz“palaikymui. // Bet kuri kita lenta, galite pašalinti šią dalį (bet nepadarysite žalos): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // „Fingeret“specifinio kodo pabaiga. Serial.begin (9600); while (! Serial) {; // laukti, kol serijinis prievadas prisijungs. Reikalingas tik vietiniam USB prievadui} pinMode (A0, INPUT); strip.begin (); // INICIALIZUOTI „NeoPixel“juostos objektą (REIKALINGA) strip.show (); // ASAP išjungti visus pikselius ASAP strip.setBrightness (10); // Nustatykite BRIGHTNESS į maždaug 1/5 (maks. = 255)} // loop () funkcija-veikia pakartotinai, kol plokštė įjungta --------------- void loop () {nepasirašyta ilga srovėMs = milis (); // Dabartinio laiko gavimas int value = analogRead (A0); // Dabartinio šviesos jutiklio skaitymas, jei (vertė> 900 && rezultatas == 0) {// Jei jutiklis yra paspaustas ir rezultatas dar neįrašytas, suaktyvinkite rezultatų fiksavimą, jei (indeksas = intervalas) {// Patikrinkite, ar dabartinis kilpa viršija intervalą previousMs = currentMs; // Nustatyti naują intervalą į dabartinį laiko + intervalo indeksą + = 1; // Nustatykite šviesos diodus vienu žingsniu toliau cikle, jei (indeksas> 17) {// Suveikimo ciklo pabaigos indeksas = 0; if (rezultatas == 2) {// Dėl teisingo rezultatų intervalo = (int) max ((intervalas * 0,95), 50); // Paspartinkite 10%, iki 50 ms intervalo/ spalva = juostelė. Spalva (0, 255, 0); // Nustatykite šviesos diodus į žalią} else if (result == 1) {// Ant neteisingo rezultatų intervalo = 300; // Iš naujo nustatyti intervalą color = strip. Color (255, 0, 0); // Nustatykite šviesos diodus į raudoną} else {// Be jokio rezultato užfiksuota color = strip. Color (255, 0, 0); // Nustatykite šviesos diodus į raudoną} result = 0; // Iš naujo nustatyti kitos kilpos rezultatą} TheaterChaseOne (spalva, indeksas); // Apšvieskite ekranus. }} // Kai kurios mūsų pačių funkcijos kuriant animacinius efektus ----------------- // Teatro palapinės stiliaus persekiojimo šviesos. Perduokite spalvą (32 bitų reikšmė, // a la juostelė. Spalva (r, g, b), kaip minėta aukščiau) ir delsos laikas (ms) // tarp kadrų. void theatreChaseOne (uint32_t spalva, int indeksas) {strip.clear (); strip.setPixelColor (17 - indeksas, spalva); // pirmosios eilės šviesos diodų juostelė strip.setPixelColor (18 + indeksas, spalva); // antros eilės šviesos diodų juostos.setPixelColor (53 - indeksas, spalva); // trečios eilės LED žibintų juostelė.show (); }

Rekomenduojamas: