Sadržaj:

Arduino metronom: 4 koraka
Arduino metronom: 4 koraka

Video: Arduino metronom: 4 koraka

Video: Arduino metronom: 4 koraka
Video: Метроном на ардуино! #arduino #электроника #метроном 2024, Studeni
Anonim
Image
Image

Kad u djetinjstvu učite novi glazbeni instrument, ima toliko novih stvari na koje se morate usredotočiti. Održavanje odgovarajućeg tempa jedan je od njih. Ne pronalaženje funkcionalno dovršenog i prikladnog metronoma značilo je najbolji izgovor da ponovno počnem graditi sa svojom djecom. U ovom postu o Instructables pronaći ćete funkcionalni opis, popis dijelova s vezama i cijenama na web trgovini, dijagram ožičenja za montažu i potpuni izvorni kod Arduina.

Korak 1: Opis funkcije

Popis dijelova
Popis dijelova

Bilo bi lijepo imati metronomski uređaj sa sljedećim funkcijama za prikladno korištenje kod kuće ili u glazbenoj školi.

  • Kompaktni faktor oblika za postavljanje malih mjesta na vrhu ili pored glazbenih instrumenata,
  • Na baterije, robustan i prenosiv za nošenje,
  • Jednostavno postavljanje čak i za djecu, BPM vrijednost uvijek prikazana,
  • Podesivi otkucaji u minuti s rotacijskim gumbom, do 240 otkucaja u minuti
  • Zvučni takt s kontrolom glasnoće,
  • Tihi način rada za slušanje slušalica preko noći,
  • Vizualna povratna informacija o otkucajima (1/4, 2/4, 3/3, 4/4, 6/8 itd.) Do 8 LED dioda,
  • Sa ili bez vodećeg naglaska, s vizualnim i zvučnim povratnim informacijama.

Uključivanjem, način rada metronoma počet će pri 60 BPM koji će se prikazivati na malom zaslonu i dopustiti da se tempo podešava okretnim gumbom između 10 i 240. Neopikseli prikazuju otkucaje u plavim LED diodama dok zujalica otkucava. Pritiskom na gumb prebacit ćete se u način podešavanja otkucaja, a zelene LED diode pokazat će postavljenu strukturu otkucaja. Okretni gumb će povećati ili smanjiti strukturu otkucaja (2/2, 3/3, 4/4, 6/8 itd.). Iznad 8 LED dioda, koje se dalje okreću u smjeru kazaljke na satu, bit će uključen vodeći naglasak, a prva LED dioda to će označiti crvenom bojom. Vodeći naglasak imat će i zvučne povratne informacije. Može se isključiti okretanjem u smjeru suprotnom od kazaljke na satu. Pritiskom na tipku vratit ćete se iz načina podešavanja ritma u način metronoma.

Korak 2: Popis dijelova

Trebat će vam futrola. Bilo koji oblik ili veličina se mogu kupiti, ali imali smo lijepo crno metalno kućište starog ručnog VGA prekidača kojega je odložio prijatelj. Ostali dijelovi navedeni su u nastavku.

  • 9V baterija, 1,50 USD
  • Kabel za priključak baterije, 0, 16 USD
  • Arduino Nano sa pin zaglavljima, 2,05 USD
  • Nano IO produžni štit, 1 USD, 05 USD
  • Mini klizni prekidač za napajanje, 0,15 USD
  • Piezo zujalica, 0, 86 USD
  • Adafruit Neopixel WS2812 8-bitni, 1 USD, 01
  • OLED zaslon 128x64, USD 1, 53
  • Rotacijski koder, 0, 50 USD
  • Dupont kabeli F/F, USD 0, 49

Ukupna cijena komponenti je manja od 10 USD, -

Korak 3: Shema ožičenja

Shema ožičenja
Shema ožičenja

Koristite Nano IO produžnu ploču kako ne biste smetali lemljenju više GND i VCC veza. Minimalno lemljenje bit će potrebno za zaglavlja Nano pinova i za priključke modula Neopixel. Korištenje Dupont žica omogućuje stabilne veze za ostatak ožičenja kako je prikazano na dijagramu. 9V baterija spojena je na GND i VIN, potonji preko klizača za napajanje. Modul okretnog davača ima integrirani prekidač, koji je prikazan posebno na dijagramu radi lakšeg razumijevanja načina povezivanja. Okretni dio (CLK i DT) spojen je na PIN2 i PIN3, jer su to jedini NANO pinovi koji mogu rukovati prekidima. Rotacijski GND je naravno povezan s Nano -ovim GND PIN -om. Integrirani prekidač povezan je s PIN4. Piezo zujalica je spojena na PIN5 i GND. Adapruit Neopixel modul spojen je na PIN7, a njegov VIN i GND na Nano 5V odnosno GND. Mali OLED zaslon spojen je na sučelje sabirnice I2C, što je PIN A4 i A5 za SDA i SDL. VCC i GND idu na Nano 5V i GND naravno. Time završavamo naše ožičenje Dupont.

Korak 4: Arduino izvorni kod

Arduino izvorni kod
Arduino izvorni kod

// Metronom, vodeći naglasak, vizualna i zvučna takta - 2019. Peter Csurgay

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Resetiraj pin #(ili -1 ako dijelite Arduino reset pin) Adafruit_SSD1306 zaslon (SCREEN_ID, SCREEN_ID, SCREEN_ID & Wire, OLED_RESET); #define pin_neopixel 7 #define NUMPIXELS 8 #define BRIGHTNESS 32 Adafruit_NeoPixel piksela = 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 svijetli na početku, isključuje na ostatku… int tack = 4; bool leadTack = false; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pikseli.begin (); pinMode (pin_buzzer, OUTPUT); Timer1.inicialize (1000000*60/bpm/2); Timer1.attachInterrupt (buzztick); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); pinMode (pin_switch, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (CLK), rotacijskiCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C)) {// Adresa 0x3D za 128x64 za (;;); // Ne nastavljajte, petljajte zauvijek} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalno čitanje (pin_switch) == LOW); kašnjenje (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; ako (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 (vodećiTack && pos == 0) volumen = 8; za (int i = 0; i

Preporučeni: