Përmbajtje:

Ritmi i dorës: 6 hapa
Ritmi i dorës: 6 hapa

Video: Ritmi i dorës: 6 hapa

Video: Ritmi i dorës: 6 hapa
Video: ( Tutorial ) Piano - Mora Fjalë 🎹 #kosovo #piano #pianomusic 2024, Nëntor
Anonim
Dora e ritmit
Dora e ritmit

Kjo dashuri kibernetike ka të bëjë me lëvizjen e duhur në momentin e duhur.

Dritat po shkojnë nga krahu juaj (bërryl) në dorën tuaj dhe kur dritat arrijnë në dorën tuaj ju duhet të shtypni gishtat në mini fotocelën.

Nëse shtypni dorën mbi mini -fotocelën në momentin e duhur, ledet bëhen të gjelbërta. Nëse jo, ledet bëhen të kuqe.

Hapi 1: Mblidhni materialet

  • Nje doreze
  • Pëlhurë për ta bërë dorezën më të gjatë
  • Shirit LED WS2812B
  • Telat
  • Arduino
  • Mini foto shitje

Hapi 2: Krijimi i qarqeve

Marrja e qarqeve
Marrja e qarqeve
Marrja e qarqeve
Marrja e qarqeve

Së pari lidhni shiritin led me arduino. Ju mund ta bëni këtë duke lidhur +5v me 5v në arduino. Din duhet të lidhet me A0 në arduino dhe GND duhet të lidhet me GND në arduino.

Ju gjithashtu duhet të lidhni mini -fotocelën me arduino përmes lidhjes me tela 5v nga shiriti led dhe nga i njëjti burim që lidhet me një tel në PIN 6 në arduino. Ana tjetër nga mini fotoceli duhet të lidhet me tela GND nga shiriti i udhëhequr

Hapi 3: Dizajnimi i Dorezës

Dizajnimi i Dorezës
Dizajnimi i Dorezës

Doreza duhet të ketë madhësinë e duhur për t'iu përshtatur shiritave të udhëhequr. Dritaret duhet të rreshtohen për t'u bërë më të këndshme për t'u parë.

Për këtë lojë ju duhet të përdorni krahun tuaj dhe dëshironi të jeni në gjendje të lëvizni lirshëm. Kjo mund të realizohet duke e vendosur arduinon në dorezë. Kam përdorur velcro si një fiksues për të ngjitur arduino në dorezë. Pastaj për të krijuar më shumë stabilitet mund të vendosni një litar rreth dorezës dhe rreth arduinos.

Mini fotoceli është qepur brenda dorezës kështu që do të qëndrojë në vend.

Së fundmi ju duhet të fshehni telat për ta bërë atë të duket më mirë. Kjo mund të bëhet me pëlhurë që do të qepet në majë të telave.

Hapi 4: Saldimi

Bashkim
Bashkim

Tani mund t'i bëni telat lidhës nga qarku të sigurt duke bashkuar.

Hapi 5: Kodimi

Kodimi
Kodimi
Kodimi
Kodimi
Kodimi
Kodimi

// Një program bazë i përditshëm i testimit të shiritit NeoPixel.

// PRAKTIKAT MEST T MIRA NEOPIXEL për funksionimin më të besueshëm: // - Shtoni 1000 KAPACITOR UF midis lidhjeve + dhe - të shiritit NeoPixel. // - MINIMIZONI GJATSIN E KLIMIT midis bordit të mikrokontrolluesit dhe pikselit të parë. //-DATA-IN e shiritit NeoPixel duhet të kalojë nëpër një RESISTOR OHM 300-500. // - Shmangni lidhjen e NeoPixels në një QARK LIVE. Nëse duhet, GJITHMON // // lidhni GROUND (-) së pari, pastaj +, pastaj të dhëna. //-Kur përdorni një mikrokontrollues 3.3V me një brez NeoPixel të mundësuar nga 5V, // një KONVERTUES LOGJIK-NIVELI në linjën e të dhënave rekomandohet fuqishëm. // (Kalimi i këtyre mund të funksionojë mirë në tryezën tuaj të punës, por mund të dështojë në terren)

#përfshi #ifdef _AVR_ #include // Kërkohet për xhingël Adafruit 16 MHz #endif

// Cila pin në Arduino është e lidhur me NeoPixels? // Në një xhingël ose Gemma ju sugjerojmë ta ndryshoni këtë në 1: #përcaktoni LED_PIN 6

// Sa NeoPixel janë bashkangjitur në Arduino? #përcakto LED_COUNT 60

// Shpallni objektin tonë të shiritit NeoPixel: Shiritin Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t ngjyra = shirit. Ngjyra (127, 127, 127); // Ngjyra e bardhë, për parazgjedhje bool klikuarCorrectly = false; // Argumenti 1 = Numri i pikselave në shiritin NeoPixel // Argumenti 2 = Numri i kunjit Arduino (shumica janë të vlefshme) // Argumenti 3 - Flamujt e tipit Pixel, shtoni së bashku sipas nevojës: // NEO_KHZ800 800 KHz bitstream (shumica e produkteve NeoPixel w/ WS2812 LED) // NEO_KHZ400 400 KHz (klasike 'v1' (jo v2) pixel FLORA, drejtues WS2811) // Pixel NEO_GRB janë të lidhur për bitstream GRB (shumica e produkteve NeoPixel) // Pixel NEO_RGB janë të lidhur për bitstream RGB (v1 pixel FLORA, jo v2) // Pikselët NEO_RGBW janë të lidhur për transmetimin bit RGBW (produktet NeoPixel RGBW)

// funksioni setup ()-ekzekutohet një herë gjatë fillimit --------------------------------

void setup () {// Këto linja janë posaçërisht për të mbështetur Adafruit Trinket 5V 16 MHz. // Çdo tabelë tjetër, ju mund ta hiqni këtë pjesë (por nuk ka dëm duke e lënë atë): #nëse është përcaktuar (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // FUND i kodit specifik të xhingël.

pinMode (A0, INPUT); strip.filloj (); // INITIALIZOJNi objektin e shiritit NeoPixel (KQRKOHET) shirit.shfaq (); // Çaktivizo të gjitha pikselat ASAP strip.setBrightness (10); // Vendosni BRIGHTNESS në rreth 1/5 (max = 255)}

// funksioni loop ()-funksionon në mënyrë të përsëritur për aq kohë sa bordi është i ndezur ---------------

void loop () {clickedCorrectly = theaterChaseOne (ngjyra); nëse (klikuar saktë) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Disa funksione tona për krijimin e efekteve të animuara -----------------

// Dritat që ndjekin stilin e teatrit-marquee. Kaloni në një ngjyrë (vlerë 32-bit, // shirit a la. Ngjyra (r, g, b) siç u përmend më lart), dhe një kohë vonesë (në ms) // midis kornizave. bool theaterChaseOne (ngjyra uint32_t) {bool saktë = e rreme; bool klikuarWrong = false; për (int index = 0; index 800) {// vlera e sensorit të dritës nëse (indeksi <16) {// 2 led para përfundimit atëherë mund të klikoni color = strip. Color (255, 0, 0); // ngjyra e kuqe leds klikuarWrong = true; // klikuar gabimisht pastaj leds kthehen në të kuqe} tjetër nëse (! klikuarWrong) {// nëse jo ngjyra e gabuar = shirit. Ngjyra (0, 255, 0); // ngjyra e gjelbër leds saktë = e vërtetë; // klikuar saktë pastaj leds kthehen në të gjelbër}} strip.clear (); strip.setPixelColor (17 - indeksi, ngjyra); // rreshti i parë i dritave led strip.setPixelColor (indeksi 18 +, ngjyra); // rreshti i dytë i dritave led strip.setPixelColor (53 - indeksi, ngjyra); // rreshti i tretë i dritave led strip.show (); vonesë (300); } kthimi i saktë; }

Hapi 6: Ndryshimet

Ndryshimet
Ndryshimet
Ndryshimet
Ndryshimet
Ndryshimet
Ndryshimet

Kam bërë disa ndryshime. Së pari e fsheha arduinon kështu që do të ishte më e rehatshme të përdor "dorën Rythm" dhe së dyti ndryshova pak kodin. Ndryshova kodin në mënyrë që kur shtypni në momentin e duhur ngjyra bëhet e gjelbër dhe LEDS lëvizin më shpejt. Duke vepruar kështu, Swill LED bëhet 10% më i shpejtë se më parë. Kjo e bën lojën më interesante

Kështu është kodi tani:

// Një program bazë i përditshëm i testimit të shiritave NeoPixel. // PRAKTIKAT MEST T MIRA NEOPIXEL për funksionimin më të besueshëm: // - Shtoni 1000 KAPACITOR UF midis lidhjeve + dhe - të shiritit NeoPixel. // - MINIMIZONI GJATSIN E KLIMIT midis bordit të mikrokontrolluesit dhe pikselit të parë. //-DATA-IN e shiritit NeoPixel duhet të kalojë nëpër një RESISTOR OHM 300-500. // - Shmangni lidhjen e NeoPixels në një QARK LIVE. Nëse duhet, GJITHMON // // lidhni GROUND (-) së pari, pastaj +, pastaj të dhëna. //-Kur përdorni një mikrokontrollues 3.3V me një shirit NeoPixel të mundësuar nga 5V, // një KONVERTUES LOGJIK-NIVELI në linjën e të dhënave rekomandohet fuqishëm. // (Kalimi i këtyre mund të funksionojë mirë në tryezën tuaj të punës, por mund të dështojë në fushë) #include #ifdef _AVR_ #include // Kërkohet për 16 MHz Adafruit Trinket #endif // Cila pin në Arduino është e lidhur me NeoPixels? // Në një xhingël ose Gemma ju sugjerojmë ta ndryshoni këtë në 1: #përcaktoni LED_PIN 6 // Sa NeoPixel janë bashkangjitur në Arduino? #përcaktoni LED_COUNT 60 // Shpallni objektin tonë të shiritit NeoPixel: Rripin Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t ngjyra = shirit. Ngjyra (127, 127, 127); // Ngjyra e bardhë, për bool të parazgjedhur klikuarCorrectly = false; int index = 0; intervali int = 300; int rezultati = 0; pa nënshkrim të gjatë të mëparshëm = milis (); // Argumenti 1 = Numri i pikselave në shiritin NeoPixel // Argumenti 2 = Numri i kunjit Arduino (shumica janë të vlefshme) // Argumenti 3 - Flamujt e tipit Pixel, shtoni së bashku sipas nevojës: // NEO_KHZ800 800 KHz bitstream (shumica e produkteve NeoPixel w/ WS2812 LED) // NEO_KHZ400 400 KHz (klasike 'v1' (jo v2) pixel FLORA, drejtues WS2811) // Pixel NEO_GRB janë të lidhur për bitstream GRB (shumica e produkteve NeoPixel) // Pixel NEO_RGB janë të lidhur për bitstream RGB (v1 pixel FLORA, jo v2) // NEO_RGBW Pixel-et janë të lidhur për bitstream RGBW (produktet NeoPixel RGBW) // funksioni setup ()-funksionon një herë gjatë fillimit -------------------- ------------ void setup () {// Këto linja janë posaçërisht për të mbështetur Adafruit Trinket 5V 16 MHz. // Çdo tabelë tjetër, ju mund ta hiqni këtë pjesë (por nuk ka dëm duke e lënë atë): #nëse është përcaktuar (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // FUND i kodit specifik të xhingël. Serial.filloj (9600); ndërsa (! Serial) {; // prisni që porti serik të lidhet. Nevojitet vetëm për portën amtare USB} pinMode (A0, INPUT); strip.filloj (); // INITIALIZOJNi objektin e shiritit NeoPixel (KQRKOHET) shirit.shfaq (); // Çaktivizo të gjitha pikselat ASAP strip.setBrightness (10); // Vendosni BRIGHTNESS në rreth 1/5 (max = 255)} // funksioni loop ()-funksionon në mënyrë të përsëritur për aq kohë sa bordi është në --------------- loop void () {aktuale e panënshkruar e gjatëMs = millis (); // Marrja e kohës aktuale vlera int = analogRead (A0); // Leximi i sensorit aktual të dritës nëse (vlera> 900 && rezultati == 0) {// Nëse sensori është shtypur dhe asnjë rezultat nuk është regjistruar ende, aktivizoni kapjen e rezultatit nëse (indeksi = intervali) {// Kontrolloni nëse rryma lak tejkalon intervalin previousMs = currentMs; // Vendosni intervalin e ri në kohën aktuale + indeksi i intervalit + = 1; // Vendosni leds një hap më tej në lak nëse (indeksi> 17) {// Shkaktoni fundin e indeksit të trajtimit të lakut = 0; nëse (rezultati == 2) {// Në një interval të saktë rezultati = (int) max ((intervali * 0.95), 50); // Shpejtoni me 10%, deri në intervalin 50ms/ ngjyra = shirit. Ngjyra (0, 255, 0); // Vendosni leds në të gjelbër} else if (rezultati == 1) {// Në një interval rezultati të pasaktë = 300; // Rivendosni ngjyrën e intervalit = shirit. Ngjyra (255, 0, 0); // Vendosni leds në të kuqe} else {// Në asnjë rezultat të kapur color = strip. Color (255, 0, 0); // Vendosni leds në të kuqe} rezultati = 0; // Rivendosni rezultatin për lakin tjetër} theaterChaseOne (ngjyra, indeksi); // Ndriçoni dritat led për shfaqje. }} // Disa funksione tona për krijimin e efekteve të animuara ----------------- // Dritat e ndjekjes në stilin e teatrit-marquee. Kaloni në një ngjyrë (vlerë 32-bit, // shirit a la. Ngjyra (r, g, b) siç u përmend më lart), dhe një kohë vonesë (në ms) // midis kornizave. void theaterChaseOne (ngjyra uint32_t, int index) {strip.clear (); strip.setPixelColor (17 - indeksi, ngjyra); // rreshti i parë i dritave led strip.setPixelColor (indeksi 18 +, ngjyra); // rreshti i dytë i dritave led strip.setPixelColor (53 - indeksi, ngjyra); // rreshti i tretë i dritave led strip.show (); }

Recommended: