Sadržaj:

Arduino metronom: 4 koraka
Arduino metronom: 4 koraka

Video: Arduino metronom: 4 koraka

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

Kad u djetinjstvu učite novi muzički 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 ponovo počnem graditi sa svojom djecom. U ovom postu o Instructables pronaći ćete funkcionalni opis, popis dijelova s vezama i cijenama na web stranici, dijagram ožičenja za sastavljanje i potpuni izvorni kod Arduina.

Korak 1: Funkcionalni opis

Lista delova
Lista delova

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

  • Kompaktan faktor veličine za postavljanje malih mjesta na vrhu ili pored muzičkih instrumenata,
  • Na baterije, robustan i prenosiv za nošenje,
  • Lako se postavlja čak i za djecu, uvijek se prikazuje BPM vrijednost,
  • Podesivi otkucaji u minuti s okretnim gumbom, do 240 otkucaja u minuti
  • Zvučni takt sa kontrolom jačine zvuka,
  • Tihi način rada za slušanje slušalica preko noći,
  • Vizuelna 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 otkucaja u minuti koji će se prikazivati na malom ekranu i omogućiti da se tempo podešava pomoću okretnog dugmeta između 10 i 240. Neopikseli prikazuju otkucaje u plavim LED diodama dok zujalica otkucava. Pritiskom na dugme preći ćete u način podešavanja otkucaja, a zelene LED diode će pokazati 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, vodeći naglasak će biti uključen, 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 rotiranjem u smjeru kazaljke na satu. Pritiskom na dugme preći ćete iz načina podešavanja otkucaja u način rada metronoma.

Korak 2: Lista 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 koje je odložio prijatelj. Ostali dijelovi navedeni su u nastavku.

  • 9V baterija, 1,50 USD
  • Kabel konektora baterije, USD 0, 16
  • Arduino Nano sa pin zaglavljima, 2,05 USD
  • Nano IO produžni štit, 1 USD, 05
  • Mini klizni prekidač za napajanje, 0,15 USD
  • Piezo zujalica, USD 0, 86
  • Adafruit Neopixel WS2812 8-bitni, USD 1, 01
  • OLED ekran 128x64, USD 1, 53
  • Rotacijski davač, USD 0, 50
  • 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 je spojena na GND i VIN, potonji preko klizača za napajanje. Modul okretnog davača ima integrirano dugme za prebacivanje, koje je prikazano zasebno 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. Integrisani prekidač je povezan sa PIN4. Piezo zujalica je povezana na PIN5 i GND. Adapruit Neopixel modul spojen je na PIN7, a njegov VIN i GND na Nano 5V i GND. Mali OLED ekran povezan je sa interfejsom sabirnice I2C, koji je PIN A4 i A5 za SDA i SDL. VCC i GND idu naravno na Nano 5V i GND. 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 // Reset pin #(or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display (SCREEN_ID, SCREEN_ID, 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 uključen u početku, isključen u ostatku… int tack = 4; bool leadTack = false; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pixels.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), rotaryCLK, 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 {leadingTack = true; tack = 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 (vodećiTack && pos == 0) volumen = 8; za (int i = 0; i

Preporučuje se: