Inhaltsverzeichnis:

Arduino Servo Drum Machine - Gunook
Arduino Servo Drum Machine - Gunook

Video: Arduino Servo Drum Machine - Gunook

Video: Arduino Servo Drum Machine - Gunook
Video: Arduino Servo Drum Machine 2024, November
Anonim
Image
Image

Dies ist eine einfache Zwei-Mikro-Servo- und Arduino-Uno-gesteuerte Drum-Machine oder ein Roboter. Die Servos sind auf einer L-förmigen Halterung aus Holz montiert, die mit 4 starken Magneten an der Snare Drum gehalten wird. Die Servoarme sind mit zwei Essstäbchen verschraubt, die als Drumsticks dienen. Es ist ziemlich laut, aber nicht zu laut. Viel lautere Schläge könnten mit Standard-Servos und echten Drumsticks erzielt werden, die um einiges schwerer sind. Das würde aber auch eine separate Stromversorgung für die Servos erfordern. Durch die Verwendung von Mikroservos liefert der Arduino genug Strom, um sie ohne separates Netzteil direkt mit Strom zu versorgen.

Das Video zeigt meinen Versuch, eine einfache Version des Wipeout-Schlagzeugsolos zu programmieren. Natürlich sind es nicht die echten 160 Schläge pro Minute, aber das könnte leicht durch Hinzufügen eines weiteren Servos erreicht werden, was ziemlich cool wäre. Ich habe nicht berechnet, was die oberen BPM sind, die mit einem Servo erreicht werden können, und es erfordert eine gewisse Verzögerung, um den Trommelstock aus seiner Parkposition zum Trommelfell zu bringen.

Die Rhythmen, die Sie erstellen können, sind nur durch Ihre Vorstellungskraft begrenzt und der Drumcomputer ist ein interessanterer Begleiter als ein digitaler Drumcomputer, wenn Sie ein Musiker sind.

Der einzige Nachteil ist das Servogeräusch, das nicht wirklich wahrnehmbar ist, obwohl das Kameraaudio es ziemlich deutlich aufzunehmen scheint.

Schritt 1: Bauen Sie die Servohalterung

Bauen Sie die Servohalterung
Bauen Sie die Servohalterung
Bauen Sie die Servohalterung
Bauen Sie die Servohalterung

Diese Halterung besteht aus einigen Streifen Hobbysperrholz, die ich zur Hand hatte. Ich habe eine L-Form erstellt, indem ich zwei Teile mit einer Metall-L-Halterung verschraubt habe. Dann wurde ein kleiner Holzblock auf die obere Leiste geklebt, um die beiden Servos zu halten.

Ich hatte zwei praktische Servohalterungen, die ich an den Holzblock geschraubt habe.

Ich habe 4 Neodym-Magnete verwendet, um die Halterung an der Snare-Drum zu halten.

Schritt 2: Verdrahten Sie die Servos mit dem Arduino Uno

Verdrahten Sie die Servos mit dem Arduino Uno
Verdrahten Sie die Servos mit dem Arduino Uno

Die Servos vcc (mittlerer Draht) gehen zu den Arduino 5 V-Pins.

Die Erdungsdrähte zur Arduino-Masse.

Die Signalleitungen gehen zu den Pins 6 und 7.

Ein Servoschild würde es noch einfacher machen, wenn Sie einen haben.

Schritt 3: Arduino-Code…

Unten ist die einfache Skizze, um Wipeout zu spielen. Sie müssen nur die Servopositionen für Ihr spezielles Setup anpassen.

Spaß haben!

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

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

#include "servo.h"

// Servo-Schlagzeuger Jim Demello Juni 2018

Servo myservo1, myservo2;

int servoPin6 = 6; //Servo

int servoPin7 = 7;

void myServo(int servoPosition, int servoNumber) {

if (servoNummer == 1) {

myservo1.write (servoPosition);

}

if (servoNummer == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote(int servoNumber, int beat) {

int delayVal = 60;

if (servoNummer == 1) {

wenn (Schlag) {Schlag = 10; // wenn beat = 1 dann füge etwas mehr Servo nach unten für einen stärkeren Schlag hinzu

}

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

Verzögerung (Verzögerungswert);

myServo(100, servoNumber); // nach oben

Verzögerung (Verzögerungswert);

}

if (servoNummer == 2) {

wenn (Beat) Beat = -10;

myServo (60 + Schlag, Servonummer); //Nieder

Verzögerung (Verzögerungswert);

myServo (80, servoNumber); // nach oben

Verzögerung (Verzögerungswert);

}

}

Void-Setup ()

{

// Serial.begin (9600);

myservo1.attach(servoPin6, 1000, 2000); // befestigt das Servo an Pin 9 an das Servoobjekt

myservo1.write(100);

myservo2.attach(servoPin7, 1000, 2000); // befestigt das Servo an Pin 9 an das Servoobjekt

myservo2.write(90);

}

Leere Schleife () {

auslöschen(); // Drum-Routine löschen

//doOneEighthNote(2, 0);

Verzögerung (40);

}

Leere Auslöschung () {

doOneEighthNote(2, 1); doOneEighthNote(1, 0); doOneEighthNote(2, 0); doOneEighthNote(1, 0); // erster Parameter ist die Servonummer und der zweite Parameter ist Beat (1 = Beat, 0 = kein 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);

}

Empfohlen: