Мазмуну:

Arduino Metronome: 4 кадам
Arduino Metronome: 4 кадам

Video: Arduino Metronome: 4 кадам

Video: Arduino Metronome: 4 кадам
Video: Метроном на Arduino 2024, Ноябрь
Anonim
Image
Image

Кичинекей кезиңизде жаңы музыкалык аспапты үйрөнүп жатканда, көңүл бурууга көптөгөн жаңы нерселер бар. Туура темпте жүрүү - алардын бири. Функционалдык жактан толук жана ыңгайлуу метрономду таппоо менин балдарым менен кайра курууну баштоо үчүн эң жакшы шылтоо болчу. Бул Instructables постунда сиз функционалдык сүрөттөмөнү, веб -дүкөндүн шилтемелери жана баалары бар бөлүктөрдүн тизмесин, монтаждоо үчүн зымдардын схемасын жана Arduino толук кодун таба аласыз.

1 -кадам: Функционалдык сүрөттөмө

Бөлүктөр тизмеси
Бөлүктөр тизмеси

Үйдө же музыкалык мектепте ыңгайлуу колдонуу үчүн төмөнкү функциялары бар метрономдук аппараттын болушу жакшы болмок.

  • Компакт форма фактору музыкалык аспаптардын үстүндөгү же жанындагы кичинекей жерлерге туура келет,
  • Батарея иштейт, бекем жана портативдүү,
  • Балдар үчүн да оңой орнотулган, BPM мааниси дайыма көрсөтүлөт,
  • Ротари баскычы менен мүнөтүнө жөнгө салынуучу сокку, 240 BPMге чейин
  • Үндү көзөмөлдөө менен уккулуктуу такт,
  • Түнкү гарнитура үчүн үнсүз режим,
  • 8 диодго чейин уруунун визуалдык кайтарымы (1/4, 2/4, 3/3, 4/4, 6/8 ж. Б.),
  • Жетектөөчү акцент менен же ансыз, визуалдык жана угулуучу кайтарым байланыш менен.

Күйгүзүүдө метроном режими кичинекей дисплейде 60 BPMде башталып, темпти 10дон 240ка чейин айлануучу баскыч менен жөнгө салууга мүмкүндүк берет. Баскычты басуу жөндөө режимине өтөт жана жашыл диоддор коюлган структураны көрсөтөт. Ротари баскычы структураны көбөйтөт же азайтат (2/2, 3/3, 4/4, 6/8 ж. Б.). 8 светодиоддун үстүндө, сааттын жебеси боюнча ары -бери бурулуп, алдыңкы акцент күйгүзүлөт жана биринчи LED муну кызыл менен көрсөтөт. Жетектөөчү акцент уккулуктуу пикирге ээ болот. Аны сааттын жебесине каршы буруп өчүрсө болот. Баскычты басуу ыргакты жөнгө салуу режиминен метроном режимине кайра которулат.

2 -кадам: Бөлүктөрдүн тизмеси

Сизге иш керек болот. Каалаган форманы же өлчөмдү сатып алса болот, бирок бизде досубуздун колунан жасалган VGAнын эски кол менен алмаштырылган жакшы кара металл корпусу бар болчу. Калган бөлүктөрү төмөндө келтирилген.

  • 9V батарея, USD 1.50
  • Батареяны туташтыруучу кабель, USD 0, 16
  • Пин баштары бар Arduino Nano, USD 2.05
  • Nano IO Extension Shield, USD 1, 05
  • Бийлик үчүн мини слайд которгуч, 0.15 АКШ доллары
  • Пьезо үнү, USD 0, 86
  • Adafruit Neopixel WS2812 8-бит, USD 1, 01
  • OLED дисплей 128x64, USD 1, 53
  • Ротари коддоочу, USD 0, 50
  • Dupont кабелдери F/F, USD 0, 49

Компоненттердин жалпы баасы 10 доллардан төмөн, -

3 -кадам: Электр схемасы

Кабелдик диаграмма
Кабелдик диаграмма

Бир нече GND жана VCC туташтыруу менен убара болбош үчүн Nano IO кеңейтүү тактасын колдонуңуз. Минималдуу ширетүү Nano пин баштары жана Neopixel модулу бириктиргичтери үчүн керек болот. Dupont зымдарын колдонуу диаграммада көрсөтүлгөндөй зымдардын калган бөлүктөрүнө туруктуу туташууга мүмкүндүк берет. 9V батарейкасы GND жана VINге туташтырылган, экинчиси электр слайдери аркылуу. Ротари коддоочу модулда аларды туташтырууну түшүнүү үчүн диаграммада өзүнчө көрсөтүлгөн интегралдык которуу баскычы бар. Ротари бөлүгү (CLK жана DT) тиешелүүлүгүнө жараша PIN2 жана PIN3 менен туташат, анткени булар үзгүлтүккө учуроо жөндөмүнө ээ болгон жалгыз NANO пинтери. Rotary GND, албетте, Нанонун GND PIN -ге туташкан. Интегралдык которуу баскычы PIN4ке туташкан. Piezo ызылчасы PIN5 жана GND менен туташкан. Adafruit Neopixel модулу PIN7ге жана анын VIN жана GND -ге тиешелүү түрдө Нанонун 5V жана GND -ге туташкан. Чакан OLED дисплей SD2 жана SDL үчүн PIN A4 жана A5 болгон I2C автобус интерфейсине туташкан. VCC жана GND, албетте, Нанонун 5V жана GNDге өтөт. Бул биздин Дюпонт зымдарыбызды аяктады.

4 -кадам: Arduino Source Code

Arduino Source Code
Arduino Source Code

// Metronome, Жетектөөчү Акцент, Көрүү жана Уккулуктуу Такт - 2019 Питер Цургай

#кошуу #кошуу #кошуу #кошуу #кошуу "TimerOne.h" #SCREEN_WIDTH 128ти аныктоо #SCREEN_HEIGHT 64 #аныктоо OLED_RESET -1 // PIN кодду калыбына келтирүү #(же -1 эгер Arduino баштапкы абалга келтирүүчү болсо) Adafruit_SSD130W дисплей, SCREEN_SERE_ & Wire, OLED_RESET); #pin_neopixel 7ди аныктоо #NUMPIXELSти аныктоо 8 #BRIGHTNESSти аныктоо 32 Adafruit_NeoPixel пиксель = Adafruit_NeoPixel (NUMPIXELS, pin_neopixel, NEO_GRH + NEO_KHZ800); #аныктоо IDLE_11 0 #аныктоо SCLK_01 1 #define SCLK_00 2 #define SCLK_10 3 #define SDT_10 4 #define SDT_00 5 #deffine SDT_01 6 int state = IDLE_11; #define CLK 2 #define DT 3 #define pin_switch 4 #deinine pin_buzzer 5 int bpm = 60; int bpmFirst = 0; // LED адегенде күйүк, калганда өчүк… int tack = 4; bool leadTack = false; int pos = 0; int curVal = 0; int prevVal = 0; жараксыз орнотуу () {piksel.begin (); pinMode (pin_buzzer, OUTPUT); Timer1.initialize (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); if (! 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 (leadTack) tack = 8; else {leadTack = true; tack = 1; }}} else if (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 volume = 4; if (liderTack && pos == 0) көлөм = 8; үчүн (int i = 0; i

Сунушталууда: