Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
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
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
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);
}