Բովանդակություն:

Arduino Metronome: 4 քայլ
Arduino Metronome: 4 քայլ

Video: Arduino Metronome: 4 քայլ

Video: Arduino Metronome: 4 քայլ
Video: Метроном на ардуино! #arduino #электроника #метроном 2024, Հուլիսի
Anonim
Image
Image

Մանկության տարիներին նոր երաժշտական գործիք սովորելիս շատ նոր բաներ կան, որոնց վրա պետք է կենտրոնանալ: Tempoիշտ տեմպով քայլ պահելը դրանցից մեկն է: Ֆունկցիոնալ առումով ամբողջական և հարմար մետրոնոմ չգտնելը լավագույն պատրվակն էր ՝ երեխաներիս հետ նորից սկսելու համար: Այս Instructables գրառման մեջ դուք կգտնեք ֆունկցիոնալ նկարագրությունը, մասերի ցուցակը ՝ վեբ խանութի հղումներով և գներով, հավաքման էլեկտրագծերի դիագրամ և ամբողջական Arduino կոդ:

Քայլ 1: Ֆունկցիոնալ նկարագրություն

Մասերի ցուցակ
Մասերի ցուցակ

Տանը կամ երաժշտական դպրոցում հարմարավետ օգտագործման համար լավ կլիներ ունենալ հետևյալ գործառույթներով մետրոնոմ սարք:

  • Կոմպակտ ձևի գործոն ՝ փոքր վայրերը տեղավորելու համար երաժշտական գործիքների վերևում կամ կողքին,
  • Մարտկոցով աշխատող, ամուր և դյուրակիր տեղափոխելու համար,
  • Հեշտությամբ կարգավորվում է նույնիսկ երեխաների համար, BPM արժեքը միշտ ցուցադրվում է,
  • Կարգավորելի զարկեր մեկ րոպեում Պտտվող կոճակով ՝ մինչև 240 BPM
  • Լսելի տակտ ՝ ձայնի վերահսկման միջոցով,
  • Լուռ ռեժիմ ականջակալների գիշերային վարժությունների համար,
  • Beեծերի (1/4, 2/4, 3/3, 4/4, 6/8 և այլն) տեսողական արձագանք մինչև 8 LED,
  • Առաջատար առոգանությամբ կամ առանց դրա, տեսողական և լսելի արձագանքներով:

Միացնելով ՝ մետրոնոմի ռեժիմը կսկսվի 60 BPM- ից ՝ ցուցադրվելով փոքր էկրանին և թույլ տալով, որ տեմպը կարգավորվի պտտվող կոճակով 10 -ից 240 -ի միջև: Կոճակը սեղմելը կանցնի ծեծի ճշգրտման ռեժիմի, իսկ կանաչ LED- ները ցույց կտան սահմանված հարվածի կառուցվածքը: Պտտվող կոճակը կբարձրացնի կամ կիջեցնի հարվածի կառուցվածքը (2/2, 3/3, 4/4, 6/8 և այլն): 8 LED- ից բարձր, ժամացույցի սլաքի ուղղությամբ հետագայում պտտվող, առաջատար շեշտը կմիացվի, և առաջին LED- ը դա ցույց կտա կարմիր գույնով: Առաջատար շեշտը նույնպես լսելի արձագանք կունենա: Այն կարող է անջատվել ՝ պտտվելով ժամացույցի սլաքի հակառակ ուղղությամբ: Կոճակը սեղմելը կվերադառնա զարկերի ճշգրտման ռեժիմից մետրոնոմ ռեժիմի:

Քայլ 2: Մասերի ցուցակ

Ձեզ անհրաժեշտ կլինի պատյան: Shapeանկացած ձևի կամ չափի կարելի է գնել, բայց մենք ունեինք սև մետաղյա գեղեցիկ պատյան ՝ հին ձեռքով VGA անջատիչի միջոցով, որը հեռացվել էր ընկերոջից: Մնացած մասերը թվարկված են ստորև:

  • 9 Վ մարտկոց, 1.50 ԱՄՆ դոլար
  • Մարտկոցի միակցիչ մալուխ, 0 դոլար, 16 դոլար
  • Arduino Nano- ն ՝ քիվերով, 2.05 ԱՄՆ դոլար
  • Nano IO Extension Shield, 1 ԱՄՆ դոլար, 05 դոլար
  • Մինի սլայդ անջատիչ հզորության համար, 0.15 ԱՄՆ դոլար
  • Piezo buzzer, 0 ԱՄՆ դոլար, 86 դոլար
  • Adafruit Neopixel WS2812 8-բիթ, 1 ԱՄՆ դոլար, 01
  • OLED էկրան 128x64, 1 ԱՄՆ դոլար, 53 դոլար
  • Պտտվող կոդավորիչ, 0, 50 ԱՄՆ դոլար
  • Dupont մալուխներ F/F, USD 0, 49

Բաղադրիչների ընդհանուր գինը 10 դոլարից պակաս է, -

Քայլ 3: Էլեկտրագծերի դիագրամ

Հաղորդալարերի դիագրամ
Հաղորդալարերի դիագրամ

Օգտագործեք Nano IO Extension Board- ը, որպեսզի չանհանգստացնեք բազմաթիվ GND և VCC միացումներ միացնելիս: Նանոյի կապի վերնագրերի և Neopixel մոդուլի միակցիչների համար կպահանջվի նվազագույն զոդում: Dupont լարերի օգտագործումը թույլ է տալիս կայուն կապեր մնացած լարերի համար, ինչպես ցույց է տրված դիագրամում: 9 Վ մարտկոցը միացված է GND- ին և VIN- ին, վերջինս ՝ հոսանքի սահող անջատիչի միջոցով: Պտտվող կոդավորիչի մոդուլն ունի ինտեգրված անջատիչ կոճակ, որն առանձին ցուցադրվում է դիագրամում `դրանք միացնելու եղանակներն ավելի հեշտ հասկանալու համար: Պտտվող մասը (CLK և DT) միացված է համապատասխանաբար PIN2 և PIN3- ին, քանի որ դրանք միակ NANO կապումներն են, որոնք ունակ են ընդհատել բեռնաթափումը: Պտտվող GND- ը, իհարկե, կապված է Նանոյի GND PIN- ի հետ: Ինտեգրված անջատիչի կոճակը միացված է PIN4- ին: Piezo ազդանշանը միացված է PIN5- ին և GND- ին: Adafruit Neopixel մոդուլը միացված է PIN7- ին, իսկ դրա VIN- ին և GND- ին ՝ համապատասխանաբար Nano- ի 5V- ին և GND- ին: Փոքր OLED էկրանը միացված է I2C ավտոբուսի միջերեսին, որը SDA և SDL համար PIN A4 և A5 է: VCC- ն և GND- ն գնում են, իհարկե, Նանոյի 5V- ին և GND- ին: Դրանով ավարտվում է մեր Dupont- ի էլեկտրագծերը:

Քայլ 4: Arduino կոդ

Arduino աղբյուրի կոդը
Arduino աղբյուրի կոդը

// Metronome, Leading Accent, Visual & Audible Tact - 2019 Peter Csurgay

#include #include #include #include #include "TimerOne.h" #dereine SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Reset pin #(or -1 if sharing Arduino reset reset) Adafruit_SSD1306 display, SCREEN_WREW, & Մետաղալար, OLED_RESET); #սահմանել pin_neopixel 7 #սահմանել NUMPIXELS 8 #սահմանել ՊԱՀՈՍԱԿՈ 32ԹՅՈ 32Ն 32 Adafruit_NeoPixel պիքսել = Adafruit_NeoPixel (NUMPIXELS, pin_neopixel, NEO_GRB + NEO_KHZ800); #սահմանել IDLE_11 0 #սահմանել SCLK_01 1 #սահմանել SCLK_00 2 #սահմանել SCLK_10 3 #սահմանել SDT_10 4 #սահմանել SDT_00 5 #սահմանել SDT_01 6 int state = IDLE_11; #սահմանել CLK 2 #սահմանել DT 3 #սահմանել քորոց_ անջատիչ 4 #սահմանել քորոց_բուզեր 5 int bpm = 60; int bpmFirst = 0; // LED- ն սկզբում միացված է, մնացածը `անջատված … int tack = 4; bool leaderTack = կեղծ; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Erամաչափ. 1. սկզբնականացնել (1000000*60/bpm/2); Timer1.attachInterrupt (buzztick); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); pinMode (pin_switch, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); եթե (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C)) {// Հասցե 0x3D համար 128x64 համար (;;); // Մի շարունակիր, ընդմիշտ շրջանցիր} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {հետաձգում (100); while (digitalRead (pin_switch) == LOW); ուշացում (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (leaderTack) tack = 8; else {leaderTack = true; հպում = 1; }}} այլ եթե (curValprevVal) {bpm+= 2; եթե (bpm> 240) bpm = 240; } else if (curVal = 100) display.print (""); else display.print (""); display.print (bpm); display.display (); } void buzztick () {if (bpmFirst == 0) {int ծավալը = 4; եթե (ledTack && pos == 0) ծավալը = 8; համար (int i = 0; i

Խորհուրդ ենք տալիս: