Turinys:

„Arduino“servo būgno mašina: 4 žingsniai
„Arduino“servo būgno mašina: 4 žingsniai

Video: „Arduino“servo būgno mašina: 4 žingsniai

Video: „Arduino“servo būgno mašina: 4 žingsniai
Video: Уроки Arduino - управление сервомашинкой 2024, Lapkritis
Anonim
Image
Image

Tai paprasta dviejų mikro servo ir „Arduino Uno“valdoma būgno mašina arba robotas. Servos montuojamos ant L formos medinio laikiklio, kuris yra pritvirtintas prie spąstų būgno su 4 stipriais magnetais. Servo rankenos yra prisukamos prie dviejų lazdelių, kurios tarnauja kaip būgno lazdelės. Jis gana garsus, bet ne per garsus. Daug garsesnius smūgius būtų galima gauti naudojant standartinio dydžio servo ir tikras būgno lazdeles, kurios yra šiek tiek sunkesnės. Tačiau tam taip pat reikės atskiro servo maitinimo šaltinio. Naudodamas „mikro-servos“, „Arduino“tiekia pakankamai srovės, kad galėtų juos tiesiogiai maitinti be atskiro maitinimo šaltinio.

Vaizdo įraše parodytas mano bandymas užprogramuoti paprastą „Wipeout“būgno solo versiją. Žinoma, tai nėra tikrasis 160 dūžių per minutę, tačiau tai būtų galima lengvai gauti pridedant kitą servo, kuris būtų gana kietas. Aš neapskaičiavau, koks yra didžiausias bpm, kurį galima gauti naudojant servo, ir tam reikia šiek tiek atidėti būgno lazdelės perkėlimą iš stovėjimo padėties į būgno galvutę.

Jūsų sukurtus ritmus riboja tik jūsų vaizduotė, o būgnų mašina yra įdomesnis kompanionas žaisti nei skaitmeninė būgnų mašina, jei esate muzikantas.

Vienintelis trūkumas yra servo triukšmas, kuris iš tikrųjų nėra toks pastebimas, nors atrodo, kad fotoaparato garsas jį labai sugeria.

1 žingsnis: sukurkite servo laikiklį

Sukurkite servo laikiklį
Sukurkite servo laikiklį
Sukurkite servo laikiklį
Sukurkite servo laikiklį

Šis laikiklis yra pagamintas iš kai kurių pomėgių faneros juostelių, kurias turėjau po ranka. Aš sukūriau L formą, pritvirtindamas dvi dalis kartu su metaliniu L formos laikikliu. Tada prie viršutinės juostos buvo priklijuotas nedidelis medžio luitas, kad būtų galima laikyti du servo servus.

Turėjau du patogius servo laikiklius, kuriuos prisukau prie medžio bloko.

Aš naudoju 4 neodimio magnetus, kad laikyčiau laikiklį prie spąstų.

2 žingsnis: Prijunkite „Servos“prie „Arduino Uno“

Prijunkite „Servos“prie „Arduino Uno“
Prijunkite „Servos“prie „Arduino Uno“

Servos vcc (vidurinė viela) eina į „Arduino 5 v“kaiščius.

Įžeminimo laidai į Arduino įžeminimą.

Signalo laidai eina į 6 ir 7 kaiščius.

Servo skydas dar labiau palengvintų, jei tokį turite.

3 žingsnis: „Arduino“kodas …

Žemiau yra paprastas eskizas, kaip žaisti „Wipeout“. Jums tereikia pakoreguoti servo pozicijas pagal konkrečią sąranką.

Pasilinksmink!

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

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

#įtraukti „servo.h“

// servo būgnininkas Jim Demello 2018 m. birželio mėn

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

jei (servoNumber == 1) {

myservo1.write (servoPosition);

}

if (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

jei (servoNumber == 1) {

jei (mušti) {mušti = 10; // jei mušti = 1, tada pridėkite šiek tiek daugiau servo žemyn, kad būtų stipresnis smūgis

}

myServo (150 + ritmas, servoNumber); // žemyn

uždelsimas (delayVal);

myServo (100, servoNumber); // aukštyn

uždelsimas (delayVal);

}

if (servoNumber == 2) {

jei (mušti) mušti = -10;

myServo (60 + ritmas, servoNumber); // žemyn

uždelsimas (delayVal);

myServo (80, servoNumber); // aukštyn

uždelsimas (delayVal);

}

}

negaliojanti sąranka ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // prie servo objekto pritvirtina 9 kaiščio servo

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // prie servo objekto pritvirtina 9 kaiščio servo

myservo2.write (90);

}

void loop () {

nuvalyti (); // wipeout būgno rutina

// doOneEighthNote (2, 0);

vėlavimas (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // pirmasis parmas yra servo numeris, o antrasis - mušamas (1 = mušimas, 0 = be ritmo)

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

}

Rekomenduojamas: