Obsah:

Metronome Arduino: 4 kroky
Metronome Arduino: 4 kroky

Video: Metronome Arduino: 4 kroky

Video: Metronome Arduino: 4 kroky
Video: Метроном на ардуино! #arduino #электроника #метроном 2024, Červenec
Anonim
Image
Image

Když se jako malý učíte nový hudební nástroj, je tu tolik nových věcí, na které se musíte soustředit. Udržet tempo ve správném tempu je jedním z nich. Nenalezení funkčně úplného a pohodlného metronomu znamenalo nejlepší výmluvu, jak začít znovu stavět s mými dětmi. V tomto příspěvku Instructables najdete funkční popis, seznam dílů s odkazy a cenami na internetový obchod, schéma zapojení pro montáž a kompletní zdrojový kód Arduino.

Krok 1: Popis funkce

Seznam dílů
Seznam dílů

Bylo by hezké mít metronomové zařízení s následujícími funkcemi, abyste jej mohli pohodlně používat doma nebo v hudební škole.

  • Kompaktní formát vhodný pro malá místa na hudebních nástrojích nebo vedle nich,
  • Provoz na baterie, robustní a přenosný,
  • Snadno nastavitelné i pro děti, hodnota BPM je vždy zobrazena,
  • Nastavitelné údery za minutu pomocí otočného ovladače, až 240 BPM
  • Zvukový takt s ovládáním hlasitosti,
  • Tichý režim pro nácvik sluchátek přes noc,
  • Vizuální zpětná vazba úderů (1/4, 2/4, 3/3, 4/4, 6/8 atd.) Až 8 LED diod,
  • S nebo bez úvodního přízvuku, s vizuální a zvukovou zpětnou vazbou.

Po zapnutí začne režim metronomu při 60 BPM zobrazeném na malém displeji a nechá se ladit tempo otočným knoflíkem mezi 10 a 240. Neopixely ukazují rytmus v modrých LED diodách, zatímco bzučák tiká. Stisknutím knoflíku se přepnete do režimu nastavení rytmu a zelené LED diody indikují nastavenou strukturu rytmu. Otočný knoflík zvýší nebo sníží strukturu rytmu (2/2, 3/3, 4/4, 6/8 atd.). Nad 8 LED diodami, které se dále otáčejí ve směru hodinových ručiček, se rozsvítí hlavní akcent a první LED dioda to indikuje červeně. Vedoucí přízvuk bude mít také slyšitelnou zpětnou vazbu. Lze jej vypnout otáčením proti směru hodinových ručiček. Stisknutím knoflíku se přepnete zpět z režimu úpravy rytmu do režimu metronomu.

Krok 2: Seznam dílů

Budete potřebovat pouzdro. Lze koupit jakýkoli tvar nebo velikost, ale měli jsme pěkné černé kovové pouzdro starého ručního VGA přepínače zlikvidovaného přítelem. Zbývající části jsou uvedeny níže.

  • 9V baterie, 1,50 USD
  • Kabel konektoru baterie, USD 0, 16
  • Arduino Nano se záhlavími pinů, 2,05 USD
  • Nano IO Extension Shield, USD 1, 05
  • Mini posuvný vypínač pro napájení, 0,15 USD
  • Piezový bzučák, 0,86 USD
  • Adafruit Neopixel WS2812 8bitový, 1 USD, 01
  • OLED displej 128x64, 1 USD, 53
  • Rotační kodér, USD 0, 50
  • Dupont kabely F/F, USD 0, 49

Celková cena komponent je nižší než 10 USD -

Krok 3: Schéma zapojení

Elektrické schéma
Elektrické schéma

Použijte rozšiřující desku Nano IO, abyste se neobtěžovali s pájením více připojení GND a VCC. Minimální pájení bude zapotřebí pro konektory Nano pin a konektory modulu Neopixel. Použití vodičů Dupont umožňuje stabilní připojení zbytku kabeláže podle schématu. 9V baterie je připojena k GND a VIN, ta druhá pomocí přepínače napájení. Modul rotačního kodéru má integrované spínací tlačítko, které je pro snazší pochopení způsobu jejich připojení znázorněno samostatně na schématu. Rotační část (CLK a DT) je připojena k PIN2, respektive PIN3, protože to jsou jediné NANO piny schopné manipulace s přerušením. Rotary GND je samozřejmě připojen k Nano GND PIN. Integrované tlačítko přepínače je připojeno k PIN4. Piezo bzučák je připojen k PIN5 a GND. Modul Adafruit Neopixel je připojen k PIN7 a jeho VIN a GND k 5V a GND Nano. Malý OLED displej je připojen k rozhraní sběrnice I2C, což je PIN A4 a A5 pro SDA a SDL. VCC a GND jde samozřejmě na 5V a GND Nano. Tím naše Dupontova kabeláž končí.

Krok 4: Zdrojový kód Arduino

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

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

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Reset pin #(or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_H & Wire, OLED_RESET); #define pin_neopixel 7 #define NUMPIXELS 8 #define BRIGHTNESS 32 Adafruit_NeoPixel Pixels = 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 nejprve zapnuto, zbytek zhasnuto … int tack = 4; bool vedoucíTack = false; int pos = 0; int curVal = 0; int prevVal = 0; neplatné nastavení () {pixely.begin (); pinMode (pin_buzzer, OUTPUT); Časovač 1. inicializace (10 000 000*60/tep/min/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)) {// Adresa 0x3D pro 128x64 pro (;;); // Nepokračujte, smyčka navždy} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalRead (pin_switch) == LOW); zpoždění (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (chiefTack) tack = 8; else {vedoucíTack = true; lepivost = 1; }}} else if (curValprevVal) {bpm+= 2; if (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 (chiefTack && pos == 0) volume = 8; pro (int i = 0; i

Doporučuje: