INHOUDSOPGAWE:

Arduino servotrommasjien: 4 stappe
Arduino servotrommasjien: 4 stappe

Video: Arduino servotrommasjien: 4 stappe

Video: Arduino servotrommasjien: 4 stappe
Video: Использование драйвера шагового двигателя L298N Для управления 4-проводным шаговым двигателем 2024, November
Anonim
Image
Image

Dit is 'n eenvoudige dromasjien of robot met twee mikro-servo- en Arduino Uno-beheerde dromme. Die servo's is gemonteer op 'n L-vormige hakie van hout wat met 4 sterk magnete aan die strik vasgehou word. Die servo-arms is vasgebout aan twee eetstokkies wat as trommelstokke dien. Dit is baie hard, maar nie te hard nie. U kan baie harder treffers kry deur gebruik te maak van standaardgrootte servo's en regte trommelstokke wat 'n bietjie swaarder is. Maar dit benodig ook 'n aparte kragtoevoer vir die servo's. Deur mikro-servo's te gebruik, verskaf die Arduino genoeg stroom om hulle direk van krag te voorsien sonder 'n aparte kragtoevoer.

Die video toon my poging om 'n eenvoudige weergawe van die Wipeout -tromsolo te programmeer. Dit is natuurlik nie die regte 160 slae per minuut nie, maar dit kan maklik verkry word deur nog 'n servo by te voeg, wat baie gaaf sou wees. Ek het nie bereken wat die hoogste bpm is wat met 'n servo verkry kan word nie, en dit verg 'n bietjie vertraging om die drumstick van die geparkeerde posisie na die trommelkop te kry.

Die ritmes wat u kan skep, word slegs deur u verbeelding beperk, en as u 'n musikant is, is die dromasjien 'n meer interessante metgesel om mee te speel as 'n digitale dromasjien.

Die enigste nadeel is die servogeluid wat nie so opvallend is nie, alhoewel die klank van die kamera dit opmerklik opneem.

Stap 1: Bou die servo -houer

Bou die Servo Bracket
Bou die Servo Bracket
Bou die Servo Bracket
Bou die Servo Bracket

Hierdie hakie is gemaak van 'n paar repies stokperdjie -laaghout wat ek byderhand gehad het. Ek het 'n L-vorm geskep deur twee stukke met 'n metaal L-hakie vasgebout te maak. Daarna is 'n klein blok hout aan die boonste strook vasgeplak om die twee servo's vas te hou.

Ek het twee handige servo -hakies gehad wat ek aan die blok hout vasgeskroef het.

Ek het 4 neodymiummagnete gebruik om die hakie aan die vangstrom vas te hou.

Stap 2: Draai die servo's na die Arduino Uno

Dra die servo's na die Arduino Uno
Dra die servo's na die Arduino Uno

Die servos vcc (middelste draad) gaan na die Arduino 5 v penne.

Die gronddrade na Arduino -grond.

Die seindrade gaan na penne 6 en 7.

'N Servo -skild sal dit nog makliker maak as u een het.

Stap 3: Arduino -kode …

Hieronder is die eenvoudige skets om Wipeout te speel. U hoef net die servoposisies vir u spesifieke opstelling aan te pas.

Hê pret!

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

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

#sluit "servo.h" in

// servodrummer Jim Demello Junie 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

as (servoNumber == 1) {

myservo1.write (servoPosition);

}

as (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

as (servoNumber == 1) {

as (maat) {maat = 10; // as beat = 1, voeg nog 'n bietjie servo by vir 'n sterker stamp

}

myServo (150 + maatslag, servoNommer); // af

vertraging (delayVal);

myServo (100, servoNumber); // op

vertraging (delayVal);

}

as (servoNumber == 2) {

as (klop) klop = -10;

myServo (60 + maatslag, servoNommer); // af

vertraging (delayVal);

myServo (80, servoNumber); // op

vertraging (delayVal);

}

}

leemte opstelling ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // plak die servo op pen 9 aan die servo -voorwerp

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // plak die servo op pen 9 aan die servo -voorwerp

myservo2.write (90);

}

leemte -lus () {

wipeout (); // wipeout trommelroetine

// doOneEighthNote (2, 0);

vertraging (40);

}

ongeldig wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // eerste parm is servo nommer en tweede parm is beat (1 = beat, 0 = no beat)

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

}

Aanbeveel: