Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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
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
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);
}