Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
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č
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
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);
}