Étape 6: fixer et configurer les servos
J’ai eu part 3 servos d’un projet de contrôle à distance non démarré il y a ans alors j’ai pensé que ce serait le moment idéal pour s’en servir.
Ils sont des servos futaba - tous les trois sont le genre qui vont seulement si loin dans une direction puis arrêter.
On avait la tête de 4 voies sur elle les deux autres ont des cercles attachés.
J’espère que les photos fournira bon détail quant à ce que je vais décrire.
J’ai eu en main quelques plastique blanc sur une épaisseur de 1/4" et 16" de long dont j’ai coupé 2 bandes d’environ 3/4 po de large.
Ces que j’ai percé à travers les trous des bords pour les minuscules vis de machine passer à travers. Je pense que j’ai trouvé ces minuscules vis avec certains commutateurs de limite, que j’ai acheté dans une boutique de surplus.
J’ai percé les trous à travers le servo tête monte en même temps afin que les trous seraient alignent. Puis il s’agissait de monter les servos dans le contreplaqué.
Pour monter les servos dans le contreplaqué, j’ai couper des rectangles dans le bois et visser les servos avec quelques petites vis. Je pense qu’ils sont des vis d’interrupteurs d’éclairage. le genre qui montent des interrupteurs et prises dans leurs boîtes de jonction.
Je mets les servos espacés pour que les essuie-glaces toucherais presque chaque autre mais pas tout à fait. Puis une fois en les servos, j’ai mis les trous de balle en place.
J’ai essayé de placer les trous pour que le servo « essuie-glace » aurait ramasser la balle dans le trou.
Sous les orifices est tuyauterie de plastique de 2 pouces ABS pour diriger les boules sur les côtés.
Voici comment j’ai configuré les servos.
1. synchronisation des servos
Les servos sont en mesure d’accepter un nombre comme un degré de tour.
J’ai utilisé le construit dans la bibliothèque de servo pour l’arduino http://www.arduino.cc/en/Reference/Servo
Donc pour leur horloge, j’eux reliée à l’arduino et qu’ils aillent à 0.
puis j’ai mis les bras afin qu’ils ont été pointant dans tous les domaines.
Lorsque les servos à être alimentés, ils semblent se déplacer eux-mêmes-90 ou une telle. Je ne pouvais pas comprendre pourquoi ils le font, mais je voulais être sûr ils ne se brûlent pas vers le haut parce que -90 fait pousser leurs bras contre le mur - je les ai mis dans le jury au mauvais angle. Vous devriez l’horloge les servos avant leur montage. J’ai fait le contraire...
2. Exécutez les servos
À l’aide de la bibliothèque de servo, j’ai voulu faire les essuie-glaces se comportent un peu au hasard, donc je génère un degré aléatoire du mouvement, un nombre aléatoire de décider quel essuie-glace pour se déplacer, et un délai aléatoire pour faire une pause entre les lingettes.
Pendant le cycle de pause, j’ai le code et vérifier tous les capteurs d’entrée afin que si une bille arrive dans un des deux trous sensored, la machine va réagir - il s’agit d’une tentative manuelle à une interruption.
donc voici le code j’utilise actuellement pour exécuter les essuie-glaces. (il s’agit d’un extrait du code global)
#include
long rndSrvoPos ; variable pour stocker la position du servo
long rndPause ; temps de pause au hasard
long whichServo ; Choisissez quel servo pour déplacer
Servo wiper1 ; premier objet d’essuie-glace de servo
Servo wiper2 ; deuxième objet d’essuie-glace de servo
void setup()
{
wiper1.Attach(14) ; attache le servo sur la broche 14 à l’objet de servo
wiper2.Attach(15) ; attache le servo sur la broche 14 à l’objet de servo
clignoter 3 fois pour indiquer le démarrage
Blink3x() ;
}
void loop()
{
balayer les servos un aléatoire s’élèvent jusqu'à 80 degrés
mettre en pause une durée aléatoire entre 10 et 250 ms
rndSrvoPos = random(0,22) ;
rndPause = random(250,500) ;
whichServo = random(100) ;
MoveServo(whichServo,0,rndPause) ;
MoveServo(whichServo,80,rndPause) ;
}
void MoveServo (int servoNum, pos longs, int pause)
{
Si (servoNum > = 50)
{
wiper1.Write(POS) ;
} else {}
wiper2.Write(POS) ;
}
pour (i = 0; i {}
ReadandReport() ;
Si (analogRead(impSensorPin) < 90) {StartMotor();}
ReadNailPin() ;
retard (1) ;
}
}
Sub Blink3x()
{
Cycle de Power On Self Test
wiper1.Write(80) ;
wiper2.Write(80) ;
}