Sisällysluettelo:

Arduino Servo -rumpukone: 4 vaihetta
Arduino Servo -rumpukone: 4 vaihetta

Video: Arduino Servo -rumpukone: 4 vaihetta

Video: Arduino Servo -rumpukone: 4 vaihetta
Video: Уроки Arduino - управление сервомашинкой 2024, Marraskuu
Anonim
Image
Image

Tämä on yksinkertainen kaksi mikropalvelua ja Arduino Uno -ohjattu rumpukone tai robotti. Servot on asennettu L-muotoiselle puukannattimelle, jota pidetään virvelissä 4 vahvalla magneetilla. Servovarret on ruuvattu kahteen syömäpuikkoon, jotka toimivat rumpukapuina. Se on melko kovaa, mutta ei liian kovaa. Paljon kovempia osumia voitaisiin saada käyttämällä vakiokokoisia servoja ja todellisia rumputikkuja, jotka ovat melko raskaita. Mutta se vaatisi myös erillisen virtalähteen servoille. Käyttämällä mikro-servoja Arduino syöttää tarpeeksi virtaa, jotta niitä voidaan käyttää suoraan ilman erillistä virtalähdettä.

Video näyttää yritykseni ohjelmoida yksinkertaisen version Wipeout -rumpusoolosta. Tietenkään se ei ole todellisella 160 lyöntiä minuutissa, mutta se voitaisiin helposti saada lisäämällä toinen servo, joka olisi aika siistiä. En ole laskenut, mikä on ylin lyönti minuutissa, joka voidaan saada käyttämällä servoa, ja se vaatii jonkin verran viivettä, kun rumpukapula saadaan pysäköidystä asennostaan rummun päähän.

Luomasi rytmit rajoittuvat vain mielikuvitukseesi ja rumpukone on mielenkiintoisempi kumppani pelata kuin digitaalinen rumpukone, jos olet muusikko.

Ainoa haittapuoli on servomelu, joka ei oikeastaan ole niin havaittavissa, vaikka kameran ääni näyttää saavan sen melko merkittävästi.

Vaihe 1: Rakenna servokiinnike

Rakenna servokiinnike
Rakenna servokiinnike
Rakenna servokiinnike
Rakenna servokiinnike

Tämä kiinnike on valmistettu joistakin harrastevanerinauhoista, jotka minulla oli käsillä. Tein L-muodon ruuvaamalla kaksi kappaletta yhteen metallisella L-kiinnikkeellä. Sitten pieni puupalikka liimattiin yläliuskaan kahden servon pitämiseksi.

Minulla oli kaksi kätevää servokannatinta, jotka ruuvasin puulevyyn.

Käytin 4 neodyymimagneettia pidikkeen kiinnittämiseen virveliin.

Vaihe 2: Kytke servot Arduino Unoon

Kytke servot Arduino Unoon
Kytke servot Arduino Unoon

Servot vcc (keskijohto) menee Arduino 5 v nastoille.

Maadoitusjohdot Arduinon maahan.

Signaalijohdot menevät nastoihin 6 ja 7.

Servosuoja helpottaisi entisestään, jos sinulla on sellainen.

Vaihe 3: Arduino -koodi…

Alla on yksinkertainen luonnos Wipeoutin pelaamiseksi. Sinun tarvitsee vain säätää servoasentoja tiettyyn kokoonpanoon.

Pidä hauskaa!

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

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

#sisältää "servo.h"

// servorumpali Jim Demello kesäkuu 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

jos (servonumero == 1) {

myservo1.write (servoPosition);

}

jos (servonumero == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

jos (servonumero == 1) {

if (beat) {beat = 10; // jos lyönti = 1, lisää hieman servoa alaspäin vahvemman lyönnin aikaansaamiseksi

}

myServo (150 + lyönti, servonumero); //alas

viive (delayVal);

myServo (100, servoNumber); // ylös

viive (delayVal);

}

jos (servonumero == 2) {

jos (beat) beat = -10;

myServo (60 + lyönti, servonumero); //alas

viive (delayVal);

myServo (80, servoNumber); // ylös

viive (delayVal);

}

}

mitätön asennus ()

{

// Sarja.alku (9600);

myservo1.attach (servoPin6, 1000, 2000); // kiinnittää nastan 9 servon servo -objektiin

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // kiinnittää nastan 9 servon servo -objektiin

myservo2.write (90);

}

void loop () {

pyyhi pois(); // pyyhintärumpurutiini

// doOneEighthNote (2, 0);

viive (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // ensimmäinen parmi on servonumero ja toinen parmi on lyöty (1 = lyönti, 0 = ei lyöntiä)

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

}

Suositeltava: