Tartalomjegyzék:

Arduino metronóm: 4 lépés
Arduino metronóm: 4 lépés

Videó: Arduino metronóm: 4 lépés

Videó: Arduino metronóm: 4 lépés
Videó: Метроном на ардуино! #arduino #электроника #метроном 2024, Július
Anonim
Image
Image

Amikor gyermekként új hangszert tanul, sok új dologra kell összpontosítania. Az egyik a tempó megfelelő tempóban tartása. Ha nem találtam funkcionálisan teljes és kényelmes metronómot, az a legjobb ürügy arra, hogy újra elkezdhessem az építkezést a gyerekeimmel. Ebben az utasításban megtalálható a funkcionális leírás, az alkatrészlista a webáruház linkjeivel és áraival, az összeszerelési kapcsolási rajz és a teljes Arduino forráskód.

1. lépés: Funkcionális leírás

Alkatrész lista
Alkatrész lista

Jó lenne, ha a következő funkciókkal rendelkező metronómkészülékkel otthon vagy a zeneiskolában kényelmesen használhatná.

  • Kompakt formatervezés, hogy kis helyek illeszkedjenek a hangszerek tetejére vagy mellé,
  • Akkumulátoros, robusztus és hordozható,
  • Gyermekek számára is könnyen beállítható, a BPM érték mindig megjelenik,
  • Állítható ütések percenként forgatógombbal, akár 240 BPM
  • Hallható tapintat hangerőszabályzóval,
  • Csendes üzemmód a fejhallgató éjszakai gyakorlásához,
  • Az ütések vizuális visszajelzése (1/4, 2/4, 3/3, 4/4, 6/8 stb.) Akár 8 LED -ig,
  • Vezető akcentussal vagy anélkül, vizuális és hallható visszacsatolással.

Bekapcsoláskor a metronóm üzemmód 60 BPM -nél kezdődik, ami a kis kijelzőn látható, és lehetővé teszi a tempó beállítását a forgatógombbal 10 és 240 között. A neopixelek kék ütemben mutatják az ütemet, miközben a zümmögés ketyeg. A gomb megnyomásával ütemállítási módba kapcsol, és a zöld LED -ek a beállított ütemszerkezetet jelzik. A forgatógomb növeli vagy csökkenti az ütemszerkezetet (2/2, 3/3, 4/4, 6/8 stb.). 8 LED felett, az óramutató járásával megegyező irányban tovább forgatva, a vezető ékezet bekapcsol, és az első LED ezt pirosan jelzi. A vezető ékezetnek hallható visszacsatolása is lesz. Az óramutató járásával ellentétes irányba forgatva kikapcsolható. A gomb megnyomásával visszatérhet az ütésbeállítási módból a metronóm üzemmódba.

2. lépés: Alkatrészlista

Szüksége lesz egy tokra. Bármilyen forma vagy méret megvásárolható, de volt egy szép fekete fém tokunk, egy régi kézi VGA -kapcsolóval, amelyet eldobtak egy barátjától. A többi alkatrész az alábbiakban található.

  • 9 V -os akkumulátor, 1,50 USD
  • Akkumulátor csatlakozó kábel, USD 0, 16
  • Arduino Nano csapfejjel, 2,05 USD
  • Nano IO hosszabbító pajzs, 1 USD, 05
  • Mini csúszókapcsoló az áramellátáshoz, 0,15 USD
  • Piezo hangjelző, 0 USD, 86 USD
  • Adafruit Neopixel WS2812 8 bites, 1 USD, 01
  • OLED kijelző 128x64, USD 1, 53
  • Rotációs kódoló, 0 USD, 50 USD
  • Dupont kábelek F/F, USD 0, 49

Az alkatrészek összértéke kevesebb, mint 10 USD,

3. lépés: bekötési rajz

Bekötési rajz
Bekötési rajz

Használja a Nano IO bővítőlapot, hogy ne zavarja több GND és VCC csatlakozás forrasztását. Minimális forrasztásra lesz szükség a Nano csapok és a Neopixel modul csatlakozói számára. A Dupont vezetékek használata stabil csatlakozást tesz lehetővé a többi vezetékhez, az ábrán látható módon. A 9 V -os akkumulátor a GND -hez és a VIN -hez van csatlakoztatva, utóbbi a tápkapcsolón keresztül. A forgó kódoló modul beépített kapcsológombbal rendelkezik, amely külön látható a diagramon, hogy könnyebben megértsük a csatlakoztatásukat. A forgó alkatrész (CLK és DT) a PIN2 -hez és a PIN3 -hoz van csatlakoztatva, mivel ezek az egyetlen NANO csap, amely képes megszakítani a kezelést. A Rotary GND természetesen csatlakozik a Nano GND PIN -kódjához. A beépített kapcsoló gomb a PIN4 -hez van csatlakoztatva. A piezo zümmögő PIN5 és GND -hez van csatlakoztatva. Az Adafruit Neopixel modul a PIN7 -hez, a VIN és a GND pedig a Nano 5V és GND -hez van csatlakoztatva. Kis OLED kijelző csatlakozik az I2C busz interfészhez, amely az A4 és A5 PIN kódú SDA és SDL. A VCC és a GND természetesen a Nano 5V és GND -jére megy. Ezzel befejeződött a Dupont -huzalozásunk.

4. lépés: Arduino forráskód

Arduino forráskód
Arduino forráskód

// Metronóm, vezető ékezet, vizuális és hallható taktus - 2019 Csurgay Peter

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // PIN -kód visszaállítása (vagy -1, ha megosztja az Arduino reset pin -t) Adafruit_SSD1306 kijelző (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 bpmFirst = 0; // A LED először világít, a többi kikapcsol,… int tack = 4; bool leadTack = hamis; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Timer1.initialize (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)) {// 0x3D cím 128x64 esetén (;;); // Ne folytassa, örökké ciklus} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalRead (pin_switch) == LOW); késleltetés (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (leaderTack) tack = 8; else {leadTack = igaz; tapadás = 1; }}} else if (curValprevVal) {bpm+= 2; ha (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 (vezetőTack && pos == 0) hangerő = 8; mert (int i = 0; i

Ajánlott: