Përmbajtje:

Arduino Metronome: 4 hapa
Arduino Metronome: 4 hapa

Video: Arduino Metronome: 4 hapa

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

Kur mësoni një instrument të ri muzikor si fëmijë, ka kaq shumë gjëra të reja për t'u përqëndruar. Mbajtja e ritmit në ritmin e duhur është një prej tyre. Mos gjetja e një metronome funksionalisht të plotë dhe të përshtatshëm nënkuptonte justifikimin më të mirë për të filluar ndërtimin përsëri me fëmijët e mi. Në këtë postim të Instructables do të gjeni përshkrimin funksional, listën e pjesëve me lidhjet dhe çmimet e uebshopit, diagramin e instalimeve elektrike për montim dhe kodin e plotë Arduino.

Hapi 1: Përshkrimi Funksional

Lista e Pjesëve
Lista e Pjesëve

Do të ishte mirë të kishit një pajisje metronome me funksionet e mëposhtme për ta përdorur atë në shtëpi ose në shkollën e muzikës në mënyrë të përshtatshme.

  • Faktori kompakt i formës për t'iu përshtatur vendeve të vogla sipër ose pranë instrumenteve muzikore,
  • Punon me bateri, e fortë dhe e lëvizshme për tu transportuar,
  • Konfigurohet lehtë edhe për fëmijët, vlera BPM shfaqet gjithmonë,
  • Rrahje të rregullueshme në minutë me një çelës rrotullues, deri në 240 BPM
  • Takt i dëgjueshëm me kontrollin e volumit,
  • Mënyra e heshtur për praktikën e kufjeve gjatë natës,
  • Reagimi vizual i rrahjeve (1/4, 2/4, 3/3, 4/4, 6/8, etj.) Deri në 8 LED,
  • Me ose pa theks kryesor, me reagime vizuale dhe të dëgjueshme.

Duke u ndezur, modaliteti metronome do të fillojë në 60 BPM duke u shfaqur në ekranin e vogël dhe duke lejuar që ritmi të akordohet nga çelësi rrotullues midis 10 dhe 240. Neopixelët tregojnë rrahjen në LED -të blu, ndërsa zilja bie. Shtypja e butonit do të kalojë në modalitetin e rregullimit të rrahjeve dhe LED -të e gjelbër do të tregojnë strukturën e vendosur të rrahjes. Doreza rrotulluese do të rrisë ose zvogëlojë strukturën e rrahjes (2/2, 3/3, 4/4, 6/8, etj.). Mbi 8 LED, që rrotullohen më tej në drejtim të akrepave të orës, theksi kryesor do të ndizet, dhe LED e parë do ta tregojë këtë me të kuqe. Theksi kryesor do të ketë gjithashtu reagime të dëgjueshme. Mund të fiket duke u rrotulluar në drejtim të kundërt të akrepave të orës. Shtypja e butonit do të kthehet nga modaliteti i rregullimit të rrahjes në modalitetin metronome.

Hapi 2: Lista e Pjesëve

Do t'ju duhet një rast. Çdo formë ose madhësi mund të blihet, por ne kishim një kuti metalike të zezë të bukur të një çelësi të vjetër manual VGA të hedhur nga një mik. Pjesët e tjera janë renditur më poshtë.

  • Bateri 9V, 1.50 USD
  • Kabllo e lidhësit të baterisë, 0, 16 dollarë
  • Arduino Nano me tituj pin, 2.05 USD
  • Nano IO Extension Shield, 1 USD, 05
  • Mini çelës rrëshqitës për energji, 0.15 USD
  • Biezer Piezo, 0, 86 USD
  • Adafruit Neopixel WS2812 8-bit, 1 USD, 01
  • Ekran OLED 128x64, USD 1, 53
  • Kodifikues rrotullues, 0, 50 USD
  • Kabllot Dupont F/F, USD 0, 49

Çmimi i përgjithshëm i përbërësve është më pak se 10 dollarë, -

Hapi 3: Diagrami i telave

Diagrami i telave
Diagrami i telave

Përdorni Bordin e Zgjerimit Nano IO në mënyrë që të mos shqetësoheni me bashkimin e lidhjeve të shumta GND dhe VCC. Bashkimi minimal do të nevojitet për titujt e kunjave Nano dhe për lidhësit e modulit Neopixel. Përdorimi i telave Dupont lejon lidhje të qëndrueshme për pjesën tjetër të instalimeve elektrike siç tregohet në diagram. Bateria 9V është e lidhur me GND dhe VIN, kjo e fundit përmes ndërprerësit të rrëshqitësit të energjisë. Moduli kodues rrotullues ka një buton ndërprerës të integruar, i cili tregohet veçmas në diagram për të kuptuar më lehtë se si t'i lidhni ato. Pjesa rrotulluese (CLK dhe DT) lidhet përkatësisht me PIN2 dhe PIN3, sepse këto janë kunjat e vetme NANO të afta për të ndërprerë trajtimin. GND rrotullues është i lidhur natyrisht me PIN -in GND të Nanos. Butoni i ndërprerës i integruar është i lidhur me PIN4. Zileja Piezo është e lidhur me PIN5 dhe GND. Moduli Adafruit Neopixel është i lidhur me PIN7 dhe VIN dhe GND e tij me 5V dhe GND të Nanos përkatësisht. Ekran i vogël OLED është i lidhur me ndërfaqen e autobusit I2C, i cili është PIN A4 dhe A5 për SDA dhe SDL. VCC dhe GND shkon në 5V dhe GND të Nanos natyrisht. Kjo përfundon instalimet tona Dupont.

Hapi 4: Kodi Burimor Arduino

Kodi Burimor Arduino
Kodi Burimor Arduino

// Metronome, Theksi kryesor, Takti vizual dhe i dëgjueshëm - 2019 Peter Csurgay

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Reset pin #(ose -1 nëse ndani Arduino reset pin) Ekran Adafruit_SSD1306, SCREEN_, & Wire, OLED_RESET); #përcaktoni pin_neopixel 7 #përcaktoni NUMPIXELS 8 #përcaktoni SHKURTRIA 32 Adafruit_NeoPixel pixel = Adafruit_NeoPixel (NUMPIXELS, pin_neopixel, NEO_GRB + NEO_KHZ800); #përcakto IDLE_11 0 #përcakto SCLK_01 1 #përcakto SCLK_00 2 #përcakto SCLK_10 3 #përcakto SDT_10 4 #përcakto SDT_00 5 #përcakto SDT_01 6 gjendje int = IDLE_11; #define CLK 2 #define DT 3 #cakto pin_switch 4 #përcakto pin_buzzer 5 int rrahje në minutë = 60; int bpmFirst = 0; // LED i ndezur në fillim, i fikur në pjesën tjetër … int tack = 4; bool leaderTack = false; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Kohëmatësi 1.filloni (1000000*60/bpm/2); Timer1.attachInterrupt (buzztick); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); pinMode (ndërprerës_ pin, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (CLK), rotativeCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); nëse (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C)) {// Adresa 0x3D për 128x64 për (;;); // Mos vazhdo, lak përgjithmonë} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {vonesë (100); ndërsa (digitalRead (pin_switch) == LOW); vonesë (100); Timer1.detachInterrupt (); showGreenTacks (); ndërsa (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (LeadTack) tack = 8; else {LeadTack = e vërtetë; ngjit = 1; }}} tjetër nëse (curValprevVal) {bpm+= 2; nëse (bpm> 240) bpm = 240; } else if (curVal = 100) display.print (""); else display.print (""); ekran.print (bpm); display.display (); } void buzztick () {if (bpmFirst == 0) {int volume = 4; nëse (LeadTack && pos == 0) vëllimi = 8; për (int i = 0; i

Recommended: