Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Ovo je jednostavan dva mikro-servo i Arduino Uno upravljani bubanj ili robot. Servomotori su montirani na drveni držač u obliku slova L koji se drži za snare bubanj s 4 snažna magneta. Servo krakovi su pričvršćeni vijcima na dvije štapiće koji služe kao štapići za bubanj. Prilično je glasno, ali ne preglasno. Mnogo glasniji hitovi mogli bi se postići korištenjem servo servera standardnih veličina i pravih bubnjeva 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 za izravno napajanje bez zasebnog napajanja.
Video prikazuje moj pokušaj programiranja jednostavne verzije solo bubnja Wipeout. Naravno da 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 okretaja u minuti može postići korištenjem servo uređaja i zahtijeva određeno kašnjenje u prebacivanju palice s parkiranog položaja na glavu bubnja.
Ritmovi koje možete stvoriti ograničeni su samo vašom maštom, a bubnjarski stroj zanimljiviji je suigrač za sviranje od digitalnog bubnjarskog stroja, ako ste glazbenik.
Jedini nedostatak je servo buka koja nije toliko uočljiva, iako se čini da je zvuk kamere prilično uočljiv.
Korak 1: Izgradite servo nosač
Ovaj nosač izrađen je od nekih traka šperploče za hobije koje sam imao pri ruci. Napravio sam L-oblik spajanjem dva komada zajedno s metalnim L-nosačem. Zatim je mali drveni blok zalijepljen na gornju traku kako bi držao dva serva.
Imao sam dva zgodna servo držača koje sam pričvrstio na drveni blok.
Koristio sam 4 neodimijska magneta za držanje nosača na dobošu.
Korak 2: Priključite 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še posebno postavljanje.
Zabavi se!
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "servo.h"
// servo bubnjar Jim Demello lipanj 2018
Servo myservo1, myservo2;
int servoPin6 = 6; //servo
int servoPin7 = 7;
void myServo (int servoPosition, int servoNumber) {
if (broj serva == 1) {
myservo1.write (servoPosition);
}
if (broj serva == 2) {
myservo2.write (servoPosition);
}
}
void doOneEighthNote (int servoNumber, int beat) {
int delayVal = 60;
if (broj serva == 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 serva == 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}
obrisati(); // 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);
}