Obsah:

Metronóm Arduino: 4 kroky
Metronóm Arduino: 4 kroky

Video: Metronóm Arduino: 4 kroky

Video: Metronóm Arduino: 4 kroky
Video: Метроном на ардуино! #arduino #электроника #метроном 2024, November
Anonim
Image
Image

Keď sa v detstve učíte nový hudobný nástroj, je tu množstvo nových vecí, na ktoré sa musíte sústrediť. Udržať tempo v správnom tempe je jedným z nich. Nenachádzanie funkčne úplného a pohodlného metronómu znamenalo najlepšiu výhovorku, ako začať znova stavať s mojimi deťmi. V tomto príspevku s pokynmi nájdete funkčný popis, zoznam dielov s odkazmi a cenami na internetový obchod, schému zapojenia pre montáž a kompletný zdrojový kód Arduino.

Krok 1: Popis funkcie

Zoznam položiek
Zoznam položiek

Bolo by pekné mať metronómové zariadenie s nasledujúcimi funkciami na pohodlné používanie doma alebo v hudobnej škole.

  • Kompaktný tvar, ktorý sa zmestí na malé miesta na vrch alebo vedľa hudobných nástrojov,
  • Batériový, robustný a prenosný na prenášanie,
  • Ľahko nastaviteľné aj pre deti, hodnota BPM sa vždy zobrazuje,
  • Nastaviteľné údery za minútu pomocou otočného gombíka, až 240 BPM
  • Počuteľný takt s ovládaním hlasitosti,
  • Tichý režim pre nácvik slúchadiel cez noc,
  • Vizuálna spätná väzba úderov (1/4, 2/4, 3/3, 4/4, 6/8 atď.) Až 8 LED diód,
  • S alebo bez úvodného prízvuku, s vizuálnou a zvukovou spätnou väzbou.

Po zapnutí sa metronómový režim spustí pri 60 BPM, ktoré sa zobrazia na malom displeji, a necháte tempo ladiť otočným gombíkom v rozmedzí 10 až 240. Neopixely ukazujú tlkot modrých LED diód, zatiaľ čo bzučiak tiká. Stlačením gombíka sa prepnete do režimu nastavenia rytmu a zelené LED diódy budú indikovať nastavenú štruktúru rytmu. Otočný gombík zvýši alebo zníži štruktúru rytmu (2/2, 3/3, 4/4, 6/8 atď.). Nad 8 LED diódami, ktoré sa budú ďalej otáčať v smere hodinových ručičiek, sa rozsvieti hlavný dôraz a prvá dióda LED to indikuje červenou farbou. Vedúci prízvuk bude mať tiež zvukovú spätnú väzbu. Dá sa vypnúť otáčaním proti smeru hodinových ručičiek. Stlačením gombíka sa prepnete z režimu úpravy rytmu do režimu metronómu.

Krok 2: Zoznam dielov

Budete potrebovať prípad. Dá sa kúpiť akýkoľvek tvar alebo veľkosť, ale mali sme pekné čierne kovové puzdro starého ručného prepínača VGA, ktoré sme zlikvidovali priateľovi. Ostatné diely sú uvedené nižšie.

  • 9V batéria, 1,50 USD
  • Kábel konektora batérie, 0, 16 USD
  • Arduino Nano s kolíkovými hlavičkami, 2,05 USD
  • Predlžovací štít Nano IO, 1, 05 USD
  • Mini posuvný vypínač pre napájanie, 0,15 USD
  • Piezoelektrický bzučiak, 0,86 USD
  • Adafruit Neopixel WS2812 8-bit, 1 USD, 01
  • OLED displej 128 x 64 USD, 1, 53 USD
  • Rotačný snímač, 0,50 USD
  • Káble Dupont F/F, 0, 49 USD

Celková cena komponentov je nižšia ako 10 USD -

Krok 3: Schéma zapojenia

Elektrické schéma
Elektrické schéma

Použite rozširujúcu dosku Nano IO, aby ste sa neobťažovali s spájkovaním viacerých spojení GND a VCC. Minimálne spájkovanie bude potrebné pre konektory Nano pin a pre konektory modulu Neopixel. Použitie drôtov Dupont umožňuje stabilné pripojenia k zvyšku vedenia podľa schémy. 9V batéria je pripojená k GND a VIN, posledne menovaným pomocou prepínača napájania. Modul rotačného snímača má integrované tlačidlo prepínača, ktoré je na schéme znázornené samostatne, aby sa lepšie porozumelo tomu, ako ich pripojiť. Rotačná časť (CLK a DT) je pripojená k PIN2, respektíve PIN3, pretože sú to jediné piny NANO schopné manipulácie s prerušením. Rotačný GND je samozrejme spojený s PINom GND Nano. Integrované prepínacie tlačidlo je pripojené k PIN4. Piezo bzučiak je pripojený k PIN5 a GND. Modul Adafruit Neopixel je pripojený k PIN7 a jeho VIN a GND k 5V a GND Nano. Malý OLED displej je pripojený k rozhraniu I2C zbernice, ktoré je PIN A4 a A5 pre SDA a SDL. VCC a GND ide samozrejme na 5V a GND Nano. Tým sa končí naše zapojenie Dupont.

Krok 4: Zdrojový kód Arduino

Zdrojový kód Arduino
Zdrojový kód Arduino

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

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Reset pin #(alebo -1 if sharing Arduino reset pin) Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HE & Wire, OLED_RESET); #define pin_neopixel 7 #define NUMPIXELS 8 #define BRIGHTNESS 32 Adafruit_NeoPixel pixelov = Adafruit_NeoPixel (NUMPIXELS, pin_neopixel, NEO_GRB + NEO_KHZ800); #define IDLE_11 0 #define SCLK_01 1 #define SCLK_00 2 #define SCLK_10 3 #define SDT_10 4 #define SDT_00 5 #define SDT_01 6 int state = IDLE_11; #define CLK 2 #define DT 3 #define pin_switch 4 #define pin_buzzer 5 int bpm = 60; int bpmFirst = 0; // LED najskôr, zapnuté vo zvyšku … int tack = 4; bool vedúciTack = nepravda; int pos = 0; int curVal = 0; int prevVal = 0; neplatné nastavenie () {pixely.begin (); pinMode (pin_buzzer, OUTPUT); Časovač 1. inicializácia (10 000 000*60/tep/min/2); Timer1.attachInterrupt (buzztick); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); pinMode (prepínač pin_, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C)) {// Adresa 0x3D pre 128x64 pre (;;); // Nepokračujte, navždy zacyklite} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalRead (pin_switch) == LOW); oneskorenie (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (chiefTack) tack = 8; else {vedúciTack = true; lepivosť = 1; }}} else if (curValprevVal) {bpm+= 2; ak (tep / min> 240) tep / min = 240; } else if (curVal = 100) display.print (""); else display.print (""); display.print (bpm); display.display (); } neplatný buzztick () {if (bpmFirst == 0) {int volume = 4; if (chiefTack && pos == 0) volume = 8; pre (int i = 0; i

Odporúča: