Satura rādītājs:

Arduino servo bungu mašīna: 4 soļi
Arduino servo bungu mašīna: 4 soļi

Video: Arduino servo bungu mašīna: 4 soļi

Video: Arduino servo bungu mašīna: 4 soļi
Video: Amazing arduino project 2024, Novembris
Anonim
Image
Image

Šī ir vienkārša divu mikroservo un Arduino Uno vadīta bungu mašīna vai robots. Servo ir uzstādīti uz L formas koka kronšteina, kas tiek turēts pie cilpas ar 4 spēcīgiem magnētiem. Servo sviras ir pieskrūvētas pie diviem irbulīšiem, kas kalpo kā bungu nūjas. Tas ir diezgan skaļš, bet ne pārāk skaļš. Daudz skaļākus trāpījumus varētu iegūt, izmantojot standarta izmēra servo un īstas bungu nūjas, kas ir nedaudz smagākas. Bet tam būtu nepieciešams arī atsevišķs servo barošanas avots. Izmantojot mikro servos, Arduino piegādā pietiekami daudz strāvas, lai tos darbinātu tieši bez atsevišķa barošanas avota.

Video parāda manu mēģinājumu programmēt vienkāršu Wipeout bungas solo versiju. Protams, tas nav īstais 160 sitienu minūtē, bet to varētu viegli iegūt, pievienojot vēl vienu servo, kas būtu diezgan forši. Es neesmu aprēķinājis, kāds ir augstākais sitiens minūtē, ko var iegūt, izmantojot servo, un tas prasa zināmu aizkavēšanos, lai cilindra stienis tiktu novietots no novietotās pozīcijas uz cilindra galvu.

Ritmus, kurus varat izveidot, ierobežo tikai jūsu iztēle, un bungu mašīna ir interesantāks kompanjons, ar kuru spēlēties, nekā digitālā bungu mašīna, ja esat mūziķis.

Vienīgais trūkums ir servo troksnis, kas patiesībā nav tik pamanāms, lai gan šķiet, ka kameras audio to uztver diezgan ievērojami.

1. darbība: izveidojiet servo kronšteinu

Izveidojiet Servo kronšteinu
Izveidojiet Servo kronšteinu
Izveidojiet Servo kronšteinu
Izveidojiet Servo kronšteinu

Šis kronšteins ir izgatavots no dažām hobija saplākšņa sloksnēm, kas man bija pie rokas. Es izveidoju L formu, pieskrūvējot divus gabalus kopā ar metāla L veida kronšteinu. Pēc tam pie augšējās sloksnes tika pielīmēts neliels koka bluķis, lai turētu abus servos.

Man bija divas parocīgas servo kronšteini, kurus pieskrūvēju pie koka kluča.

Es izmantoju 4 neodīma magnētus, lai noturētu kronšteinu pie cilpas.

2. darbība: pieslēdziet servos Arduino Uno

Pievienojiet servos Arduino Uno
Pievienojiet servos Arduino Uno

Servos vcc (vidējais vads) iet uz Arduino 5 v tapām.

Zemes vadi ar Arduino zemi.

Signāla vadi iet uz 6. un 7. tapu.

Servo vairogs to padarītu vēl vieglāku, ja jums tāds ir.

3. darbība: Arduino kods…

Zemāk ir vienkārša skice Wipeout atskaņošanai. Jums vienkārši jāpielāgo servo pozīcijas konkrētajam iestatījumam.

Izklaidējieties!

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

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

#ietver "servo.h"

// servo bundzinieks Džims Demello, 2018. gada jūnijs

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

ja (servoNumber == 1) {

myservo1.write (servoPosition);

}

ja (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

ja (servoNumber == 1) {

ja (pārspēt) {pārspēt = 10; // ja sitiens = 1, tad pievienojiet nedaudz vairāk servo uz leju, lai iegūtu spēcīgāku sitienu

}

myServo (150 + sitiens, servoNumber); // uz leju

kavēšanās (delayVal);

myServo (100, servoNumber); // uz augšu

kavēšanās (delayVal);

}

ja (servoNumber == 2) {

ja (pārspēt) sitiens = -10;

myServo (60 + sitiens, servoNumber); // uz leju

kavēšanās (delayVal);

myServo (80, servoNumber); // uz augšu

kavēšanās (delayVal);

}

}

anulēts iestatījums ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // piestiprina servo 9. tapā pie servo objekta

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // piestiprina servo 9. tapā pie servo objekta

myservo2.write (90);

}

void loop () {

izslaucīt(); // noslaucīt bungu rutīnu

// doOneEighthNote (2, 0);

kavēšanās (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // pirmais parms ir servo numurs un otrais parms ir pārspēts (1 = pārspēts, 0 = bez sitiena)

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

}

Ieteicams: