Мазмуну:

Arduino Servo барабан машинасы: 4 кадам
Arduino Servo барабан машинасы: 4 кадам

Video: Arduino Servo барабан машинасы: 4 кадам

Video: Arduino Servo барабан машинасы: 4 кадам
Video: Запомни эту хитрость по доработке перфораторы для ровного сверления 2024, Ноябрь
Anonim
Image
Image

Бул жөнөкөй эки микро-servo жана Arduino Uno башкарылган барабан машинасы же робот. Серво 4 күчтүү магнит менен торго барабанга кармалган L формасындагы жыгач кронштейнге орнотулган. Серво куралдары барабан таякчасы катары кызмат кылган эки таякчага бекитилет. Бул абдан катуу, бирок өтө катуу эмес. Стандарттык көлөмдөгү серволорду жана бир аз оорураак барабан таяктарын колдонуу менен бир топ катуу хиттерди алууга болот. Бирок бул дагы серво үчүн өзүнчө электр менен камсыздоону талап кылат. Микро-серволорду колдонуу менен Arduino өзүнчө электр булагы жок түздөн-түз аларды иштетүү үчүн жетишерлик ток берет.

Видеодо менин Wipeout барабанынын жөнөкөй версиясын программалоого болгон аракетим көрсөтүлгөн. Албетте, бул мүнөтүнө чыныгы 160 сокку эмес, бирок муну башка сервону кошуу менен оңой эле алууга болот, бул абдан сонун болмок. Мен сервоприём менен алына турган жогорку бмп эмне экенин эсептей элекмин жана ал барабандын таякчасын барабан башына чейин алуу үчүн бир аз кечигүүнү талап кылат.

Сиз түзө турган ритмдер сиздин фантазияңыз менен гана чектелген жана барабан машинасы, эгер сиз музыкант болсоңуз, санарип барабан машинасына караганда ойноо үчүн кызыктуу шерик.

Жалгыз жетишпеген жагы - бул servo ызы -чуусу, бирок ал анча байкалбайт, бирок камеранын аудиосу аны бир топ жакшыртып алгандай көрүнөт.

1 -кадам: Servo кронштейнин куруңуз

Серво кронштейнин куруңуз
Серво кронштейнин куруңуз
Серво кронштейнин куруңуз
Серво кронштейнин куруңуз

Бул кронштейн менин колумда болгон фанердин кээ бир тилкелеринен жасалган. Мен L-формасын эки бөлүктү металл L-кронштейн менен бириктирип түздүм. Андан кийин жыгачтын кичинекей блогу эки тилкени кармоо үчүн үстүңкү тилкеге жабыштырылган.

Менде жыгач блокко сайылган эки ыңгайлуу серво кашаа бар болчу.

Кронштейнди тузакка түшүрүү үчүн 4 неодим магнитин колдондум.

2 -кадам: Серверлерди Arduino Uno менен байланыштырыңыз

Серверлерди Arduino Uno менен байланыштырыңыз
Серверлерди Arduino Uno менен байланыштырыңыз

Servo vcc (орто зым) Arduino 5 v казыктарына барат.

Жердин зымдары Arduino жерге.

Сигнал зымдары 6 жана 7 -казыктарга барат.

Серво калкан, эгер сизде бар болсо, аны ого бетер жеңилдетет.

3 -кадам: Arduino коду…

Төмөндө Wipeout ойноо үчүн жөнөкөй эскиз. Сиз жөн гана конвертиңиз үчүн серво позицияларын тууралашыңыз керек.

Көңүл ачуу!

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

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

#"servo.h" кошуу

// серво барабанчысы Джим Демелло июнь 2018

Myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

жараксыз myServo (int servoPosition, int servoNumber) {

эгер (servoNumber == 1) {

myservo1.write (servoPosition);

}

эгер (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

жараксыз doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

эгер (servoNumber == 1) {

if (beat) {beat = 10; // эгер beat = 1 болсо, анда катуу сокку үчүн бир аз көбүрөөк серво кошуңуз

}

myServo (150 + beat, servoNumber); // төмөн

кечиктирүү (delayVal);

myServo (100, servoNumber); // жогору

кечиктирүү (delayVal);

}

эгер (servoNumber == 2) {

if (beat) beat = -10;

myServo (60 + beat, 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);

}

void loop () {

жууп салуу(); // барабанды жок кылуу тартиби

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

}

Сунушталууда: