Satura rādītājs:

Arduino metronoms: 4 soļi
Arduino metronoms: 4 soļi

Video: Arduino metronoms: 4 soļi

Video: Arduino metronoms: 4 soļi
Video: DHT11/22 Temp Sensor Trouble - Collin’s Lab Notes #adafruit #collinslabnotes 2024, Novembris
Anonim
Image
Image

Bērnībā apgūstot jaunu mūzikas instrumentu, ir tik daudz jaunu lietu, kurām jāpievērš uzmanība. Tempu uzturēšana pareizajā tempā ir viena no tām. Neatrast funkcionāli pilnīgu un ērtu metronomu nozīmēja labāko attaisnojumu, lai atkal sāktu būvēt kopā ar saviem bērniem. Šajā instrukcijā atrodams funkcionālais apraksts, detaļu saraksts ar interneta veikala saitēm un cenām, montāžas shēma un pilnīgs Arduino avota kods.

1. darbība. Funkcionālais apraksts

Detaļu saraksts
Detaļu saraksts

Būtu jauki, ja mājās vai mūzikas skolā ērti būtu metronoma ierīce ar šādām funkcijām.

  • Kompakts formas faktors, kas piemērots nelielām vietām mūzikas instrumentu augšpusē vai blakus,
  • Ar baterijām darbināms, izturīgs un pārnēsājams pārnēsāšanai,
  • Viegli iestatāms pat bērniem, BPM vērtība vienmēr tiek rādīta,
  • Regulējams sitiens minūtē ar rotējošu pogu, līdz 240 BPM
  • Dzirdams takts ar skaļuma kontroli,
  • Klusais režīms nakts austiņu treniņam,
  • Vizuāla atgriezeniskā saite (1/4, 2/4, 3/3, 4/4, 6/8 utt.) Līdz 8 gaismas diodēm,
  • Ar vai bez vadošā akcenta, ar vizuālu un dzirdamu atgriezenisko saiti.

Ieslēdzoties, metronoma režīms sāksies ar ātrumu 60 BPM, kas tiks parādīts mazajā displejā un ļaus tempu noregulēt ar grozāmo pogu starp 10 un 240. Neopikseļi rāda sitienu zilās gaismas diodēs, kamēr zummeris atzīmējas. Nospiežot pogu, tiks pārslēgts sitienu regulēšanas režīms, un zaļās gaismas diodes norādīs iestatīto sitienu struktūru. Rotācijas poga palielinās vai samazinās sitienu struktūru (2/2, 3/3, 4/4, 6/8 utt.). Virs 8 gaismas diodēm, kas griežas tālāk pulksteņrādītāja virzienā, tiks ieslēgts vadošais akcents, un pirmā gaismas diode to parādīs sarkanā krāsā. Vadošajam akcentam būs arī dzirdama atgriezeniskā saite. To var izslēgt, pagriežot pretēji pulksteņrādītāja virzienam. Nospiežot pogu, atgriezīsies no sitienu regulēšanas režīma uz metronoma režīmu.

2. darbība: detaļu saraksts

Jums būs nepieciešama lieta. Jebkuras formas vai izmēra var nopirkt, bet mums bija jauks melna metāla korpuss ar vecu manuālu VGA slēdzi, kas tika atbrīvots no drauga. Pārējās daļas ir uzskaitītas zemāk.

  • 9 V akumulators, USD 1,50
  • Akumulatora savienotāja kabelis, USD 0, 16
  • Arduino Nano ar tapām, 2,05 USD
  • Nano IO pagarinājuma vairogs, USD 1, 05
  • Mini slīdnis strāvas padevei, USD 0,15
  • Pjezo skaņas signāls, USD 0, 86
  • Adafruit Neopixel WS2812 8 bitu, USD 1, 01
  • OLED displejs 128x64, USD 1, 53
  • Rotācijas kodētājs, USD 0, 50
  • Dupont kabeļi F/F, USD 0, 49

Komponentu kopējā cena ir mazāka par 10 USD,

3. darbība: elektroinstalācijas shēma

Elektroinstalācijas shēma
Elektroinstalācijas shēma

Izmantojiet Nano IO pagarinātāju, lai neraizētos ar vairāku GND un VCC savienojumu lodēšanu. Minimāla lodēšana būs nepieciešama Nano kontaktu galviņām un Neopixel moduļa savienotājiem. Izmantojot Dupont vadus, tiek nodrošināti stabili savienojumi pārējai elektroinstalācijai, kā parādīts diagrammā. 9 V akumulators ir savienots ar GND un VIN, pēdējais caur strāvas slīdni. Rotējošajam kodētāja modulim ir integrēta slēdža poga, kas diagrammā parādīta atsevišķi, lai vieglāk izprastu, kā tos savienot. Rotējošā daļa (CLK un DT) ir pievienota attiecīgi PIN2 un PIN3, jo šīs ir vienīgās NANO tapas, kas spēj pārtraukt apstrādi. Rotācijas GND, protams, ir savienots ar Nano GND PIN. Integrētā slēdža poga ir pievienota PIN4. Pjezo skaņas signāls ir pievienots PIN5 un GND. Adafruit Neopixel modulis ir savienots ar PIN7 un tā VIN un GND attiecīgi ar Nano 5V un GND. Neliels OLED displejs ir pievienots I2C kopnes interfeisam, kas ir PIN A4 un A5 SDA un SDL. VCC un GND, protams, iet uz Nano 5V un GND. Ar to mūsu Dupont elektroinstalācija ir pabeigta.

4. darbība: Arduino avota kods

Arduino avota kods
Arduino avota kods

// Metronoms, vadošais akcents, vizuālais un dzirdamais taktis - 2019 Peter Csurgay

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Reset pin #(vai -1, ja koplietojat Arduino reset pin) Adafruit_SSD1306 displejs (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 bpmPirmā = 0; // LED ieslēgts sākumā, izslēgts pārējā laikā … int tack = 4; bool leadTack = nepatiess; int pos = 0; int curVal = 0; int prevVal = 0; void setup () {pixels.begin (); pinMode (pin_buzzer, OUTPUT); Taimeris1.inicialize (1000000*60/bpm/2); Taimeris1.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)) {// Adrese 0x3D 128x64 priekš (;;); // Neturpiniet, cilpa uz visiem laikiem} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {kavēšanās (100); while (digitalRead (pin_switch) == LOW); kavēšanās (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; ja (tack> 8) {ja (vadošaisTack) tack = 8; else {leadTack = true; lipīgums = 1; }}} cits if (curValprevVal) {bpm+= 2; ja (bpm> 240) bpm = 240; } else if (curVal = 100) display.print (""); else display.print (""); displejs.druka (sitieni minūtē); display.display (); } void buzztick () {if (bpmFirst == 0) {int volume = 4; ja (leadTack && pos == 0) apjoms = 8; par (int i = 0; i

Ieteicams: