Mục lục:

Máy đếm nhịp Arduino: 4 bước
Máy đếm nhịp Arduino: 4 bước

Video: Máy đếm nhịp Arduino: 4 bước

Video: Máy đếm nhịp Arduino: 4 bước
Video: [Arduino Basic #4] Số nhị phân - Bộ đếm số nhị phân 4 bit với 4 đèn LED 2024, Tháng bảy
Anonim
Image
Image

Khi học một nhạc cụ mới khi còn nhỏ, có rất nhiều điều mới cần tập trung vào. Giữ nhịp độ đúng nhịp là một trong số đó. Không tìm thấy một máy đếm nhịp tiện lợi và đầy đủ về mặt chức năng có nghĩa là lý do tốt nhất để bắt đầu xây dựng lại với các con tôi. Trong bài đăng này, bạn sẽ tìm thấy mô tả chức năng, danh sách các bộ phận với các liên kết và giá trên webshop, sơ đồ đi dây để lắp ráp và mã nguồn Arduino hoàn chỉnh.

Bước 1: Mô tả chức năng

Danh sách các bộ phận
Danh sách các bộ phận

Sẽ rất tuyệt nếu có một thiết bị đếm nhịp với các chức năng sau đây để sử dụng nó ở nhà hoặc ở trường dạy nhạc một cách thuận tiện.

  • Hệ số hình thức nhỏ gọn để phù hợp với những nơi nhỏ trên đầu hoặc bên cạnh các nhạc cụ,
  • Hoạt động bằng pin, mạnh mẽ và di động để mang theo,
  • Dễ dàng thiết lập ngay cả đối với trẻ em, giá trị BPM luôn hiển thị,
  • Có thể điều chỉnh nhịp mỗi phút bằng núm xoay, lên đến 240 BPM
  • Âm thanh sắc nét với điều khiển âm lượng,
  • Chế độ im lặng để thực hành tai nghe qua đêm,
  • Phản hồi trực quan các nhịp (1/4, 2/4, 3/3, 4/4, 6/8, v.v.) lên đến 8 đèn LED,
  • Có hoặc không có trọng âm đầu, với phản hồi trực quan và âm thanh.

Bật, chế độ máy đếm nhịp sẽ bắt đầu ở 60 BPM hiển thị trên màn hình nhỏ và cho phép điều chỉnh nhịp độ bằng núm xoay từ 10 đến 240. Neopixels hiển thị nhịp bằng đèn LED màu xanh lam trong khi bộ rung tích tắc. Nhấn núm sẽ chuyển sang chế độ điều chỉnh nhịp và đèn LED màu xanh lá cây sẽ cho biết cấu trúc nhịp đã đặt. Núm xoay sẽ tăng hoặc giảm cấu trúc nhịp (2/2, 3/3, 4/4, 6/8, v.v.). Trên 8 đèn LED, quay thêm theo chiều kim đồng hồ, dấu nhấn hàng đầu sẽ được bật và đèn LED đầu tiên sẽ biểu thị điều này bằng màu đỏ. Giọng chủ đạo cũng sẽ có phản hồi âm thanh. Nó có thể được tắt bằng cách xoay ngược chiều kim đồng hồ. Nhấn núm sẽ chuyển trở lại từ chế độ điều chỉnh nhịp sang chế độ máy đếm nhịp.

Bước 2: Danh sách bộ phận

Bạn sẽ cần một trường hợp. Bất kỳ hình dạng hoặc kích thước nào cũng có thể mua được, nhưng chúng tôi đã có một chiếc vỏ kim loại màu đen đẹp mắt của một công tắc VGA thủ công cũ do một người bạn thanh lý. Phần còn lại của các bộ phận được liệt kê dưới đây.

  • Pin 9V, 1,50 USD
  • Cáp kết nối pin, 0, 16 USD
  • Arduino Nano với đầu ghim, 2,05 USD
  • Lá chắn mở rộng Nano IO, 1 USD, 05
  • Công tắc trượt mini cho nguồn, 0,15 USD
  • Bộ rung Piezo, 0, 86 USD
  • Adafruit Neopixel WS2812 8-bit, 1 USD, 01
  • Màn hình OLED 128x64, 1 USD, 53
  • Bộ mã hóa quay, 0, 50 USD
  • Cáp Dupont F / F, 0, 49 USD

Tổng giá của các thành phần dưới 10 USD, -

Bước 3: Sơ đồ đấu dây

Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện

Sử dụng Bảng mở rộng Nano IO để không phải bận tâm đến việc hàn nhiều kết nối GND và VCC. Cần hàn tối thiểu cho các đầu cắm chân Nano và cho các đầu nối mô-đun Neopixel. Sử dụng dây Dupont cho phép kết nối ổn định cho phần còn lại của hệ thống dây điện như trên sơ đồ. Pin 9V được kết nối với GND và VIN, pin này thông qua công tắc trượt nguồn. Mô-đun bộ mã hóa quay có một nút chuyển đổi tích hợp, được hiển thị riêng trong sơ đồ để dễ hiểu hơn về cách kết nối chúng. Phần quay (CLK và DT) được kết nối tương ứng với PIN2 và PIN3, vì đây là các chân NANO duy nhất có khả năng xử lý Ngắt. Tất nhiên, Rotary GND được kết nối với mã PIN GND của Nano. Nút chuyển đổi tích hợp được kết nối với PIN4. Bộ rung Piezo được kết nối với PIN5 và GND. Mô-đun Adafruit Neopixel được kết nối với PIN7 và VIN và GND của nó tương ứng với 5V và GND của Nano. Màn hình OLED nhỏ được kết nối với giao diện bus I2C, là mã PIN A4 và A5 cho SDA và SDL. Tất nhiên, VCC và GND chuyển sang 5V và GND của Nano. Điều đó kết thúc hệ thống dây điện Dupont của chúng tôi.

Bước 4: Mã nguồn Arduino

Mã nguồn Arduino
Mã nguồn Arduino

// Máy đếm nhịp, Giọng chính, Âm thanh & Âm thanh - Peter Csurgay 2019

#include #include #include #include #include "TimerOne.h" #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 // Đặt lại pin # (hoặc -1 nếu chia sẻ pin reset Arduino) Màn hình Adafruit_SIGHTSD1306 (SCREEN_WIDE, SCREEN_WIDTH, SCREEN_SIGHT & Dây, OLED_RESET); #define pin_neopixel 7 #define NUMPIXELS 8 #define BRIGHTNESS 32 Adafruit_NeoPixel pixel = 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; // Đèn LED Bật lúc đầu, Tắt ở phần còn lại… int tack = 4; bool leadTack = false; int pos = 0; int curVal = 0; int presVal = 0; void setup () {pixel.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); mountInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); mountInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C)) {// Địa chỉ 0x3D cho 128x64 for (;;); // Không tiếp tục, lặp mãi mãi} display.clearDisplay (); display.display (); } void loop () {if (digitalRead (pin_switch) == LOW) {delay (100); while (digitalRead (pin_switch) == LOW); chậm trễ (100); Timer1.detachInterrupt (); showGreenTacks (); while (digitalRead (pin_switch) == HIGH) {if (curVal> prevVal) {tack + = 1; if (tack> 8) {if (leadTack) tack = 8; else {leadTack = true; tack = 1; }}} else if (curValprevVal) {bpm + = 2; nếu (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 (leadTack && pos == 0) volume = 8; for (int i = 0; i

Đề xuất: