ዝርዝር ሁኔታ:

Arduino Metronome: 4 ደረጃዎች
Arduino Metronome: 4 ደረጃዎች

ቪዲዮ: Arduino Metronome: 4 ደረጃዎች

ቪዲዮ: Arduino Metronome: 4 ደረጃዎች
ቪዲዮ: Make your own Arduino Metronome 2024, ሀምሌ
Anonim
Image
Image

በልጅነት አዲስ የሙዚቃ መሣሪያ በሚማሩበት ጊዜ ፣ ትኩረት የሚሹባቸው ብዙ አዳዲስ ነገሮች አሉ። በትክክለኛው ቴምፕ ውስጥ ፍጥነትን መጠበቅ ከእነዚህ አንዱ ነው። ተግባራዊ የተሟላ እና ምቹ የሆነ ሜትሮኖምን አለማግኘት ከልጆቼ ጋር እንደገና መገንባት ለመጀመር በጣም ጥሩ ሰበብ ነው። በዚህ የመማሪያ ልኡክ ጽሁፍ ውስጥ ተግባራዊ መግለጫውን ፣ የድረ -ገጽ አገናኞችን እና ዋጋዎችን ዝርዝር ፣ ለስብሰባ የወረዳ ዲያግራምን እና የአርዱዲኖ ምንጭ ኮድን ያገኙታል።

ደረጃ 1 - ተግባራዊ መግለጫ

ክፍሎች ዝርዝር
ክፍሎች ዝርዝር

በቤት ውስጥ ወይም በሙዚቃ ትምህርት ቤት ውስጥ ለመጠቀም የሚከተሉትን ተግባራት ያሉት የሜትሮኖሚ መሣሪያ ቢኖር ጥሩ ይሆናል።

  • ከላይ ወይም ከሙዚቃ መሣሪያዎች ቀጥሎ ትናንሽ ቦታዎችን ለመገጣጠም የታመቀ ቅጽ ሁኔታ ፣
  • ባትሪ የሚሠራ ፣ ጠንካራ እና ተንቀሳቃሽ ሆኖ ለመንቀሳቀስ ፣
  • ለልጆች እንኳን በቀላሉ ያቀናብሩ ፣ የ BPM እሴት ሁል ጊዜ ይታያል ፣
  • የሚስተካከሉ ድብደባዎች በደቂቃ በ Rotary knob ፣ እስከ 240 BPM ድረስ
  • የድምፅ ቁጥጥር ያለው የድምፅ ዘዴ ፣
  • ለሊት የጆሮ ማዳመጫ ልምምድ ፀጥ ያለ ሁኔታ ፣
  • የድብደባዎች የእይታ ግብረመልስ (1/4 ፣ 2/4 ፣ 3/3 ፣ 4/4 ፣ 6/8 ፣ ወዘተ) እስከ 8 LEDs ፣
  • በእይታ እና በሚሰማ ግብረመልስ በአመራር ዘይቤ ወይም ያለ ፣

ማብራት ፣ የሜትሮኖሚ ሞድ በትንሽ ማሳያ ላይ በ 60 BPM ላይ ይጀምራል እና ፍጥነቱ በ 10 እና በ 240 መካከል ባለው የ rotary knob እንዲስተካከል ያስችለዋል። መንጠቆውን መጫን ወደ ምት ማስተካከያ ሁኔታ ይቀየራል እና አረንጓዴ ኤልኢዲዎች የስብስብ ድብደባውን መዋቅር ያመለክታሉ። የማሽከርከሪያ ቁልፍ የድብደባውን መዋቅር (2/2 ፣ 3/3 ፣ 4/4 ፣ 6/8 ፣ ወዘተ) ይጨምራል ወይም ይቀንሳል። ከ 8 ኤልኢዲዎች በላይ ፣ በሰዓት አቅጣጫ የሚሽከረከር ፣ መሪ አክሰንት ይብራራል ፣ እና የመጀመሪያው ኤልኢዲ ይህንን በቀይ ያሳያል። መሪ ድምፃዊ እንዲሁ የሚሰማ ግብረመልስ ይኖረዋል። በተቃራኒ ሰዓት አቅጣጫ በማሽከርከር ሊጠፋ ይችላል። መንጠቆውን መጫን ከድብ ማስተካከያ ሁነታ ወደ ሜትሮኖም ሁኔታ ይመለሳል።

ደረጃ 2 - ክፍሎች ዝርዝር

ጉዳይ ያስፈልግዎታል። ማንኛውም ቅርፅ ወይም መጠን ሊገዛ ይችላል ፣ ግን ጓደኛችን የተወገደ አንድ አሮጌ የእጅ ቪጂኤ መቀየሪያ ጥሩ ጥቁር የብረት መያዣ ነበረን። የተቀሩት ክፍሎች ከዚህ በታች ተዘርዝረዋል።

  • 9V ባትሪ ፣ 1.50 ዶላር
  • የባትሪ አያያዥ ገመድ ፣ 0 ፣ 16 ዶላር
  • አርዱዲኖ ናኖ ከፒን ራስጌዎች ፣ 2.05 ዶላር
  • ናኖ አይኦ ኤክስቴንሽን ጋሻ ፣ ዶላር 1 ፣ 05
  • አነስተኛ የስላይድ መቀየሪያ ለኃይል ፣ USD 0.15
  • Piezo buzzer ፣ ዶላር 0 ፣ 86
  • Adafruit Neopixel WS2812 8-bit, USD 1, 01
  • OLED ማሳያ 128x64 ፣ ዶላር 1 ፣ 53
  • ሮታሪ ኢንኮደር ፣ 0 ፣ 50 ዶላር
  • የዱፖንት ኬብሎች ኤፍ/ኤፍ ፣ ዶላር 0 ፣ 49

የአካላቱ አጠቃላይ ዋጋ ከ 10 ዶላር በታች ነው ፣ -

ደረጃ 3 የሽቦ ዲያግራም

የሽቦ ዲያግራም
የሽቦ ዲያግራም

ብዙ የ GND እና የ VCC ግንኙነቶችን በማሸሽ እንዳይረብሹ የናኖ አይኦ ኤክስቴንሽን ቦርድ ይጠቀሙ። ለናኖ ፒን ራስጌዎች እና ለኒዮፒክስል ሞዱል ማያያዣዎች አነስተኛ ብየዳ ያስፈልጋል። የዱፖንት ሽቦዎችን መጠቀም በስዕሉ ላይ እንደሚታየው ለተቀረው ሽቦ የተረጋጋ ግንኙነቶችን ይፈቅዳል። የ 9 ቮ ባትሪ ከ GND እና VIN ጋር ተገናኝቷል ፣ ሁለተኛው በሃይል ተንሸራታች ማብሪያ በኩል። የ rotary encoder ሞጁል እንዴት እንደሚገናኙ በቀላሉ ለመረዳት በስዕሉ ውስጥ ለብቻው የሚታየውን የተቀናጀ የመቀየሪያ ቁልፍ አለው። የ Rotary ክፍል (CLK እና DT) በቅደም ተከተል ከፒን 2 እና ከፒን 3 ጋር ተገናኝቷል ፣ ምክንያቱም እነዚህ አያያዝን ማቋረጥ የሚችሉ ብቸኛ የናኖ ፒኖች ናቸው። ሮታሪ GND በእርግጥ ከናኖ GND ፒን ጋር ተገናኝቷል። የተቀናጀ የመቀየሪያ አዝራር ከፒን 4 ጋር ተገናኝቷል። Piezo buzzer ከፒን 5 እና ከ GND ጋር ተገናኝቷል። Adafruit Neopixel ሞዱል ከፒን 7 እና ከቪን እና ከ GND ጋር ከናኖ 5V እና GND ጋር ተገናኝቷል። አነስተኛ የ OLED ማሳያ ከ I2C አውቶቡስ በይነገጽ ጋር ተገናኝቷል ፣ እሱም ለፒኤን A4 እና A5 ለ SDA እና ለ SDL። VCC እና GND በእርግጥ ወደ ናኖ 5V እና GND ይሄዳል። ያ የእኛ ዱፖንት ሽቦን ያጠናቅቃል።

ደረጃ 4: የአርዱዲኖ ምንጭ ኮድ

የአርዱዲኖ ምንጭ ኮድ
የአርዱዲኖ ምንጭ ኮድ

// ሜትሮኖሜም ፣ መሪ አክሰንት ፣ የእይታ እና ተሰሚ ዘዴ - 2019 ፒተር ቹሱጊ

#አካትት #አካት #አካት #አካት #አካትት "TimerOne.h" #ገላጭ SCREEN_WIDTH 128 #ገላጭ SCREEN_HEIGHT 64 #ገላጭ OLED_RESET -1 // ዳግም አስጀምር ፒን #(ወይም -1 የአርዱዲኖ ዳግም ማስጀመሪያ ፒን ማጋራት) Adafruit_SSD1306 ማሳያ (SCREEN_WIDTH ፣ SCREEN_WIDTH ፣ SCREEN_WIDTH ፣ SCREEN_WIDTH ፣ SCREEN_WIDTH ፣ SCREEN_WIDTH ፣ SCREEN_WIDTH ፣ SCREEN & ሽቦ ፣ OLED_RESET); #ዲን ፒን_ኔኦፒክስል 7 #ገላጭ NUMPIXELS 8 #መግለፅ ብሩህ 32 Adafruit_NeoPixel pixels = 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 #ዲፊን ዲ ቲ 3 #ገላጭ ፒን_ስዊች 4 #ገላጭ ፒን_ቡዝ 5 int bpm = 60; int bpmFirst = 0; // መጀመሪያ ላይ በርቷል ፣ በቀሪው ጠፍቷል… int tack = 4; bool leadingTack = ሐሰት; int pos = 0; int curVal = 0; int prevVal = 0; ባዶነት ማዋቀር () {pixels.begin (); pinMode (pin_buzzer ፣ OUTPUT); ሰዓት ቆጣሪ 1. መጀመሪያ (1000000*60/bpm/2); ሰዓት ቆጣሪ 1. pinMode (CLK ፣ INPUT_PULLUP); pinMode (DT ፣ INPUT_PULLUP); pinMode (pin_switch ፣ INPUT_PULLUP); አባሪ ማቋረጫ (digitalPinToInterrupt (CLK) ፣ rotaryCLK ፣ CHANGE); አባሪ ማቋረጫ (digitalPinToInterrupt (DT) ፣ rotaryDT ፣ CHANGE); ከሆነ (! display.begin (SSD1306_SWITCHCAPVCC ፣ 0x3C)) {// አድራሻ 0x3D ለ 128x64 ለ (;;); // አይቀጥሉ ፣ ለዘላለም loop} display.clearDisplay (); display.display (); } ባዶነት loop () {ከሆነ (digitalRead (pin_switch) == LOW) {መዘግየት (100); ሳለ (digitalRead (pin_switch) == LOW); መዘግየት (100); ሰዓት ቆጣሪ 1. መቋረጥ (); ShowGreenTacks (); ሳለ (digitalRead (pin_switch) == HIGH) {ከሆነ (curVal> prevVal) {tack+= 1; ከሆነ (ታክ> 8) {ከሆነ (ledTack) ታክ = 8; ሌላ {leadingTack = true; ታክ = 1; }}} ሌላ ከሆነ (curValprevVal) {bpm+= 2; ከሆነ (bpm> 240) bpm = 240; } ሌላ ከሆነ (curVal = 100) display.print (""); ሌላ display.print (""); display.print (bpm); display.display (); } ባዶነት buzztick () {ከሆነ (bpmFirst == 0) {int volume = 4; ከሆነ (ledTack && pos == 0) ጥራዝ = 8; ለ (int i = 0; i

የሚመከር: