Përmbajtje:

Arduino Servo Drum Machine: 4 Hapa
Arduino Servo Drum Machine: 4 Hapa

Video: Arduino Servo Drum Machine: 4 Hapa

Video: Arduino Servo Drum Machine: 4 Hapa
Video: Controlling 32 Servo Using PCA9685 and Arduino: V3 2024, Korrik
Anonim
Image
Image

Kjo është një makinë e thjeshtë daulleje me dy mikro-servo dhe Arduino Uno ose robot. Servot janë montuar në një kllapa druri në formë L që mbahet në daullen e kurthit me 4 magnetë të fortë. Krahët servo janë të lidhur në dy shkopinj të cilët shërbejnë si daulle. Quiteshtë mjaft e zhurmshme por jo shumë e zhurmshme. Goditje shumë më të forta mund të merren duke përdorur servos të madhësisë standarde dhe shkopinj të vërtetë daulle të cilët janë pak më të rëndë. Por kjo gjithashtu do të kërkonte një furnizim të veçantë të energjisë për servos. Duke përdorur mikro-servos, Arduino furnizon rrymë të mjaftueshme për t'i furnizuar ato drejtpërdrejt pa një furnizim me energji të veçantë.

Videoja tregon përpjekjen time për të programuar një version të thjeshtë të solos së daulles Wipeout. Sigurisht që nuk është në 160 rrahjet e vërteta në minutë, por kjo mund të merret lehtësisht duke shtuar një servo tjetër e cila do të ishte mjaft e lezetshme. Unë nuk e kam llogaritur se cila është rrahjet më të larta në minutë që mund të merren duke përdorur një servo dhe kërkon një vonesë në marrjen e shkopit nga pozicioni i tij i parkuar në kokën e daulles.

Ritmet që mund të krijoni janë të kufizuara vetëm nga imagjinata juaj dhe makina e daulleve është një shoqëruese më interesante për të luajtur me të sesa një makinë daulle dixhitale, nëse jeni muzikant.

E vetmja pengesë është zhurma servo e cila nuk është aq e dukshme edhe pse audio kamera duket se e kap atë në mënyrë të konsiderueshme.

Hapi 1: Ndërtoni kllapa Servo

Ndërtoni kllapa Servo
Ndërtoni kllapa Servo
Ndërtoni kllapa Servo
Ndërtoni kllapa Servo

Kjo kllapa është bërë nga disa shirita kompensatë hobi që kisha në dorë. Kam krijuar një formë L duke i lidhur dy pjesë së bashku me një kllapa metalike L. Pastaj një bllok i vogël druri ishte ngjitur në shiritin e sipërm për të mbajtur dy servos.

Unë kisha dy kllapa servo të dobishme të cilat i vidhosa në bllokun e drurit.

Kam përdorur 4 magnet neodymium për të mbajtur kllapën në daullen e kurthit.

Hapi 2: Lidhni Servos në Arduino Uno

Lidhni Servos me Arduino Uno
Lidhni Servos me Arduino Uno

Servos vcc (tela e mesme) shkon te kunjat Arduino 5 v.

Telat Ground në tokën Arduino.

Telat e sinjalit shkojnë në kunjat 6 dhe 7.

Një mburojë servo do ta bënte edhe më të lehtë nëse keni një të tillë.

Hapi 3: Kodi Arduino…

Më poshtë është skica e thjeshtë për të luajtur Wipeout. Thjesht duhet të rregulloni pozicionet servo për konfigurimin tuaj të veçantë.

Argëtohu!

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

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

#përfshi "servo.h"

// bateristi servo Jim Demello qershor 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

nëse (servoNumber == 1) {

myservo1.write (servoPosition);

}

nëse (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int vonesëVal = 60;

nëse (servoNumber == 1) {

nëse (mundi) {mundi = 10; // nëse rrah = 1 atëherë shtoni pak më shumë servo poshtë për goditje më të fortë

}

myServo (150 + beat, servoNumber); // poshtë

vonesë (vonesëVal);

myServo (100, servoNumber); // lart

vonesë (vonesëVal);

}

nëse (servoNumber == 2) {

nëse (mundi) rrah = -10;

myServo (60 + rrahje, servoNumber); // poshtë

vonesë (vonesëVal);

myServo (80, servoNumber); // lart

vonesë (vonesëVal);

}

}

void setup ()

{

// Serial.filloj (9600);

myservo1.attach (servoPin6, 1000, 2000); // bashkon servon në pin 9 me objektin servo

myservo1.shkruaj (100);

myservo2.attach (servoPin7, 1000, 2000); // i bashkon servo -në pin 9 me objektin servo

myservo2.shkruaj (90);

}

lak void () {

Fshij(); // rutina e daulles së fshirjes

// doOneEighthNote (2, 0);

vonesa (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // parma e parë është numri servo dhe parma e dytë është rrahur (1 = rrahje, 0 = pa rrahje)

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

}

Recommended: