Obsah:

Servo bicí stroj Arduino: 4 kroky
Servo bicí stroj Arduino: 4 kroky

Video: Servo bicí stroj Arduino: 4 kroky

Video: Servo bicí stroj Arduino: 4 kroky
Video: #12 Цифровое чтение/запись VTScada Modbus | ПЛК Outseal Arduino #VTScada #Modbus #ПЛК #ArduinoPLC 2024, Červenec
Anonim
Image
Image

Jedná se o jednoduchý dva mikro-servo a Arduino Uno řízený bicí automat nebo robot. Serva jsou upevněna na dřevěném držáku ve tvaru L, který je držen na bubnu pomocí 4 silných magnetů. Ramena serva jsou přišroubována ke dvěma hůlkám, které slouží jako bubny. Je to docela hlasité, ale ne příliš hlasité. Mnohem hlasitějších úderů lze dosáhnout použitím serva standardní velikosti a skutečných bicích tyčí, které jsou o něco těžší. To by ale také vyžadovalo samostatný zdroj pro serva. Použitím mikro-serva Arduino dodává dostatek proudu k napájení přímo bez samostatného napájecího zdroje.

Video ukazuje můj pokus o naprogramování jednoduché verze sóla bicích Wipeout. Samozřejmě to není na skutečných 160 tepů za minutu, ale to lze snadno získat přidáním dalšího serva, což by bylo docela skvělé. Nepočítal jsem, jaké nejvyšší tepové frekvence lze dosáhnout pomocí serva, a to vyžaduje určité zpoždění při přesunu paličky ze zaparkované polohy do hlavy bubnu.

Rytmy, které můžete vytvořit, jsou omezeny pouze vaší představivostí a bicí automat je zajímavějším společníkem na hraní než digitální bicí automat, pokud jste hudebník.

Jedinou nevýhodou je hluk serva, který není tak nápadný, i když se zdá, že zvuk kamery to zaznamenává poměrně výrazně.

Krok 1: Sestavte servo držák

Sestavte servo držák
Sestavte servo držák
Sestavte servo držák
Sestavte servo držák

Tento držák je vyroben z několika pruhů hobby překližky, které jsem měl po ruce. Vytvořil jsem tvar L přišroubováním dvou kusů k sobě kovovým držákem L. Poté byl k hornímu pásu přilepen malý blok dřeva, který držel dvě serva.

Měl jsem dva šikovné servopohony, které jsem přišrouboval k dřevěnému bloku.

Pomocí 4 neodymových magnetů jsem držel držák na bubínku.

Krok 2: Připojte serva k Arduino Uno

Připojte serva k Arduino Uno
Připojte serva k Arduino Uno

Servo vcc (střední vodič) jde na piny Arduino 5 V.

Zemnící vodiče k zemi Arduino.

Signální vodiče jdou na piny 6 a 7.

Servo štít by to ještě usnadnil, pokud ho máte.

Krok 3: Arduino kód…

Níže je jednoduchá skica pro hraní Wipeout. Stačí upravit polohy serv pro konkrétní nastavení.

Bavte se!

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

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

#include "servo.h"

// servo bubeník Jim Demello červen 2018

Servo myservo1, myservo2;

int servoPin6 = 6; // servo

int servoPin7 = 7;

void myServo (int servoPosition, int servoNumber) {

if (servoNumber == 1) {

myservo1.write (servoPosition);

}

if (servoNumber == 2) {

myservo2.write (servoPosition);

}

}

void doOneEighthNote (int servoNumber, int beat) {

int delayVal = 60;

if (servoNumber == 1) {

if (beat) {beat = 10; // pokud beat = 1, přidejte trochu více serva dolů pro silnější ránu

}

myServo (150 + beat, servoNumber); //dolů

delay (delayVal);

myServo (100, servoNumber); // nahoru

delay (delayVal);

}

if (servoNumber == 2) {

if (beat) beat = -10;

myServo (60 + beat, servoNumber); //dolů

delay (delayVal);

myServo (80, servoNumber); // nahoru

delay (delayVal);

}

}

neplatné nastavení ()

{

// Serial.begin (9600);

myservo1.attach (servoPin6, 1000, 2000); // připojí servo na pinu 9 k objektu serva

myservo1.write (100);

myservo2.attach (servoPin7, 1000, 2000); // připojí servo na pinu 9 k objektu serva

myservo2.write (90);

}

prázdná smyčka () {

wipeout (); // rutina vymazání bubnu

// doOneEighthNote (2, 0);

zpoždění (40);

}

void wipeout () {

doOneEighthNote (2, 1); doOneEighthNote (1, 0); doOneEighthNote (2, 0); doOneEighthNote (1, 0); // první parm je číslo serva a druhý parm je beat (1 = beat, 0 = žádný beat)

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

}

Doporučuje: