Indholdsfortegnelse:

Arduino servotromle: 4 trin
Arduino servotromle: 4 trin
Anonim
Image
Image

Dette er en simpel to mikro-servo og Arduino Uno kontrolleret tromlemaskine eller robot. Servoerne er monteret på en L-formet beslag af træ, der holdes fast på lilletrommen med 4 stærke magneter. Servoarmene er boltet til to spisepinde, der fungerer som tromlepinde. Det er ret højt, men ikke for højt. Der kunne opnås meget højere hits ved at bruge servoer i standardstørrelse og rigtige trommestikker, som er en del tungere. Men det ville også kræve en separat strømforsyning til servoerne. Ved at bruge mikroservoer leverer Arduino nok strøm til at drive dem direkte uden en separat strømforsyning.

Videoen viser mit forsøg på at programmere en simpel version af Wipeout trommesolo. Det er naturligvis ikke ved de rigtige 160 slag i minuttet, men det kan let opnås ved at tilføje en anden servo, som ville være ret cool. Jeg har ikke beregnet, hvad den bedste bpm, der kan opnås ved hjælp af en servo, og det kræver en vis forsinkelse i at få tromlen fra sin parkerede position til tromlehovedet.

De rytmer, du kan skabe, er kun begrænset af din fantasi, og trommemaskinen er en mere interessant ledsager at lege med end en digital trommemaskine, hvis du er musiker.

Den eneste ulempe er servostøj, som egentlig ikke er så mærkbar, selvom kameraets lyd ser ud til at opfange det ganske bemærkelsesværdigt.

Trin 1: Byg servobeslaget

Byg servobeslaget
Byg servobeslaget
Byg servobeslaget
Byg servobeslaget

Dette beslag er lavet af nogle strimler af hobbyfiner, jeg havde ved hånden. Jeg lavede en L-form ved at boltede to stykker sammen med et metal L-beslag. Derefter blev en lille træblok limet til den øverste strimmel for at holde de to servoer.

Jeg havde to praktiske servobeslag, som jeg skruede til træblokken.

Jeg brugte 4 neodymmagneter til at holde beslaget til lilletrommen.

Trin 2: Kør servoerne til Arduino Uno

Kør servoerne til Arduino Uno
Kør servoerne til Arduino Uno

Servos vcc (midterkabel) går til Arduino 5 v benene.

Jordtrådene til Arduino -jorden.

Signaltrådene går til ben 6 og 7.

Et servoskjold ville gøre det endnu lettere, hvis du har et.

Trin 3: Arduino -kode …

Nedenfor er den enkle skitse til at spille Wipeout. Du skal bare justere servopositionerne til din særlige opsætning.

Hav det sjovt!

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

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

#inkluder "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, så tilføj lidt mere servo ned for stærkere dunke

}

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

forsinkelse (delayVal);

myServo (100, servoNumber); // op

forsinkelse (delayVal);

}

hvis (servoNumber == 2) {

hvis (beat) beat = -10;

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

forsinkelse (delayVal);

myServo (80, servoNumber); // op

forsinkelse (delayVal);

}

}

ugyldig opsætning ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // fastgør servoen på pin 9 til servoobjektet

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // fastgør servoen på pin 9 til servoobjektet

myservo2.write (90);

}

void loop () {

udrydde(); // wipeout tromme rutine

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

}

Anbefalede: