Агуулгын хүснэгт:

Arduino Metronome: 4 алхам
Arduino Metronome: 4 алхам

Видео: Arduino Metronome: 4 алхам

Видео: Arduino Metronome: 4 алхам
Видео: Метроном на ардуино! #arduino #электроника #метроном 2024, Арваннэгдүгээр
Anonim
Image
Image

Бага байхдаа шинэ хөгжмийн зэмсэг сурч байхдаа маш олон шинэ зүйлийг анхаарч үзэх хэрэгтэй. Зөв хурдаар алхах нь тэдний нэг юм. Үйл ажиллагааны хувьд бүрэн гүйцэд, тохиромжтой метрономыг олж чадаагүй нь хүүхдүүдтэйгээ дахин барилгаа эхлүүлэх хамгийн сайн шалтаг болно. Энэхүү зааварчилгааны бичлэгээс та функциональ тайлбар, вэб дэлгүүрийн линк, үнэ бүхий хэсгүүдийн жагсаалт, угсрах утас диаграм, Arduino -ийн эх кодыг олох болно.

Алхам 1: Функциональ тодорхойлолт

Эд ангиудын жагсаалт
Эд ангиудын жагсаалт

Гэртээ эсвэл хөгжмийн сургуульд тухтай ашиглахын тулд дараах функцтэй метроном төхөөрөмжтэй байвал сайн байх болно.

  • Хөгжмийн зэмсгийн дэргэд эсвэл хажууд байрлах жижиг газруудад тохирох авсаархан хэлбэрийн хүчин зүйл,
  • Батерейгаар ажилладаг, бат бөх, зөөвөрлөхөд тохиромжтой,
  • Хүүхдэд ч хялбархан тохируулах боломжтой, BPM утгыг үргэлж харуулдаг,
  • Ротари товчлуураар минутанд 240 цохилтын цохилтыг тохируулж болно
  • Дууны түвшний хяналттай дуу чимээ,
  • Чихэвчийг шөнийн турш ашиглах чимээгүй горим,
  • 8 хүртэлх LED хүртэлх цохилтын харааны хариу (1/4, 2/4, 3/3, 4/4, 6/8 гэх мэт),
  • Тэргүүлэх өргөлтийг оруулах эсвэл оруулахгүйгээр, харааны болон дуут санал хүсэлтээр.

Метроном горимыг асаахад жижиг дэлгэц дээр 60 BPM -ээс эхэлж, хурдыг 10 -аас 240 -ийн хооронд эргүүлэх товчлуураар тохируулах боломжтой болно. Неопикселийн цохилтыг цэнхэр LED -ээр харуулдаг. Бариулыг дарахад цохилтын тохируулгын горимд шилжих бөгөөд ногоон LED нь тогтоосон цохилтын бүтцийг харуулна. Эргэдэг товчлуур нь цохилтын бүтцийг нэмэгдүүлэх буюу багасгах болно (2/2, 3/3, 4/4, 6/8 гэх мэт). Дээрх 8 LED -ээс дээш, цагийн зүүний дагуу эргүүлэхэд гол өргөлтийг асаах бөгөөд эхний LED нь үүнийг улаан өнгөөр харуулна. Тэргүүлэх өргөлт нь сонсогдож буй санал хүсэлтэй байх болно. Үүнийг цагийн зүүний эсрэг эргүүлэх замаар унтрааж болно. Бариулыг дарахад цохилтын тохируулгын горимоос метроном горим руу буцна.

Алхам 2: эд ангиудын жагсаалт

Танд хэрэг хэрэгтэй болно. Ямар ч хэлбэр, хэмжээтэй худалдаж авах боломжтой, гэхдээ бид найздаа хаясан хуучин гарын авлагын VGA унтраалгатай сайхан хар төмөр хайрцагтай байсан. Үлдсэн хэсгүүдийг доор жагсаав.

  • 9В батерей, 1.50 доллар
  • Батерейны холбогч кабель, 0, 16 ам
  • Зүү толгойтой Arduino Nano, 2.05 доллар
  • Nano IO Extension Shield, USD 1, 05
  • Цахилгаан тэжээлийн мини слайд, 0.15 доллар
  • Piezo дуугаралт, 0 доллар, 86 доллар
  • Adafruit Neopixel WS2812 8 бит, USD 1, 01
  • OLED дэлгэц 128x64, 1, 53 доллар
  • Ротари кодлогч, 0, 50 доллар
  • Dupont кабель F/F, USD 0, 49

Бүрэлдэхүүн хэсгүүдийн нийт үнэ 10 доллараас бага байна.

Алхам 3: Утасны диаграм

Утас диаграмм
Утас диаграмм

Олон GND болон VCC холболтыг гагнах ажилд санаа зовохгүйн тулд Nano IO өргөтгөлийн самбарыг ашиглана уу. Нано зүү толгой ба Neopixel модулийн холбогчдод хамгийн бага гагнуур хийх шаардлагатай болно. Dupont утас ашиглах нь диаграммд үзүүлсэн шиг бусад утсыг тогтвортой холбох боломжийг олгодог. 9V батерей нь GND ба VIN -тэй холбогддог бөгөөд сүүлийнх нь цахилгаан гүйдэг унтраалгаар дамждаг. Эргэдэг кодлогч модуль нь нэгдсэн унтраалга товчлууртай бөгөөд тэдгээрийг хэрхэн холбох талаар илүү хялбар ойлгохын тулд диаграммд тусад нь харуулав. Ротари хэсэг (CLK ба DT) нь PIN2 ба PIN3 -т тус тус холбогдсон байдаг, учир нь эдгээр нь тасалдлыг зохицуулах чадвартай цорын ганц NANO зүү юм. Ротари GND нь Nano -ийн GND PIN -тэй холбогддог. Нэгдсэн унтраалга товчлуур нь PIN4 -т холбогдсон байна. Piezo дуугаралт нь PIN5 болон GND -тэй холбогдсон байна. Adafruit Neopixel модуль нь PIN7, түүний VIN ба GND -ийг Nano 5V ба GND -т тус тус холбосон болно. Жижиг OLED дэлгэц нь I2C автобусны интерфэйстэй холбогддог бөгөөд энэ нь SDA ба SDL -ийн PIN A4 ба A5 юм. VCC ба GND нь Наногийн 5V ба GND -д ордог. Энэ нь бидний Дюпонт утас холболтыг дуусгасан.

Алхам 4: Arduino эх код

Arduino эх код
Arduino эх код

// Metronome, тэргүүлэх өргөлт, харааны болон сонсголтой яриа - 2019 Питер Цургай

#оруулах #оруулах #оруулах #оруулах #оруулах & Утас, OLED_RESET); #pin_neopixel 7 тодорхойлох #NUMPIXELS 8 тодорхойлох #BRIGHTNESS 32 Adafruit_NeoPixel пиксел = Adafruit_NeoPixel (NUMPIXELS, pin_neopixel, NEO_GRB + NEO_KHZ800); #тодорхойлох IDLE_11 0 #тодорхойлох SCLK_01 1 #тодорхойлох SCLK_00 2 #тодорхойлох SCLK_10 3 #тодорхойлох SDT_10 4 #тодорхойлох SDT_00 5 #тодорхойлох SDT_01 6 int төлөв = IDLE_11; #define CLK 2 #define DT 3 #pin_switch 4 тодорхойлох #pin_buzzer 5 int bpm = 60; int bpmFirst = 0; // LED эхлээд асаалттай, үлдсэн хэсэг нь унтраалттай… int tack = 4; bool тэргүүлэгчTack = худал; int pos = 0; int curVal = 0; int prevVal = 0; хүчингүй тохиргоо () {piksel.begin (); pinMode (pin_buzzer, OUTPUT); Цаг хэмжигч 1. эхлүүлэх (1000000*60/bpm/2); Таймер 1. хавсаргах Тасалдал (дуу чимээ сонсох); 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 нь 128x64 (;;); // Үргэлжлүүлэхгүй, үүрд эргүүл} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {саатал (100); while (digitalRead (pin_switch) == LOW); саатал (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack+= 1; if (tack> 8) {if (leadTack) tack = 8; өөр {leadTack = үнэн; бэхлэх = 1; }}} өөр if (curValprevVal) {bpm+= 2; хэрэв (bpm> 240) bpm = 240; } if if (curVal = 100) display.print (""); else display.print (""); дэлгэц.хэвлэх (bpm); display.display (); } void buzztick () {if (bpmFirst == 0) {int volume = 4; if (leadTack && pos == 0) эзлэхүүн = 8; for (int i = 0; i

Зөвлөмж болгож буй: