Innehållsförteckning:

Arduino Servotrummaskin: 4 steg
Arduino Servotrummaskin: 4 steg

Video: Arduino Servotrummaskin: 4 steg

Video: Arduino Servotrummaskin: 4 steg
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Juli
Anonim
Image
Image

Detta är en enkel två-mikro-servo och Arduino Uno-styrd trummaskin eller robot. Servon är monterade på en L-formad träfäste som hålls vid virveltrumman med 4 starka magneter. Servoarmarna är fastskruvade på två ätpinnar som fungerar som trumpinnar. Det är ganska högt men inte för högt. Mycket starkare träffar kunde erhållas med hjälp av servostor i standardstorlek och riktiga trumstickor som är ganska mycket tyngre. Men det skulle också kräva en separat strömförsörjning för servona. Genom att använda mikroservos levererar Arduino tillräckligt med ström för att driva dem direkt utan separat strömförsörjning.

Videon visar mitt försök att programmera en enkel version av Wipeout trumsolo. Naturligtvis är det inte i verkliga 160 slag per minut, men det kan lätt uppnås genom att lägga till en annan servo som skulle vara ganska cool. Jag har inte beräknat vad det bästa bpm som kan erhållas med hjälp av en servo och det kräver viss fördröjning för att få trumman från sitt parkerade läge till trumhuvudet.

Rytmerna du kan skapa begränsas bara av din fantasi och trummaskinen är en mer intressant följeslagare att spela med än en digital trummaskin, om du är musiker.

Den enda nackdelen är servoljudet som inte är så märkbart även om kameraljudet verkar ta upp det ganska anmärkningsvärt.

Steg 1: Bygg servofästet

Bygg servobeslaget
Bygg servobeslaget
Bygg servobeslaget
Bygg servobeslaget

Detta fäste är tillverkat av några remsor av hobbyplywood som jag hade till hands. Jag skapade en L-form genom att skruva ihop två bitar med en metall-L-fäste. Sedan limmades ett litet träblock på den övre remsan för att hålla de två servon.

Jag hade två praktiska servofästen som jag skruvade fast i träklossen.

Jag använde 4 neodymmagneter för att hålla fästet vid virveltrumman.

Steg 2: Koppla servon till Arduino Uno

Koppla servon till Arduino Uno
Koppla servon till Arduino Uno

Servos vcc (mitttråd) går till Arduino 5 v -stiften.

Marktrådarna till Arduino -marken.

Signaltrådarna går till stift 6 och 7.

En servosköld skulle göra det ännu enklare om du har en.

Steg 3: Arduino -kod …

Nedan är den enkla skissen att spela Wipeout. Du behöver bara justera servopositionerna för just din inställning.

Ha så kul!

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

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

#inkludera "servo.h"

// servotrummare Jim Demello juni 2018

Servo myservo1, myservo2;

int servoPin6 = 6; //servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

if (servoNumber == 1) {

myservo1.write (servoPosition);

}

if (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

if (servoNumber == 1) {

om (beat) {beat = 10; // om beat = 1 lägg sedan till lite mer servo ner för starkare dunk

}

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

fördröjning (delayVal);

myServo (100, servoNumber); // upp

fördröjning (delayVal);

}

if (servoNumber == 2) {

om (beat) beat = -10;

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

fördröjning (delayVal);

myServo (80, servoNumber); // upp

fördröjning (delayVal);

}

}

void setup ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // fäster servon på stift 9 på servoobjektet

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // fäster servon på stift 9 på servoobjektet

myservo2.write (90);

}

void loop () {

torka bort(); // wipeout trumrutin

// doOneEighthNote (2, 0);

fördröjning (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // första parm är servonummer och andra parm är beat (1 = slag, 0 = inget slag)

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

}

Rekommenderad: