Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Dette er en enkel to mikro-servo og Arduino Uno kontrollert trommemaskin eller robot. Servoene er montert på en L-formet brakett av tre som holdes fast på skarptrommelen med 4 sterke magneter. Servoarmene er boltet til to spisepinner som fungerer som trommelstikker. Det er ganske høyt, men ikke for høyt. Mye høyere treff kan oppnås ved å bruke servoer i standardstørrelse og ekte trommelstikker som er ganske mye tyngre. Men det vil også kreve en separat strømforsyning for servoene. Ved å bruke mikroservoer leverer Arduino nok strøm til å drive dem direkte uten en separat strømforsyning.
Videoen viser mitt forsøk på å programmere en enkel versjon av Wipeout trommesolo. Selvfølgelig er det ikke de virkelige 160 slagene i minuttet, men det kan lett oppnås ved å legge til en annen servo som ville være ganske kult. Jeg har ikke beregnet hva den øverste bpm som kan oppnås ved å bruke en servo, og det krever litt forsinkelse med å få fat i fatet fra den parkerte posisjonen til trommelhodet.
Rytmene du kan lage er bare begrenset av fantasien din og trommemaskinen er en mer interessant følgesvenn å leke med enn en digital trommemaskin, hvis du er musiker.
Den eneste ulempen er servostøyen som egentlig ikke er så merkbar, selv om kameraets lyd ser ut til å ta den opp ganske bemerkelsesverdig.
Trinn 1: Bygg servobeslaget
Denne braketten er laget av noen strimler av hobbyfiner jeg hadde for hånden. Jeg laget en L-form ved å boltet to stykker sammen med en metall L-brakett. Deretter ble en liten trebit limt til topplisten for å holde de to servoene.
Jeg hadde to hendige servobeslag som jeg skrudde til treblokken.
Jeg brukte 4 neodymmagneter for å holde braketten til virvelstrommen.
Trinn 2: Koble servoene til Arduino Uno
Servos vcc (midtre ledning) går til Arduino 5 v pins.
Ground -ledningene til Arduino -bakken.
Signalledningene går til pinne 6 og 7.
Et servoskjold ville gjøre det enda enklere hvis du har et.
Trinn 3: Arduino -kode …
Nedenfor er den enkle skissen for å spille Wipeout. Du må bare justere servoposisjonene for ditt spesielle oppsett.
Ha det gøy!
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#inkludere "servo.h"
// servotrommeslager Jim Demello juni 2018
Servo myservo1, myservo2;
int servoPin6 = 6; // servo
int servoPin7 = 7;
ugyldig myServo (int servoPosition, int servoNumber) {
hvis (servoNumber == 1) {
myservo1.write (servoPosition);
}
hvis (servoNumber == 2) {
myservo2.write (servoPosition);
}
}
void doOneEighthNote (int servoNumber, int beat) {
int delayVal = 60;
hvis (servoNumber == 1) {
hvis (beat) {beat = 10; // hvis beat = 1 legg deretter til litt mer servo ned for sterkere dunk
}
myServo (150 + beat, servoNumber); //ned
forsinkelse (delayVal);
myServo (100, servoNumber); // opp
forsinkelse (delayVal);
}
hvis (servoNumber == 2) {
hvis (beat) beat = -10;
myServo (60 + beat, servoNumber); //ned
forsinkelse (delayVal);
myServo (80, servoNumber); // opp
forsinkelse (delayVal);
}
}
ugyldig oppsett ()
{
// Serial.begin (9600);
myservo1.attach (servoPin6, 1000, 2000); // fester servoen på pinne 9 til servoobjektet
myservo1.write (100);
myservo2.attach (servoPin7, 1000, 2000); // fester servoen på pinne 9 til servoobjektet
myservo2.write (90);
}
void loop () {
wipeout (); // wipeout trommelrutine
// doOneEighthNote (2, 0);
forsinkelse (40);
}
void wipeout () {
doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // første parm er servonummer og andre parm er 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);
}