Kazalo:

Arduino metronom: 4 koraki
Arduino metronom: 4 koraki

Video: Arduino metronom: 4 koraki

Video: Arduino metronom: 4 koraki
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, November
Anonim
Image
Image

Ko se kot otrok učite novega glasbila, se morate osredotočiti na toliko novih stvari. Ohranjanje pravega tempa je eno izmed njih. Če ne najdem funkcionalno popolnega in priročnega metronoma, je bil to najboljši izgovor, da začnem znova graditi s svojimi otroki. V tej objavi Instructables boste našli funkcionalni opis, seznam delov s povezavami in cenami v spletni trgovini, shemo ožičenja za montažo in popolno izvorno kodo Arduino.

1. korak: Opis funkcije

Seznam delov
Seznam delov

Lepo bi bilo imeti metronomsko napravo z naslednjimi funkcijami, ki bi jo lahko udobno uporabljali doma ali v glasbeni šoli.

  • Kompaktna oblika, ki se prilega majhnim mestom na vrhu ali poleg glasbil,
  • Na baterije, robustno in prenosno za prenašanje,
  • Enostavno nastavitev tudi za otroke, vrednost BPM je vedno prikazana,
  • Nastavljivi utripi na minuto z vrtljivim gumbom, do 240 BPM
  • Zvočni takt z nastavitvijo glasnosti,
  • Tihi način za nočno vadbo slušalk,
  • Vizualne povratne informacije o utripih (1/4, 2/4, 3/3, 4/4, 6/8 itd.) Do 8 LED,
  • Z ali brez vodilnega naglasa, z vizualnimi in zvočnimi povratnimi informacijami.

Ob vklopu se bo metronomski način začel prikazovati pri 60 utripih na minuto in se bo prikazoval na majhnem prikazovalniku in omogočal nastavitev tečaja z vrtljivim gumbom med 10 in 240. Neopiksli prikazujejo utrip v modrih LED diodah, medtem ko se oglasi zvočni signal. S pritiskom na gumb se preklopi v način prilagajanja utripov, zelene LED diode pa bodo pokazale nastavljeno strukturo utripov. Vrtljivi gumb bo povečal ali zmanjšal strukturo utripov (2/2, 3/3, 4/4, 6/8 itd.). Nad 8 LED, ki se še naprej vrtijo v smeri urinega kazalca, bo vklopljen vodilni naglas, prva LED bo to označila z rdečo barvo. Vodilni naglas bo imel tudi zvočne povratne informacije. Izklopite ga lahko z vrtenjem v nasprotni smeri urinega kazalca. S pritiskom gumba se preklopite iz načina prilagajanja utripa v način metronoma.

2. korak: Seznam delov

Potrebovali boste etui. Vse oblike in velikosti je mogoče kupiti, vendar smo imeli prijazno črno kovinsko ohišje starega ročnega stikala VGA. Ostali deli so navedeni spodaj.

  • 9V baterija, 1,50 USD
  • Priključni kabel akumulatorja, 0, 16 USD
  • Arduino Nano z zatiči, 2,05 USD
  • Podaljšek Nano IO, 1 USD, 05 USD
  • Mini drsno stikalo za napajanje, 0,15 USD
  • Zvočni signal Piezo, 0, 86 USD
  • Adafruit Neopixel WS2812 8-bit, 1 USD, 01 USD
  • Zaslon OLED 128x64, 1 USD, 53 USD
  • Rotacijski dajalnik, 0, 50 USD
  • Dupont kabli F/F, 0, 49 USD

Skupna cena komponent je manjša od 10 USD, -

3. korak: Shema ožičenja

Žični diagram
Žični diagram

Uporabite razširitveno ploščo Nano IO, da ne motite spajkanja več povezav GND in VCC. Minimalno spajkanje bo potrebno za glave Nano pin in za priključke modula Neopixel. Uporaba žic Dupont omogoča stabilne povezave za preostanek ožičenja, kot je prikazano na diagramu. 9V baterija je priključena na GND in VIN, slednja prek stikala za napajanje. Modul vrtljivega dajalnika ima vgrajeno stikalno tipko, ki je prikazana ločeno na diagramu za lažje razumevanje, kako jih povezati. Vrtljivi del (CLK in DT) je priključen na PIN2 oziroma PIN3, ker sta to edina zatiča NANO, ki zmoreta prekinitev. Rotacijski GND je seveda povezan z Nanovo GND PIN. Integriran stikalni gumb je priključen na PIN4. Piezo zvočni signal je priključen na PIN5 in GND. Modul Adapruit Neopixel je priključen na PIN7, njegov VIN in GND pa na Nano 5V oziroma GND. Majhen zaslon OLED je povezan z vmesnikom vodila I2C, ki je PIN A4 in A5 za SDA in SDL. VCC in GND gresta seveda pri Nanovih 5V in GND. S tem se naše ožičenje Dupont zaključi.

4. korak: Arduino izvorna koda

Izvorna koda Arduino
Izvorna koda Arduino

// Metronom, vodilni naglas, vizualna in zvočna takta - 2019 Peter Csurgay

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Ponastavi pin #(ali -1, če delite pin za ponastavitev Arduino) Adafruit_SSD1306 zaslon (SCREEN_WID, SCREEN_W, & Wire, OLED_RESET); #define pin_neopixel 7 #define NUMPIXELS 8 #define BRIGHTNESS 32 Adafruit_NeoPixel slikovnih pik = 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 najprej vklopljena, preostala izklopljena … 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), rotacijskiCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotacijskiDT, CHANGE); if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C)) {// Naslov 0x3D za 128x64 za (;;); // Ne nadaljuj, zanko za vedno} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalno branje (pin_switch) == NIZKO); zamuda (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (leadTack) tack = 8; else {vodilniTack = res; tack = 1; }}} else if (curValprevVal) {bpm+= 2; če (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) obseg = 8; za (int i = 0; i

Priporočena: