Cuprins:

Mașină de tambur servo Arduino: 4 pași
Mașină de tambur servo Arduino: 4 pași

Video: Mașină de tambur servo Arduino: 4 pași

Video: Mașină de tambur servo Arduino: 4 pași
Video: Arduino Mega and 3 stepper motors. 2024, Iulie
Anonim
Image
Image

Acesta este un robot simplu cu două micro-servo și Arduino Uno controlat. Servo-urile sunt montate pe un suport de lemn în formă de L care este ținut de tamburul cu 4 magneți puternici. Brațele servo sunt înșurubate la două bețișoare care servesc drept tobe. Este destul de tare, dar nu prea tare. Lovituri mult mai puternice ar putea fi obținute folosind servome de dimensiuni standard și tobe verzi, care sunt destul de grele. Dar asta ar necesita și o sursă de alimentare separată pentru servomotoare. Folosind micro-servo-uri Arduino furnizează suficient curent pentru a le alimenta direct fără o sursă de alimentare separată.

Videoclipul arată încercarea mea de a programa o versiune simplă a tamburului Wipeout solo. Desigur, nu este la 160 de bătăi pe minut, dar asta ar putea fi obținut cu ușurință adăugând un alt servo care ar fi destul de cool. Nu am calculat care sunt bpm-urile superioare care pot fi obținute utilizând un servo și necesită o oarecare întârziere pentru a obține bețica din poziția sa de parcare până la capul tobei.

Ritmurile pe care le puteți crea sunt limitate doar de imaginația dvs., iar toba este un partener mai interesant de jucat decât o mașină de tobe digitală, dacă sunteți muzician.

Singurul dezavantaj este zgomotul servo, care nu este chiar atât de vizibil, deși sunetul camerei pare să-l capteze destul de notabil.

Pasul 1: Construiți Servo Bracket

Construiți Servo Bracket
Construiți Servo Bracket
Construiți Servo Bracket
Construiți Servo Bracket

Această paranteză este realizată din niște benzi de placaj hobby pe care le aveam la îndemână. Am creat o formă de L prin șurubarea a două piese împreună cu un suport de metal L. Apoi, un mic bloc de lemn a fost lipit de banda superioară pentru a ține cele două servouri.

Aveam două brațe servo la îndemână pe care le-am înșurubat la blocul de lemn.

Am folosit 4 magneți de neodim pentru a ține consola de tambur.

Pasul 2: conectați Servo-urile la Arduino Uno

Conectați Servo-urile la Arduino Uno
Conectați Servo-urile la Arduino Uno

Servoarele vcc (firul de mijloc) se îndreaptă către pinii Arduino 5 v.

Pământul se conectează la pământul Arduino.

Firele de semnal merg la pinii 6 și 7.

Un servo-scut ar face chiar mai ușor dacă aveți unul.

Pasul 3: Cod Arduino …

Mai jos este schița simplă pentru a juca Wipeout. Trebuie doar să ajustați pozițiile servo pentru configurarea dvs. particulară.

A se distra!

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

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

#includeți „servo.h”

// servo baterist Jim Demello iunie 2018

Servo myservo1, myservo2;

int servoPin6 = 6; //servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

if (servoNumber == 1) {

myservo1.write (servoPosition);

}

if (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

if (servoNumber == 1) {

if (beat) {beat = 10; // dacă bate = 1, atunci adaugă un pic mai mult de servo în jos pentru o lovitură mai puternică

}

myServo (150 + beat, servoNumber); //jos

întârziere (delayVal);

myServo (100, servoNumber); // sus

întârziere (delayVal);

}

if (servoNumber == 2) {

dacă (bate) bate = -10;

myServo (60 + beat, servoNumber); //jos

întârziere (delayVal);

myServo (80, servoNumber); // sus

întârziere (delayVal);

}

}

configurare nulă ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // atașează servo pe pinul 9 la obiectul servo

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // atașează servo pe pinul 9 la obiectul servo

myservo2.write (90);

}

bucla nulă () {

nimici(); // rutină tambur wipeout

// doOneEighthNote (2, 0);

întârziere (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // primul parm este numărul servo și al doilea parm este beat (1 = beat, 0 = fără 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);

}

Recomandat: