Innholdsfortegnelse:

Arduino Servo Trommemaskin: 4 trinn
Arduino Servo Trommemaskin: 4 trinn

Video: Arduino Servo Trommemaskin: 4 trinn

Video: Arduino Servo Trommemaskin: 4 trinn
Video: Простая ритм-машина🥁 на основе двух транзисторов (своими руками) 2024, Juli
Anonim
Image
Image

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

Bygg Servo Bracket
Bygg Servo Bracket
Bygg Servo Bracket
Bygg Servo Bracket

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

Koble servoene til Arduino Uno
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);

}

Anbefalt: