Sadržaj:

Arduino Servo bubanj mašina: 4 koraka
Arduino Servo bubanj mašina: 4 koraka

Video: Arduino Servo bubanj mašina: 4 koraka

Video: Arduino Servo bubanj mašina: 4 koraka
Video: Управление серводвигателем с помощью потенциометра с помощью Arduino 2024, Juli
Anonim
Image
Image

Ovo je jednostavna dva mikro-servo i Arduino Uno upravljana bubnjarska mašina ili robot. Servo pogoni su montirani na drveni držač u obliku slova L koji je pričvršćen za doboš pomoću 4 snažna magneta. Servo krakovi su pričvršćeni vijcima na dvije štapiće koji služe kao štapići za bubnjeve. Prilično je glasno, ali ne preglasno. Mnogo glasniji hitovi mogli bi se postići korištenjem servo servera standardne veličine i pravih štapova bubnja koji su prilično teži. Ali to bi također zahtijevalo zasebno napajanje za servomotore. Koristeći mikro-servosisteme, Arduino isporučuje dovoljno struje da ih napaja direktno bez zasebnog napajanja.

Video prikazuje moj pokušaj programiranja jednostavne verzije Wipeout solo bubnja. Naravno, to nije stvarnih 160 otkucaja u minuti, ali to bi se lako moglo dobiti dodavanjem još jednog servo -a, što bi bilo super. Nisam izračunao koji se najveći broj obrtaja u minuti može postići pomoću servo uređaja i zahtijeva neko kašnjenje pri prebacivanju štapa s parkiranog položaja na glavu bubnja.

Ritmovi koje možete stvoriti ograničeni su samo vašom maštom, a bubnjarska mašina zanimljiviji je saputnik za igru nego digitalna bubnjarska mašina, ako ste muzičar.

Jedina mana je servo buka koja nije toliko primjetna, iako zvuk kamere čini se da je to prilično zapaženo.

Korak 1: Izgradite servo nosač

Napravite servo nosač
Napravite servo nosač
Napravite servo nosač
Napravite servo nosač

Ovaj nosač je napravljen od nekih traka šperploče za hobi koje sam imao pri ruci. Napravio sam L-oblik spajanjem dva komada zajedno s metalnim L-držačem. Zatim je mali drveni blok zalijepljen na gornju traku kako bi držao dva servo pogona.

Imao sam dva zgodna servo držača koje sam pričvrstio za drveni blok.

Koristio sam 4 neodimijumska magneta za držanje držača na malom bubnju.

Korak 2: Priključite servosisteme na Arduino Uno

Spojite servosisteme na Arduino Uno
Spojite servosisteme na Arduino Uno

Servos vcc (srednja žica) ide na Arduino 5 v pinove.

Žice za uzemljenje na Arduino uzemljenje.

Signalne žice idu na pinove 6 i 7.

Servo štit bi vam dodatno olakšao ako ga imate.

Korak 3: Arduino kod…

Ispod je jednostavna skica za reprodukciju Wipeout -a. Morate samo prilagoditi položaje serva za vašu određenu postavku.

Zabavi se!

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

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

#include "servo.h"

// servo bubnjar Jim Demello jun 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

if (broj servo == 1) {

myservo1.write (servoPosition);

}

if (broj servo == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

if (broj servo == 1) {

if (beat) {beat = 10; // ako je beat = 1, dodajte još malo servo za jači udarac

}

myServo (150 + otkucaja, broj serva); // dolje

kašnjenje (delayVal);

myServo (100, broj serva); // gore

kašnjenje (delayVal);

}

if (broj servo == 2) {

if (beat) beat = -10;

myServo (60 + otkucaja, broj serva); // dolje

kašnjenje (delayVal);

myServo (80, broj serva); // gore

kašnjenje (delayVal);

}

}

void setup ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // priključuje servo na pin 9 na servo objekt

myservo1.write (100);

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

myservo2.write (90);

}

void loop () {{100} {101}

izbrisati(); // brisanje rutine bubnja

// doOneEighthNote (2, 0);

kašnjenje (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // prvi parm je servo broj, a drugi parm je bitan (1 = otkucaj, 0 = bez otkucaja)

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

}

Preporučuje se: