Სარჩევი:

Arduino Servo Drum მანქანა: 4 ნაბიჯი
Arduino Servo Drum მანქანა: 4 ნაბიჯი

ვიდეო: Arduino Servo Drum მანქანა: 4 ნაბიჯი

ვიდეო: Arduino Servo Drum მანქანა: 4 ნაბიჯი
ვიდეო: მაკონტროლებელი 32 სერვო მოტორი PCA9685 და Arduino გამოყენებით: V3 2024, ნოემბერი
Anonim
Image
Image

ეს არის მარტივი ორი მიკრო სერვო და Arduino Uno კონტროლირებადი ბარაბანი ან რობოტი. Servos დამონტაჟებულია L- ფორმის ხის ფრჩხილზე, რომელიც ეჭირა მახეში 4 ძლიერი მაგნიტით. სერვო იარაღი მიმაგრებულია ორ ჩხირზე, რომლებიც ბარაბნის ჯოხებს ემსახურება. საკმაოდ ხმამაღალია, მაგრამ არც ისე ხმამაღლა. გაცილებით ხმამაღალი დარტყმები შეიძლება მიღებულ იქნეს სტანდარტული ზომის სერვო და რეალური დრამ-ჩხირების გამოყენებით, რომლებიც საკმაოდ მძიმეა. მაგრამ ეს ასევე მოითხოვს ცალკეულ ელექტრომომარაგებას სერვოებისთვის. მიკრო სერვისების გამოყენებით, არდუინო აწვდის საკმარის დენს, რომ მათ ელექტროენერგია პირდაპირ ცალკეული დენის წყაროს გარეშე მიაწოდოს.

ვიდეოში ნაჩვენებია ჩემი მცდელობა პროგრამირება Wipeout დრამის სოლოს მარტივი ვერსიის. რა თქმა უნდა, ეს არ არის რეალური 160 დარტყმა წუთში, მაგრამ ამის მარტივად მიღება შესაძლებელია სხვა სერვისის დამატებით, რაც საკმაოდ მაგარი იქნება. მე არ მაქვს გამოთვლილი, თუ რა არის მაქსიმალური დარტყმა წუთში, რომელიც შეიძლება მიღებულ იქნას სერვოის გამოყენებით და ის მოითხოვს გარკვეულ დაყოვნებას ბარაბანი თავისი გაჩერებული პოზიციიდან ბარაბანის თავზე.

რიტმები, რომელთა შექმნაც თქვენ შეგიძლიათ, მხოლოდ თქვენი ფანტაზიით შემოიფარგლება და დასარტყამი მანქანა უფრო საინტერესო თანამგზავრია, ვიდრე ციფრული დასარტყამი აპარატი, თუ მუსიკოსი ხართ.

ერთადერთი მინუსი არის სერვო ხმაური, რომელიც ნამდვილად არ არის შესამჩნევი, თუმცა კამერის აუდიო, როგორც ჩანს, მას საკმაოდ შესამჩნევად იღებს.

ნაბიჯი 1: შექმენით Servo Bracket

ააშენეთ Servo Bracket
ააშენეთ Servo Bracket
ააშენეთ Servo Bracket
ააშენეთ Servo Bracket

ეს ფრჩხილი დამზადებულია ჰობის პლაივუდის ზოგიერთი ზოლისგან, რომელიც მე მქონდა ხელთ. მე შევქმენი L- ფორმა ორი ხრახნიანი ლითონის ლ-სამაგრთან ერთად. შემდეგ ხის პატარა ბლოკი იყო წებოვანი ზედა ზოლზე, რათა ორი სერვო დაეჭირა.

მე მქონდა ორი მოსახერხებელი სერვო ფრჩხილი, რომელიც ხის ბლოკზე დავაყენე.

მე გამოვიყენე 4 ნეოდიმი მაგნიტი, რათა ფრჩხილი მეჭირა ბარაბანზე.

ნაბიჯი 2: მიამაგრეთ სერვოები Arduino Uno– ზე

Servos მავთულის Arduino Uno
Servos მავთულის Arduino Uno

Servos vcc (შუა მავთული) მიდის Arduino 5 v ქინძისთავებთან.

გრუნტის მავთულები არდუინოს მიწაზე.

სიგნალის მავთულები მიდის 6 და 7 ქინძისთავებზე.

სერვო ფარი კიდევ უფრო გაგიადვილებს, თუ გყავს.

ნაბიჯი 3: Arduino კოდი…

ქვემოთ მოცემულია მარტივი ესკიზი Wipeout– ის სათამაშოდ. თქვენ უბრალოდ უნდა შეცვალოთ სერვო პოზიციები თქვენი კონკრეტული კონფიგურაციისთვის.

Გაერთე!

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

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

#ჩართეთ "servo.h"

// სერვო დრამერი ჯიმ დემელო 2018 წლის ივნისი

სერვო myservo1, myservo2;

int servoPin6 = 6; // სერვო

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

თუ (servoNumber == 1) {

myservo1.write (servoPosition);

}

თუ (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

თუ (servoNumber == 1) {

თუ (სცემეს) {სცემეს = 10; // თუ სცემთ = 1 მაშინ დაამატეთ ცოტა მეტი სერვო ქვემოთ უფრო ძლიერი დარტყმისთვის

}

myServo (150 + დარტყმა, servoNumber); // ქვემოთ

დაგვიანება (delayVal);

myServo (100, servoNumber); // up

დაგვიანება (delayVal);

}

თუ (servoNumber == 2) {

თუ (სცემეს) სცემეს = -10;

myServo (60 + დარტყმა, servoNumber); // ქვემოთ

დაგვიანება (delayVal);

myServo (80, servoNumber); // up

დაგვიანება (delayVal);

}

}

ბათილად დაყენება ()

{

// სერიული.დაწყება (9600);

myservo1.attach (servoPin6, 1000, 2000); // მიმაგრებს servo პინ 9 -ზე servo ობიექტს

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // მიმაგრებს servo პინ 9 -ზე servo ობიექტს

myservo2.write (90);

}

ბათილი მარყუჟი () {

wipeout (); // wipeout drum routine

// doOneEighthNote (2, 0);

დაგვიანება (40);

}

void wipeout () {

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);

}

გირჩევთ: