Mundarija:

Arduino Servo tambur mashinasi: 4 qadam
Arduino Servo tambur mashinasi: 4 qadam

Video: Arduino Servo tambur mashinasi: 4 qadam

Video: Arduino Servo tambur mashinasi: 4 qadam
Video: Гексапод на Arduino с помощью Multiservo Shield. Железки Амперки #12 2024, Noyabr
Anonim
Image
Image

Bu oddiy ikkita mikro-servo va Arduino Uno tomonidan boshqariladigan baraban mashinasi yoki robot. Servo L shaklidagi yog'och qavsga o'rnatiladi, u 4 ta kuchli magnitli tuzoqqa tutiladi. Servo qo'llari baraban tayog'i bo'lib xizmat qiladigan ikkita tayoqchaga mahkamlanadi. Bu juda baland, lekin unchalik baland emas. Oddiy o'lchamdagi servo va biroz og'irroq bo'lgan haqiqiy baraban tayoqchalari yordamida ancha baland ovozli xitlarni olish mumkin edi. Lekin buning uchun servo uchun alohida quvvat manbai kerak bo'ladi. Mikro-servolardan foydalanib, Arduino ularni alohida quvvat manbaisiz to'g'ridan-to'g'ri quvvatlantirish uchun etarlicha oqim beradi.

Videoda Wipeout barabanining yakkaxon versiyasini dasturlashga urinishim ko'rsatilgan. Albatta, bu daqiqada 160 zarba emas, lekin uni boshqa servo qo'shish orqali olish mumkin, bu juda zo'r. Men servo yordamida qanday yuqori tezlikni olish mumkinligini hisoblay olmadim va baraban tayog'ini to'xtab turgan joyidan baraban boshiga o'tkazishda biroz kechikish kerak.

Siz yaratishingiz mumkin bo'lgan ritmlar faqat sizning tasavvuringiz bilan chegaralanadi va baraban mashinasi, agar siz musiqachi bo'lsangiz, raqamli baraban mashinasidan ko'ra o'ynashning qiziqarli sherigi.

Yagona kamchilik - bu servo shovqin, bu unchalik sezilmaydi, lekin kamera ovozi uni juda yaxshi sezganday tuyuladi.

1 -qadam: Servo qavsini yarating

Servo braketini yarating
Servo braketini yarating
Servo braketini yarating
Servo braketini yarating

Bu qavs men qo'limda bo'lgan hobbi faneralaridan qilingan. Men L-shaklidagi metall bo'lak bilan ikkita bo'lakni murvat bilan yasadim. Keyin ikkita servosni ushlab turish uchun yuqori bo'lakka kichik yog'och blok yopishtirilgan.

Menda ikkita qulay servo qavs bor edi, men ularni yog'och blokga mahkamladim.

Qavsni tuzoqqa tutish uchun men 4 ta neodim magnitdan foydalandim.

2 -qadam: Servolarni Arduino Uno -ga ulang

Servolarni Arduino Uno -ga ulang
Servolarni Arduino Uno -ga ulang

Servo vcc (o'rta sim) Arduino 5 v pinlariga o'tadi.

Topraklama simlari Arduino erga.

Signal simlari 6 va 7 -pinlarga o'tadi.

Agar sizda servo qalqon bo'lsa, uni yanada osonlashtiradi.

3 -qadam: Arduino kodi …

Quyida Wipeout -ni o'ynashning oddiy eskizi keltirilgan. Siz maxsus sozlash uchun servo pozitsiyalarini o'zgartirishingiz kerak.

Maza qiling!

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

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

#"servo.h" ni qo'shing

// servo barabanchi Jim Demello, 2018 yil iyun

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

myServo void (int servoPosition, int servoNumber) {

agar (servoNumber == 1) {

myservo1.write (servoPosition);

}

agar (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

agar (servoNumber == 1) {

if (beat) {beat = 10; // agar beat = 1 bo'lsa, kuchli urish uchun biroz ko'proq servo qo'shing

}

myServo (150 + urish, servoNumber); // pastga

kechikish (delayVal);

myServo (100, servoNumber); // yuqoriga

kechikish (delayVal);

}

agar (servoNumber == 2) {

agar (urish) urish = -10;

myServo (60 + urish, servoNumber); // pastga

kechikish (delayVal);

myServo (80, servoNumber); // yuqoriga

kechikish (delayVal);

}

}

bo'sh o'rnatish ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // servo ob'ektga 9 -pinli servo biriktiriladi

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // servo ob'ektga 9 -pinli servo biriktiriladi

myservo2.write (90);

}

void loop () {

yuvib yuborish(); // barabanlarni tozalash tartibi

// doOneEighthNote (2, 0);

kechikish (40);

}

bekor qilish () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // birinchi parm - servo raqami, ikkinchi parm - urilgan (1 = urish, 0 = urish yo'q)

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

}

Tavsiya: