Table des matières:

Boîte à rythmes servo Arduino : 4 étapes
Boîte à rythmes servo Arduino : 4 étapes

Vidéo: Boîte à rythmes servo Arduino : 4 étapes

Vidéo: Boîte à rythmes servo Arduino : 4 étapes
Vidéo: More servos coming soon! #midi #drummer #arduino #robot #music #engineering #drummachine 2024, Novembre
Anonim
Image
Image

Il s'agit d'une simple boîte à rythmes ou robot contrôlé par deux micro-servo et Arduino Uno. Les servos sont montés sur un support en bois en forme de L qui est maintenu à la caisse claire avec 4 aimants puissants. Les bras d'asservissement sont boulonnés à deux baguettes qui servent de baguettes. C'est assez fort mais pas trop fort. Des coups beaucoup plus forts pourraient être obtenus en utilisant des servos de taille standard et de vraies baguettes qui sont un peu plus lourdes. Mais cela nécessiterait également une alimentation séparée pour les servos. En utilisant des micro-servos, l'Arduino fournit suffisamment de courant pour les alimenter directement sans alimentation séparée.

La vidéo montre ma tentative de programmation d'une version simple du solo de batterie Wipeout. Bien sûr, ce n'est pas aux vrais 160 battements par minute mais cela pourrait facilement être obtenu en ajoutant un autre servo qui serait plutôt cool. Je n'ai pas calculé le meilleur bpm qui peut être obtenu en utilisant un servo et cela nécessite un certain délai pour faire passer la baguette de sa position de stationnement à la peau de la batterie.

Les rythmes que vous pouvez créer ne sont limités que par votre imagination et la boîte à rythmes est un compagnon plus intéressant à jouer qu'une boîte à rythmes numérique, si vous êtes musicien.

Le seul inconvénient est le bruit du servo qui n'est pas vraiment perceptible bien que l'audio de la caméra semble le capter de manière assez notable.

Étape 1: Construisez le support de servomoteur

Construire le support de servo
Construire le support de servo
Construire le support de servo
Construire le support de servo

Ce support est fabriqué à partir de bandes de contreplaqué hobby que j'avais sous la main. J'ai créé une forme en L en boulonnant deux pièces avec un support en L en métal. Ensuite, un petit bloc de bois a été collé à la bande supérieure pour maintenir les deux servos.

J'avais deux supports de servos pratiques que j'ai vissés au bloc de bois.

J'ai utilisé 4 aimants en néodyme pour maintenir le support sur la caisse claire.

Étape 2: câbler les servos à l'Arduino Uno

Câbler les servos à l'Arduino Uno
Câbler les servos à l'Arduino Uno

Les servos vcc (fil du milieu) vont aux broches Arduino 5 v.

Les fils de terre à la terre Arduino.

Les fils de signal vont aux broches 6 et 7.

Un bouclier d'asservissement le rendrait encore plus facile si vous en avez un.

Étape 3: Code Arduino…

Vous trouverez ci-dessous le croquis simple pour jouer à Wipeout. Il vous suffit d'ajuster les positions des servos pour votre configuration particulière.

S'amuser!

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

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

#include "servo.h"

// servo batteur Jim Demello juin 2018

Servo myservo1, myservo2;

int servoPin6 = 6; //servo

int servoPin7 = 7;

void myServo(int servoPosition, int servoNumber) {

if (servoNumber == 1) {

monservo1.write(servoPosition);

}

if (servoNumber == 2) {

monservo2.write(servoPosition);

}

}

void doOneEighthNote(int servoNumber, int beat) {

int retardVal = 60;

if (servoNumber == 1) {

if (battement) {battement = 10; // si beat = 1 alors ajoutez un peu plus de servo pour un bruit plus fort

}

myServo(150 + battement, numéro de servo); //vers le bas

delay(delayVal);

myServo(100, servoNumber);//up

delay(delayVal);

}

if (servoNumber == 2) {

si (battre) battre = -10;

myServo (60 + battement, numéro de servo); //vers le bas

delay(delayVal);

myServo(80, servoNumber);//up

delay(delayVal);

}

}

void setup()

{

// Serial.begin(9600);

monservo1.attach(servoPin6, 1000, 2000); // attache le servo sur la broche 9 à l'objet servo

monservo1.write(100);

monservo2.attach(servoPin7, 1000, 2000); // attache le servo sur la broche 9 à l'objet servo

monservo2.write(90);

}

boucle vide() {

anéantir(); // effacement de la routine de batterie

//doOneEighthNote(2, 0);

retard (40);

}

effacement nul () {

faireUneHuitièmeNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0); // le premier parm est le numéro de servo et le deuxième parm est le battement (1=battement, 0=pas de battement)

doOneHuitNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

faireUneHuitièmeNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

faireUneHuitièmeNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

faireUneHuitièmeNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

doOneHuitNote(2, 0); doOneHuitNote(1, 0); doOneHuitNote(2, 1); doOneHuitNote(1, 0);

doOneHuitNote(2, 0); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

doOneHuitNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

doOneHuitNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

doOneHuitNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

doOneHuitNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

faireUneHuitièmeNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

faireUneHuitièmeNote(2, 1); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

doOneHuitNote(2, 0); doOneHuitNote(1, 0); faireUneHuitièmeNote(2, 1); doOneHuitNote(1, 0);

doOneHuitNote(2, 0); doOneHuitNote(1, 0); doOneHuitNote(2, 1); doOneHuitNote(1, 0);

doOneHuitNote(2, 0); doOneHuitNote(1, 0); doOneHuitNote(2, 0); doOneHuitNote(1, 0);

}

Conseillé: