สารบัญ:

Arduino Servo Drum Machine: 4 ขั้นตอน
Arduino Servo Drum Machine: 4 ขั้นตอน

วีดีโอ: Arduino Servo Drum Machine: 4 ขั้นตอน

วีดีโอ: Arduino Servo Drum Machine: 4 ขั้นตอน
วีดีโอ: Arduino DIY MeArm 4DOF Wooden Robotics Robot Arm Kit + SG90 / MG90s Servo Motor 2024, พฤศจิกายน
Anonim
Image
Image

นี่คือเครื่องดรัมหรือหุ่นยนต์ควบคุมไมโครเซอร์โวสองตัวและ Arduino Uno เซอร์โวติดตั้งอยู่บนโครงไม้รูปตัว L ที่จับกับกลองสแนร์ด้วยแม่เหล็กแรงสูง 4 ตัว แขนเซอร์โวถูกยึดเข้ากับตะเกียบสองตัวซึ่งทำหน้าที่เป็นไม้ตีกลอง มันค่อนข้างดัง แต่ไม่ดังเกินไป สามารถรับเสียงที่ดังกว่ามากได้โดยใช้เซอร์โวขนาดมาตรฐานและไม้ตีกลองจริงซึ่งค่อนข้างหนักกว่าเล็กน้อย แต่นั่นก็ต้องใช้แหล่งจ่ายไฟแยกต่างหากสำหรับเซอร์โวด้วย ด้วยการใช้ไมโครเซอร์โว Arduino จะจ่ายกระแสไฟให้เพียงพอสำหรับจ่ายไฟโดยตรงโดยไม่ต้องใช้แหล่งจ่ายไฟแยกต่างหาก

วิดีโอแสดงความพยายามของฉันในการเขียนโปรแกรมกลองโซโล Wipeout เวอร์ชันง่าย ๆ แน่นอนว่ามันไม่ได้อยู่ที่ 160 ครั้งต่อนาทีจริง ๆ แต่สามารถรับได้โดยง่ายโดยการเพิ่มเซอร์โวอีกตัวหนึ่งซึ่งค่อนข้างเจ๋ง ฉันไม่ได้คำนวณว่า bpm อันดับต้น ๆ ที่สามารถรับได้โดยใช้เซอร์โวคืออะไร และต้องใช้เวลาในการรับไม้ตีกลองจากตำแหน่งที่จอดไว้ไปยังหัวดรัม

จังหวะที่คุณสร้างได้นั้นจำกัดด้วยจินตนาการของคุณเท่านั้น และเครื่องดรัมเป็นคู่หูที่น่าเล่นมากกว่ากลองดิจิตอล หากคุณเป็นนักดนตรี

ข้อเสียเพียงอย่างเดียวคือเสียงเซอร์โวซึ่งไม่ค่อยเด่นชัดนักแม้ว่าเสียงของกล้องจะจับได้ค่อนข้างชัดเจน

ขั้นตอนที่ 1: สร้างวงเล็บเซอร์โว

สร้างวงเล็บเซอร์โว
สร้างวงเล็บเซอร์โว
สร้างวงเล็บเซอร์โว
สร้างวงเล็บเซอร์โว

ฉากยึดนี้ทำมาจากไม้อัดงานอดิเรกบางแผ่นที่ฉันมีอยู่ ฉันสร้างรูปตัว L โดยยึดสองชิ้นเข้าด้วยกันกับโครงเหล็กรูปตัว L จากนั้นนำท่อนไม้เล็กๆ มาติดแถบด้านบนเพื่อยึดเซอร์โวสองตัว

ฉันมีวงเล็บเซอร์โวที่มีประโยชน์สองตัวซึ่งฉันขันเข้ากับบล็อกไม้

ฉันใช้แม่เหล็กนีโอไดเมียม 4 อันเพื่อยึดตัวยึดกับดรัมสแนร์

ขั้นตอนที่ 2: ต่อสายเซอร์โวเข้ากับ Arduino Uno

ต่อเซอร์โวเข้ากับ Arduino Uno
ต่อเซอร์โวเข้ากับ Arduino Uno

เซอร์โว vcc (สายกลาง) ไปที่พิน Arduino 5 v

กราวด์ต่อกราวด์ Arduino

สายสัญญาณไปที่พิน 6 และ 7

เซอร์โวชิลด์จะทำให้ง่ายยิ่งขึ้นถ้าคุณมี

ขั้นตอนที่ 3: รหัส Arduino…

ด้านล่างนี้คือภาพสเก็ตช์ง่ายๆ ในการเล่น Wipeout คุณเพียงแค่ต้องปรับตำแหน่งเซอร์โวสำหรับการตั้งค่าเฉพาะของคุณ

มีความสุข!

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#รวม "servo.h"

// มือกลองเซอร์โว Jim Demello มิถุนายน 2018

เซอร์โว myservo1, myservo2;

int servoPin6 = 6; //เซอร์โว

int servoPin7 = 7;

เป็นโมฆะ myServo (int servoPosition, int servoNumber) {

ถ้า (servoNumber == 1) {

myservo1.write (ตำแหน่งเซอร์โว);

}

ถ้า (servoNumber == 2) {

myservo2.write (ตำแหน่งเซอร์โว);

}

}

เป็นโมฆะ doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

ถ้า (servoNumber == 1) {

ถ้า (ชนะ) {ชนะ = 10; // ถ้า beat = 1 ให้เพิ่มเซอร์โวลงอีกหน่อยเพื่อให้กระหน่ำแรงขึ้น

}

myServo (150 + จังหวะ, servoNumber); //ลง

ล่าช้า (delayVal);

myServo (100, servoNumber); // ขึ้น

ล่าช้า (delayVal);

}

ถ้า (servoNumber == 2) {

ถ้า (ชนะ) ตี = -10;

myServo (60 + จังหวะ, servoNumber); //ลง

ล่าช้า (delayVal);

myServo (80, servoNumber); // ขึ้น

ล่าช้า (delayVal);

}

}

การตั้งค่าเป็นโมฆะ ()

{

// Serial.begin(9600);

myservo1.attach(servoPin6, 1000, 2000); // ติดเซอร์โวบนพิน 9 กับวัตถุเซอร์โว

myservo1.write(100);

myservo2.attach (servoPin7, 1000, 2000); // ติดเซอร์โวบนพิน 9 กับวัตถุเซอร์โว

myservo2.write(90);

}

วงเป็นโมฆะ () {

เช็ดออก (); // ล้างรูทีนกลอง

//doOneEighthNote(2, 0);

ล่าช้า(40);

}

ถือเป็นโมฆะล้าง () {

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0); // พาร์แรกคือหมายเลขเซอร์โวและพาร์ที่สองถูกตี (1=บีต, 0=ไม่บีต)

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 0); doOneEighthNote(1, 0); doOneEighthNote(2, 1); doOneEighthNote(1, 0);

doOneEighthNote(2, 0); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

doOneEighthNote(2, 0); doOneEighthNote(1, 0); doOneEighthNote(2, 1); doOneEighthNote(1, 0);

doOneEighthNote(2, 0); doOneEighthNote(1, 0); doOneEighthNote(2, 1); doOneEighthNote(1, 0);

doOneEighthNote(2, 0); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0);

}

แนะนำ: