Sisukord:

Arduino metronoom: 4 sammu
Arduino metronoom: 4 sammu

Video: Arduino metronoom: 4 sammu

Video: Arduino metronoom: 4 sammu
Video: Набор Ардуино для начинающих 📟 с Алиэкспресс. Обзор набора модулей Arduino Unoдля обучения 2024, Juuli
Anonim
Image
Image

Lapsena uut muusikariista õppides tuleb keskenduda nii paljudele uutele asjadele. Õige tempoga tempo hoidmine on üks neist. Funktsionaalselt täieliku ja mugava metronoomi leidmata jätmine tähendas parimat vabandust oma lastega uuesti ehitama hakata. Sellest juhiste postitusest leiate funktsionaalse kirjelduse, osade loendi veebipoe linkide ja hindadega, kokkupaneku ühendusskeemi ja täieliku Arduino lähtekoodi.

1. samm: funktsionaalne kirjeldus

Osade nimekiri
Osade nimekiri

Oleks tore, kui oleks kodus või muusikakoolis mugav kasutada järgmiste funktsioonidega metronoomiseadet.

  • Kompaktne vorm, mis sobib muusikariistade peale või kõrvale väikestesse kohtadesse,
  • Patareitoitega, vastupidav ja kaasaskantav kaasaskandmiseks,
  • Lihtne seadistada isegi lastele, BPM väärtus kuvatakse alati
  • Pöördnupuga reguleeritav löök minutis, kuni 240 lööki minutis
  • Kuuldav takistus helitugevuse reguleerimisega,
  • Vaikne režiim kõrvaklappide üleöö harjutamiseks,
  • Visuaalne tagasiside löökidele (1/4, 2/4, 3/3, 4/4, 6/8 jne) kuni 8 LED -i,
  • Juhtiva aktsendiga või ilma, visuaalse ja kuuldava tagasisidega.

Sisselülitamisel algab metronoomirežiim kiirusel 60 lööki minutis, mis kuvatakse väikesel ekraanil ja võimaldab kiirust reguleerida pöördnupuga vahemikus 10 kuni 240. Neopikslid näitavad lööki sinistes LED -ides, samal ajal kui sumin tiksub. Nupule vajutamine lülitub löögi reguleerimise režiimi ja rohelised LED -id näitavad valitud löögistruktuuri. Pöördnupp suurendab või vähendab löögistruktuuri (2/2, 3/3, 4/4, 6/8 jne). Üle 8 LED -i, mis pöörlevad edasi päripäeva, lülitatakse esile rõhk ja esimene LED näitab seda punaselt. Juhtiv aktsent saab ka kuuldavat tagasisidet. Selle saab välja lülitada, keerates vastupäeva. Nupule vajutamine lülitub löögi reguleerimise režiimist tagasi metronoomi režiimi.

Samm: osade loend

Teil on vaja juhtumit. Igasugust kuju või suurust saab osta, kuid meil oli sõbra käest lastud kena musta metallkorpusega vana käsitsi VGA -lüliti. Ülejäänud osad on loetletud allpool.

  • 9 V aku, 1,50 USD
  • Aku pistiku kaabel, USD 0, 16
  • Arduino Nano tihvtipäistega, 2,05 USD
  • Nano IO pikenduskilp, USD 1, 05
  • Miniliuglüliti toiteks, 0,15 USD
  • Pietsosummer, 0 USD, 86 USD
  • Adafruit Neopixel WS2812 8-bitine, USD 1, 01
  • OLED -ekraan 128x64, USD 1, 53
  • Pöörlev kodeerija, 0 USD, 50 USD
  • Duponti kaablid F/F, USD 0, 49

Komponentide kogumaksumus on alla 10 USD,

Samm: ühendusskeem

Juhtmestiku skeem
Juhtmestiku skeem

Kasutage Nano IO pikendusplaati, et mitte vaevata mitme GND- ja VCC -ühenduse jootmist. Nano -pin -päiste ja Neopixeli mooduli pistikute jaoks on vaja minimaalset jootmist. Duponti juhtmete kasutamine võimaldab ülejäänud juhtmestiku jaoks stabiilseid ühendusi, nagu on näidatud skeemil. 9 V aku on ühendatud GND ja VIN -ga, viimane on toitelüliti kaudu. Pöörleval kodeerimismoodulil on integreeritud lülitusnupp, mis on diagrammil eraldi näidatud, et hõlbustada nende ühendamist. Pöörlev osa (CLK ja DT) on ühendatud vastavalt PIN2 ja PIN3 -ga, sest need on ainsad NANO -tihvtid, mis on võimelised katkestama. Rotary GND on loomulikult ühendatud Nano GND PIN -koodiga. Integreeritud lülitusnupp on ühendatud PIN4 -ga. Pietsosummer on ühendatud PIN5 ja GND -ga. Adafruit Neopixeli moodul on ühendatud PIN7 -ga ning selle VIN ja GND vastavalt Nano 5V ja GND -ga. Väike OLED -ekraan on ühendatud I2C siiniliidesega, mis on PIN A4 ja A5 SDA ja SDL jaoks. VCC ja GND lähevad muidugi Nano 5V ja GND juurde. See lõpetab meie Duponti juhtmestiku.

Samm: Arduino lähtekood

Arduino lähtekood
Arduino lähtekood

// Metronoom, juhtiv aktsent, visuaalne ja kuuldav 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 #(või -1, kui jagate Arduino reset pin) Adafruit_SSD1306 ekraan (SCREEN_WIDH, & 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 bpmEsimene = 0; // LED põleb algul, ülejäänud ajal väljas … int tack = 4; bool leadTack = vale; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Taimer1.initsialiseerida (1000000*60/bpm/2); Taimer1.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)) {// Aadress 0x3D 128x64 jaoks (;;); // Ärge jätkake, jätkake igavesti} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalRead (pin_switch) == LOW); viivitus (100); Taimer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (leadTack) tack = 8; else {leadTack = true; takistus = 1; }}} muu kui (curValprevVal) {bpm+= 2; kui (bpm> 240) bpm = 240; } else if (curVal = 100) display.print (""); else display.print (""); display.print (bpm); display.display (); } void buzztick () {if (bpmFirst == 0) {int maht = 4; if (leadTack && pos == 0) maht = 8; jaoks (int i = 0; i

Soovitan: