INHOUDSOPGAWE:

Arduino Metronoom: 4 stappe
Arduino Metronoom: 4 stappe

Video: Arduino Metronoom: 4 stappe

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

As u 'n nuwe musiekinstrument as kind leer, is daar soveel nuwe dinge waarop u moet fokus. Een van hulle is om tred te hou met die regte tempo. Om nie 'n funksioneel volledige en maklike metronoom te vind nie, was die beste verskoning om weer met my kinders te begin bou. In hierdie Instructables -pos vind u die funksionele beskrywing, onderdele -lys met webwerwe -skakels en pryse, bedradingsdiagram vir montering en volledige Arduino -bronkode.

Stap 1: Funksionele beskrywing

Onderdele lys
Onderdele lys

Dit sal aangenaam wees om 'n metronoom -toestel met die volgende funksies te hê om dit tuis of by die musiekskool te gebruik.

  • Kompakte vormfaktor om klein plekke bo -op of langs musiekinstrumente te pas,
  • Met batterye, robuust en draagbaar om mee te dra,
  • Maklik opgestel, selfs vir kinders, BPM -waarde word altyd vertoon,
  • Verstelbare slae per minuut met 'n draaiknop, tot 240 BPM
  • Hoorbare takt met volumebeheer,
  • Stil modus vir koptelefoonoefeninge oornag,
  • Visuele terugvoer van slae (1/4, 2/4, 3/3, 4/4, 6/8, ens.) Tot 8 LED's,
  • Met of sonder leidende aksent, met visuele en hoorbare terugvoer.

As die metronoom -modus aangeskakel word, begin dit met 60 BPM op die klein skerm en laat die pas met die draaiknop tussen 10 en 240 inskakel. Neopixels wys die maat in blou LED's terwyl die zoemer tik. Deur op die knop te druk, word oorgeskakel na die pasaanpassingsmodus en groen LED's dui die opgestelde maatstruktuur aan. Draaiknop verhoog of verminder die maatslag (2/2, 3/3, 4/4, 6/8, ens.). Bo 8 LED's, wat verder met die kloksgewys draai, word die voorste aksent aangeskakel en die eerste LED sal dit in rooi aandui. Leidende aksent sal ook hoorbare terugvoer hê. Dit kan afgeskakel word deur linksom te draai. Deur op die knop te druk, skakel terug van die maataanpassingsmodus na die metronoom -modus.

Stap 2: Onderdele lys

U benodig 'n saak. Elke vorm of grootte kan gekoop word, maar ons het 'n mooi swart metaalkas van 'n ou handmatige VGA -skakelaar by 'n vriend gehad. Die res van die dele word hieronder gelys.

  • 9V -battery, 1,50 dollar
  • Kabelaansluitkabel, USD 0, 16
  • Arduino Nano met penkoppe, 2,05 dollar
  • Nano IO Extension Shield, USD 1, 05
  • Mini skuifskakelaar vir krag, 0,15 dollar
  • Piezo -zoemer, USD 0, 86
  • Adafruit Neopixel WS2812 8-bis, USD 1, 01
  • OLED -skerm 128x64, USD 1, 53
  • Rotary encoder, USD 0, 50
  • Dupont -kabels F/F, USD 0, 49

Die totale prys van die komponente is minder as USD 10, -

Stap 3: Bedradingsdiagram

Bedradingsdiagram
Bedradingsdiagram

Gebruik die Nano IO -uitbreidingskaart om nie veel moeite te doen met die soldeer van verskeie GND- en VCC -verbindings nie. Minimale soldeerwerk is nodig vir die Nano -penkopstukke en vir die Neopixel -moduleverbindings. Deur Dupont -drade te gebruik, word stabiele verbindings vir die res van die bedrading moontlik gemaak, soos op die diagram getoon. Die 9V -battery is gekoppel aan GND en VIN, laasgenoemde via die kragskakelaar. Die roterende enkodeermodule het 'n geïntegreerde skakelknoppie, wat afsonderlik in die diagram getoon word om makliker te verstaan hoe om dit aan te sluit. Die roterende deel (CLK en DT) is gekoppel aan onderskeidelik PIN2 en PIN3, want dit is die enigste NANO -penne wat die hantering kan onderbreek. Rotary GND is natuurlik gekoppel aan Nano se GND PIN. Die geïntegreerde skakelaarknoppie is aan PIN4 gekoppel. Piezo -zoemer is gekoppel aan PIN5 en GND. Die Adafruit Neopixel -module is gekoppel aan PIN7 en die VIN en GND daarvan onderskeidelik met Nano se 5V en GND. Klein OLED -skerm is gekoppel aan die I2C -bus -koppelvlak, wat PIN A4 en A5 is vir SDA en SDL. VCC en GND gaan natuurlik na Nano se 5V en GND. Dit sluit ons Dupont -bedrading af.

Stap 4: Arduino -bronkode

Arduino -bronkode
Arduino -bronkode

// Metronoom, leidende aksent, visuele en hoorbare takt - Peter Csurgay, 2019

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Reset pin #(of -1 as Arduino reset pin deel) Adafruit_SSD1306 display (SCREEN_WIDH, SCREEN_ & 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; #definieer CLK 2 #definieer DT 3 #definieer pin_witch 4 #definieer pin_buzzer 5 int bpm = 60; int bpmFirst = 0; // LED eers aangeskakel, in die res af … int tack = 4; bool leadingTack = vals; int pos = 0; int curVal = 0; int prevVal = 0; ongeldige opstelling () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Timer1.initialiseer (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)) {// Adres 0x3D vir 128x64 vir (;;); // Moenie voortgaan nie, lus vir ewig} display.clearDisplay (); vertoon.display (); } leemte -lus () {if (digitalRead (pin_switch) == LOW) {vertraging (100); terwyl (digitalRead (pin_switch) == LOW); vertraging (100); Timer1.detachInterrupt (); showGreenTacks (); terwyl (digitalRead (pin_switch) == HOOG) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (leadingTack) tack = 8; anders {leadingTack = true; tack = 1; }}} anders if (curValprevVal) {bpm+= 2; as (bpm> 240) bpm = 240; } anders as (curVal = 100) display.print (""); anders display.print (""); vertoon.afdruk (bpm); vertoon.display (); } void buzztick () {if (bpmFirst == 0) {int volume = 4; as (leadingTack && pos == 0) volume = 8; vir (int i = 0; i

Aanbeveel: