Sisällysluettelo:

Arduino Metronome: 4 vaihetta
Arduino Metronome: 4 vaihetta

Video: Arduino Metronome: 4 vaihetta

Video: Arduino Metronome: 4 vaihetta
Video: Arduino Drum Sequencer: 8 tracks, 16 steps per measure, 8 measures per pattern 2024, Marraskuu
Anonim
Image
Image

Kun opit uutta soitinta lapsena, on niin monia uusia asioita, joihin kannattaa keskittyä. Tahdin pitäminen oikeassa tahdissa on yksi niistä. Toimimattomasti täydellisen ja kätevän metronomin löytäminen ei ollut paras tekosyy aloittaa rakentaminen uudelleen lasteni kanssa. Tästä Instructables -viestistä löydät toiminnallisen kuvauksen, osaluettelon verkkokaupan linkkeillä ja hinnoilla, kytkentäkaavion kokoonpanolle ja täydellisen Arduino -lähdekoodin.

Vaihe 1: Toiminnallinen kuvaus

Osaluettelo
Osaluettelo

Olisi mukavaa saada metronomilaite, jolla on seuraavat toiminnot, jotta voit käyttää sitä kotona tai musiikkikoulussa kätevästi.

  • Kompakti muoto, joka sopii pieniin paikkoihin soittimien päällä tai vieressä,
  • Paristokäyttöinen, kestävä ja kannettava kuljettaa mukana,
  • Helppo asentaa jopa lapsille, BPM -arvo näkyy aina
  • Säädettävä lyönti minuutissa kiertonupilla, jopa 240 BPM
  • Kuuluva kosketus äänenvoimakkuuden säätimellä,
  • Hiljainen tila kuulokkeiden yön harjoitteluun,
  • Visuaalinen palaute (1/4, 2/4, 3/3, 4/4, 6/8 jne.) Jopa 8 LED -valoa,
  • Johtavalla aksentilla tai ilman, visuaalinen ja kuuluva palaute.

Kun metronomitila kytkeytyy päälle, se alkaa nopeudella 60 BPM, joka näkyy pienellä näytöllä ja antaa nopeuden säätää kiertovalitsimella välillä 10 - 240. Neopikselit näyttävät sykkeen sinisinä LED -valoina, kun summeri tikittää. Nupin painaminen vaihtaa sykkeen säätötilaan ja vihreät LEDit osoittavat asetetun lyöntirakenteen. Kiertonuppi lisää tai pienentää lyöntirakennetta (2/2, 3/3, 4/4, 6/8 jne.). Yli kahdeksan LED -valon yläpuolella, jotka pyörivät edelleen myötäpäivään, johtava aksentti syttyy ja ensimmäinen LED osoittaa tämän punaisena. Johtavalla aksentilla on myös kuultavaa palautetta. Se voidaan sammuttaa kiertämällä vastapäivään. Nupin painaminen vaihtaa takaisin sykkeen säätötilasta metronomitilaan.

Vaihe 2: Osaluettelo

Tarvitset kotelon. Mitä tahansa muotoa tai kokoa voi ostaa, mutta meillä oli mukava musta metallikotelo vanhasta manuaalisesta VGA -kytkimestä, joka hävitettiin ystävälle. Loput osat on lueteltu alla.

  • 9 V: n akku, 1,50 USD
  • Akun liitäntäkaapeli, USD 0, 16
  • Arduino Nano nastatulpilla, 2,05 USD
  • Nano IO Extension Shield, USD 1, 05
  • Mini -liukukytkin virtalähteelle, USD 0,15
  • Pietsosummeri, USD 0, 86
  • Adafruit Neopixel WS2812 8-bittinen, USD 1, 01
  • OLED -näyttö 128x64, USD 1, 53
  • Pyörivä anturi, USD 0, 50
  • Dupont -kaapelit F/F, USD 0, 49

Osien kokonaishinta on alle 10 USD

Vaihe 3: Kytkentäkaavio

Kytkentäkaavio
Kytkentäkaavio

Käytä Nano IO -laajennuslevyä, jotta et vaivaudu juottamaan useita GND- ja VCC -liitäntöjä. Nano -nastaisten otsikoiden ja Neopixel -moduuliliittimien juotos tarvitaan mahdollisimman vähän. Dupont -johtojen käyttäminen mahdollistaa vakaat liitännät muille johtimille kaavion mukaisesti. 9 V: n akku on kytketty GND: hen ja VIN: ään, jälkimmäinen virtakytkimen kautta. Pyörivässä anturimoduulissa on sisäänrakennettu kytkinpainike, joka näkyy kaaviossa erikseen, jotta ne ymmärtäisivät paremmin, miten ne kytketään. Pyörivä osa (CLK ja DT) on kytketty PIN2- ja PIN3 -järjestelmään, koska nämä ovat ainoat NANO -nastat, jotka voivat keskeyttää käsittelyn. Rotary GND on tietysti kytketty Nanon GND -PIN -koodiin. Integroitu kytkinpainike on kytketty PIN4 -koodiin. Pietsosummeri on kytketty PIN5: een ja GND: hen. Adafruit Neopixel -moduuli on kytketty PIN7 -järjestelmään ja sen VIN- ja GND -numero Nanon 5V- ja GND -järjestelmään. Pieni OLED -näyttö on liitetty I2C -väyläliitäntään, joka on PIN A4 ja A5 SDA: lle ja SDL: lle. VCC ja GND menevät tietenkin Nanon 5V: lle ja GND: lle. Tämä päättää Dupont -johdotuksemme.

Vaihe 4: Arduinon lähdekoodi

Arduinon lähdekoodi
Arduinon lähdekoodi

// Metronomi, johtava aksentti, visuaalinen ja kuuluva tahti - 2019 Peter Csurgay

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Reset pin #(tai -1, jos jaat Arduino reset pin) Adafruit_SSD1306 -näyttö (SCREEN_WIDTH, & 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 bpmEnsimmäinen = 0; // LED palaa aluksi, pois päältä… int tack = 4; bool leadTack = epätosi; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Ajastin 1. alku (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)) {// Osoite 0x3D for 128x64 for (;;); // Älä jatka, silmukka ikuisesti} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalRead (pin_switch) == LOW); viive (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; jos (tack> 8) {if (leaderTack) tack = 8; else {leadTack = true; tack = 1; }}} muu jos (curValprevVal) {bpm+= 2; jos (bpm> 240) bpm = 240; } else if (curVal = 100) display.print (""); else display.print (""); näyttö. tulostus (bpm); display.display (); } void buzztick () {if (bpmFirst == 0) {int volume = 4; if (leadTack && pos == 0) äänenvoimakkuus = 8; varten (int i = 0; i

Suositeltava: