Kazalo:

Servo bobnasti stroj Arduino: 4 koraki
Servo bobnasti stroj Arduino: 4 koraki

Video: Servo bobnasti stroj Arduino: 4 koraki

Video: Servo bobnasti stroj Arduino: 4 koraki
Video: Stroj za brtvljenje limenki servo motora,automatski stroj za šivanje metalnih limenki 2024, November
Anonim
Image
Image

To je preprost bobnarski stroj ali robot z dvema mikroservoma in Arduino Uno. Servomotorji so nameščeni na lesenem nosilcu v obliki črke L, ki je pritrjen na boben s 4 močnimi magneti. Servoroči so pritrjeni na dve palčki, ki služita kot bobnaste palice. Je precej glasen, vendar ne preglasen. Mnogo glasnejše zadetke bi lahko dosegli z uporabo servomotorjev standardne velikosti in pravih bobnastih palic, ki so precej težje. Toda to bi zahtevalo tudi ločeno napajanje za servomotorje. Z uporabo mikro servomotorjev Arduino napaja dovolj toka, da jih napaja neposredno brez ločenega napajanja.

Video prikazuje moj poskus programiranja preproste različice solo bobna Wipeout. Seveda ni pri pravih 160 utripih na minuto, vendar bi to zlahka dobili, če bi dodali še en servo, kar bi bilo zelo kul. Nisem izračunal, kakšen je najvišji utrip, ki ga lahko dobimo s pomočjo servomotorja, in zahteva nekaj zamika pri prestavljanju palice iz parkiranega položaja na glavo bobna.

Ritme, ki jih lahko ustvarite, omejuje le vaša domišljija, bobnarski stroj pa je bolj zanimiv spremljevalec za igranje kot digitalni bobnarski stroj, če ste glasbenik.

Edina slaba stran je servo hrup, ki v resnici ni tako opazen, čeprav se zdi, da ga zvok fotoaparata opazno opazi.

1. korak: Zgradite servo nosilec

Zgradite servo nosilec
Zgradite servo nosilec
Zgradite servo nosilec
Zgradite servo nosilec

Ta nosilec je narejen iz nekaj trakov vezane plošče za hobije, ki sem jih imel pri roki. Obliko L sem ustvaril tako, da sem dva kosa pritrdila skupaj s kovinskim L-nosilcem. Nato je bil na zgornji trak zlepljen majhen blok lesa, ki je držal dva servomotorja.

Imel sem dva priročna servo nosilca, ki sem jih privijal na les.

Uporabil sem 4 neodimske magnete za držanje nosilca na bobnu.

Korak: Priključite servomotorje na Arduino Uno

Priključite servomotorje na Arduino Uno
Priključite servomotorje na Arduino Uno

Servos vcc (srednja žica) gre na zatiče Arduino 5 v.

Ozemljitvene žice na ozemljitev Arduino.

Signalne žice gredo na nožici 6 in 7.

Servo ščit bi še olajšal, če ga imate.

3. korak: Arduino koda …

Spodaj je preprosta skica za predvajanje Wipeout. Morate samo prilagoditi položaje servo za vaše posebne nastavitve.

Zabavaj se!

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

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

#include "servo.h"

// servo bobnar Jim Demello junij 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

if (številka servo == 1) {

myservo1.write (servoPosition);

}

if (številka servo == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

if (številka servo == 1) {

če (utrip) {utrip = 10; // če je beat = 1, dodajte še malo več servo za močnejši udarec

}

myServo (150 + utripov, številka servo); // dol

zakasnitev (delayVal);

myServo (100, servoNumber); // gor

zakasnitev (delayVal);

}

if (številka servo == 2) {

če je (utrip) utrip = -10;

myServo (60 + utrip, številka servo); // dol

zakasnitev (delayVal);

myServo (80, servoNumber); // gor

zakasnitev (delayVal);

}

}

void setup ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // pritrdi servo na zatiču 9 na servo objekt

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // pritrdi servo na pin 9 na servo objekt

myservo2.write (90);

}

void loop () {

wipeout (); // brisanje rutine bobna

// doOneEighthNote (2, 0);

zamuda (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // prvi parm je servo številka, drugi parm pa utrip (1 = utrip, 0 = brez utripa)

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

}

Priporočena: