Orodha ya maudhui:

Arduino Metronome: Hatua 4
Arduino Metronome: Hatua 4

Video: Arduino Metronome: Hatua 4

Video: Arduino Metronome: Hatua 4
Video: Make your own Arduino Metronome 2024, Novemba
Anonim
Image
Image

Wakati wa kujifunza ala mpya ya muziki ukiwa mtoto, kuna mambo mengi mapya ya kuzingatia. Kuweka kasi katika tempo sahihi ni moja wapo. Kutopata metronome kamili na inayofaa ilimaanisha kisingizio bora cha kuanza kujenga tena na watoto wangu. Katika chapisho hili la Maagizo utapata maelezo ya kazi, orodha ya sehemu na viungo vya wavuti na bei, mchoro wa wiring wa kusanyiko, na nambari kamili ya chanzo ya Arduino.

Hatua ya 1: Maelezo ya Kazi

Orodha ya Sehemu
Orodha ya Sehemu

Itakuwa nzuri kuwa na kifaa cha metronome na kazi zifuatazo kuitumia nyumbani au kwenye shule ya muziki kwa urahisi.

  • Fomu ya fomu inayofaa ili kutoshea sehemu ndogo juu au karibu na vyombo vya muziki,
  • Betri inaendeshwa, imara na inayoweza kubebeka karibu,
  • Weka kwa urahisi hata kwa watoto, Thamani ya BPM inaonyeshwa kila wakati,
  • Vipigo vinavyoweza kubadilishwa kwa dakika na kitovu cha Rotary, hadi 240 BPM
  • Usikivu unaosikika na udhibiti wa sauti,
  • Njia tulivu ya mazoezi ya vichwa vya sauti mara moja,
  • Maoni ya kupigwa ya viboko (1/4, 2/4, 3/3, 4/4, 6/8, nk) hadi LED 8,
  • Pamoja na au bila lafudhi inayoongoza, na maoni ya kuona na kusikika.

Kuwasha, hali ya metronome itaanza saa 60 BPM ikionyesha kwenye onyesho ndogo na kuruhusu mwendo uangaliwe na kitovu cha kuzunguka kati ya 10 na 240. Neopixels zinaonyesha kipigo katika LED za hudhurungi wakati buzzer inaugua. Kubonyeza kitufe kitabadilisha kutumia hali ya marekebisho na taa za kijani kibichi zitaonyesha muundo wa mpigo uliowekwa. Knob ya Rotary itaongeza au kupunguza muundo wa kupiga (2/2, 3/3, 4/4, 6/8, nk). Juu ya LED 8, zinazunguka zaidi kwa saa, lafudhi inayoongoza itawashwa, na LED ya kwanza itaonyesha hii kwa nyekundu. Lafudhi inayoongoza itakuwa na maoni yanayosikika pia. Inaweza kuzimwa kwa kuzunguka kinyume cha saa. Kubonyeza kitovu kitabadilika kutoka hali ya kurekebisha mpigo kwenda hali ya metronome.

Hatua ya 2: Orodha ya Sehemu

Utahitaji kesi. Sura yoyote au saizi inaweza kununuliwa, lakini tulikuwa na kasha nzuri ya chuma nyeusi ya swichi ya zamani ya mwongozo wa VGA iliyotupwa kwa rafiki. Sehemu zingine zimetajwa hapa chini.

  • Betri ya 9V, USD 1.50
  • Kebo ya kiunganishi cha betri, USD 0, 16
  • Arduino Nano na vichwa vya pini, USD 2.05
  • Ngao ya Ugani ya Nano IO, USD 1, 05
  • Kubadilisha slaidi ndogo ya umeme, USD 0.15
  • Buzzer ya piezo, USD 0, 86
  • Adafruit Neopixel WS2812 8-bit, USD 1, 01
  • OLED Onyesha 128x64, USD 1, 53
  • Usimbuaji Rotary, USD 0, 50
  • Kamba za Dupont F / F, USD 0, 49

Bei ya jumla ya vifaa ni chini ya Dola 10, -

Hatua ya 3: Mchoro wa Wiring

Mchoro wa Wiring
Mchoro wa Wiring

Tumia Bodi ya Ugani ya Nano IO ili usijisumbue na kuuza unganisho nyingi za GND na VCC. Uuzaji mdogo utahitajika kwa vichwa vya pini vya Nano na kwa viunganisho vya moduli ya Neopixel. Kutumia waya za Dupont huruhusu unganisho thabiti kwa wiring iliyobaki kama inavyoonyeshwa kwenye mchoro. Betri ya 9V imeunganishwa na GND na VIN, mwisho kupitia swichi ya kitelezi cha nguvu. Moduli ya usimbuaji wa rotary ina kitufe cha kuunganishwa kilichobadilishwa, ambacho kinaonyeshwa kando kwenye mchoro kwa uelewa rahisi wa jinsi ya kuziunganisha. Sehemu ya Rotary (CLK na DT) imeunganishwa na PIN2 na PIN3 mtawaliwa, kwa sababu hizi ni pini pekee za NANO zinazoweza kushughulikia Usumbufu. Rotary GND imeunganishwa na Nano's GND PIN bila shaka. Kitufe cha swichi iliyojumuishwa imeunganishwa na PIN4. Buzzer ya Piezo imeunganishwa na PIN5 na GND. Moduli ya Adafruit Neopixel imeunganishwa na PIN7 na VIN yake na GND kwa 5V ya Nano na GND mtawaliwa. Onyesho dogo la OLED limeunganishwa na kiolesura cha basi cha I2C, ambayo ni PIN A4 na A5 kwa SDA na SDL. VCC na GND huenda kwa 5V ya Nano na GND kwa kweli. Hiyo inahitimisha wiring yetu ya Dupont.

Hatua ya 4: Msimbo wa Chanzo wa Arduino

Nambari ya Chanzo ya Arduino
Nambari ya Chanzo ya Arduino

// Metronome, Lafudhi inayoongoza, Mbinu ya Kuonekana na Kusikika - 2019 Peter Csurgay

# pamoja na # pamoja na # pamoja na # pamoja # # pamoja na "TimerOne.h" #fasili SCREEN_WIDTH 128 #fasili SCREEN_HEIGHT 64 #fasili OLED_RESET -1 // Rudisha pini # (au -1 ikiwa unashiriki pini ya kuweka upya Arduino) Adafruit_SSD1306 kuonyesha (SCREEN_WIDTH, & Waya, OLED_RESET); #fafanua pin_neopixel 7 #fafanua NUMPIXELS 8 #fafanua BRIGHTNESS 32 Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, pin_neopixel, NEO_GRB + NEO_KHZ800); #fafanua IDLE_11 0 #fafanua SCLK_01 1 #fafanua SCLK_00 2 #fafanua SCLK_10 3 #fafanua SDT_10 4 #fafanua SDT_00 5 #fafanua SDT_01 6 int state = IDLE_11; #fafanua CLK 2 #fafanua DT 3 #fafanua pini_switch 4 #fafanua siri_buzzer 5 int bpm = 60; int bpmFirst = 0; // Kuwashwa kwa mwanzoni, Zima kwa wengine… int tack = 4; bool inayoongozaTack = uwongo; int pos = 0; int curVal = 0; int prevVal = 0; kuanzisha batili () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Timer1 kuanzisha. (1000000 * 60 / bpm / 2); Timer1. ambatisha Kukatiza (buzztick); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); pinMode (pin_switch, INPUT_PULLUP); ambatishaKukatiza (digitalPinToInterrupt (CLK), rotaryCLK, MABADILIKO); ambatishaKukatisha (digitalPinToInterrupt (DT), rotaryDT, MABADILIKO); ikiwa (! onyesha.anza (SSD1306_SWITCHCAPVCC, 0x3C)) {// Anwani 0x3D kwa 128x64 kwa (;;); // Usiendelee, kitanzi milele} onyesha. DisplayDisplay (); onyesha.display (); } kitanzi batili () {if (digitalRead (pin_switch) == LOW) {kuchelewa (100); wakati (digitalRead (pin_switch) == LOW); kuchelewesha (100); Timer1. DetachInterrupt (); onyeshaGreenTacks (); wakati (digitalRead (pin_switch) == JUU) {if (curVal> prevVal) {tack + = 1; ikiwa (tack> 8) {if (leadTack) tack = 8; mwingine {leadTack = kweli; tack = 1; }}}} mwingine ikiwa (curValprevVal) {bpm + = 2; ikiwa (bpm> 240) bpm = 240; } mwingine ikiwa (curVal = 100) onyesha.print (""); onyesho jingine.print (""); onyesho.print (bpm); onyesha.display (); } batili tupu () {if (bpmFirst == 0) {int volume = 4; ikiwa (leadTack && pos == 0) kiasi = 8; kwa (int i = 0; i

Ilipendekeza: