Étape 7: programmation
Tous les fichiers se trouvent dans le sketchbook.zip.
Tout d’abord, voici le code pour obtenir vos servos centrées. Le problème que vous rencontrez devient la position du servo correct. Gardez à l’esprit que ces servos vont de 0 à 180 degrés.
Donc en résumé, nous voulons mettre les servos à 90 et 90 donc sa dans le Centre des servos « amplitude de mouvement ». Ensuite, nous pouvons définir l’horizontale (axe des x) et Vertical (axe y) limite. Pour cela, vous pouvez utiliser l’eyes_servo_single_test changer de horServo.write() ; et vertServo.write() ;
[eyes_servo_single_test CODE]
#include < Servo.h >Servo horServo ;
Servo vertServo ;
void setup() {}
horServo.attach(8) ;
vertServo.attach(9) ;
}
void loop() {}
horServo.write(80) ;
vertServo.write(40) ;
}
[FIN DU CODE]
Ensuite, je voudrais utiliser eyes_full_servo_test encore une fois brancher vos valeurs haute et basse pour les servos de cette façon vous pouvez voir si vous avez n’importe quelle attache. J’ai intégré un clignotement de la touche donc vous pouvez visualiser ce que l’étape votre sur. Vous pouvez toujours arrêter à mi-chemin en tirant sur le cordon USB.
[eyes_full_servo_test CODE]
//==================Il s’agit d’un test de position servo rapide que j’ai fait pour mon projet de Eye
Les servos se déplacent des postions set pour les axes X et Y
Ensembles de test un que clignotent les LED haute 20 secondes, longs.
Test deux définit les servos au poste 40,0 pour 6,5 secondes, deux clignotements.
Test de trois définit les servos au poste 80,0 pour 7,5 secondes, trois clignotements.
Test de quatre définit les servos au poste 0,70 pour 8,5 secondes, quatre clignotements.
Tester cinq sets les servos en position 0,110 9,5 secondes, cinq clignotements.
IL FALLAIT APPUYER SUR RESET, UNE FOIS QUE LE TEST EST TERMINÉ
#include < Servo.h > //servo bibliothèque
Servo horServo ; servo de l’axe des abscisses
Servo vertServo ; y-asxis servo
int mené = 13 ;
void setup() {}
horServo.attach(8) ; broche de servo axe x 8
vertServo.attach(9) ; broche de servo axe y 9
pinMode (led, sortie) ;
}
void loop() {}
//==================TEST ONE=============//
Servos en position de repos ou de centre.
horServo.write(80) ;
vertServo.write(40) ;
clignote une fois
digitalWrite (conduit, en haut) ;
Delay(20000) ;
digitalWrite (led, faible) ;
//============Test Two=================//
test deux clignote deux fois
horServo.write(20) ; x gauche limite
vertServo.write(40) ;
clignote deux fois
digitalWrite (conduit, en haut) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(5000) ;
//=================Test Three==================//
tester trois clignote trois fois
horServo.write(80) ; x limite droite
vertServo.write(40) ;
clignote trois fois
digitalWrite (conduit, en haut) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(5000) ;
//==================Test four==================//
Test quatre clignote quatre fois
horServo.write(80) ;
vertServo.write(0) ; limite supérieure y
clignotent quatre fois
digitalWrite (conduit, en haut) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(5000) ;
//=================Test Five===================//
Tester cinq clignotements cinq fois
horServo.write(80) ;
vertServo.write(110) ; limite de fond y
clignote 5 fois
digitalWrite (conduit, en haut) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(500) ;
digitalWrite(led,HIGH) ;
Delay(500) ;
digitalWrite (led, faible) ;
Delay(5000) ;
//=====================END======================//
Servos retour au repos ou centre. Test terminé Appuyez sur RESET ou attendre pour toujours
horServo.write(80) ;
vertServo.write(40) ;
digitalWrite (conduit, en haut) ;
{while(1)}
}
[FIN DU CODE]
Le code utilise PI pour déplacer les yeux dans un rayon. Vous devez vous assurer que vous avez vos servos sur la broche 8 et 9 ou le modifier dans le code. Une fois que vous êtes confiant, que vous avez tout bien réglé, vous pouvez définir les connecteurs EZ en place.
[eyes_sketch CODE]
#include < math.h >
#define pi 3,14159265358979323846
#define twopi (2 * pi)
float circleradius = 50 ; 50 de chaque côté - faire sans plus aucun de vos valeurs limite max
float stepnumber = 360 ;
float stepangle ;
#include < Servo.h > //include bibliothèque de servo de commande de servo
Servo horServo ; servo pour mouvement gauche/droite
Servo vertServo ; servo pour haut/bas mouvement
randomhor octet ; définir la variable aléatoire position horizontale
randomvert octet ; définir la variable aléatoire de position verticale
int randomdelay ; Définissez la variable de délai aléatoire
#define HLEFTLIMIT 40 //define limite gauche horizontal (gauche/droite) servo
#define HRIGHTLIMIT 80 //define limite droite horizontale (gauche/droite) servo
#define VTOPLIMIT 70 / / définit la limite supérieure sur la verticale (haut/bas) servo
#define VBOTLIMIT 110 //define limite de fond horizontal (haut/bas) servo
void setup()
{
horServo.attach(8) ; servo horizontaux sur la broche 8
vertServo.attach(9) ; servo verticale sur la broche 9
randomSeed(analogRead(0)) ; Créer des valeurs aléatoires à l’aide d’une broche analogique non-connectée
stepangle = twopi/stepnumber ;
pour (int i = 0; i < stepnumber; i ++) {}
angle de flotteur = i * stepangle ;
float x = sin (angle) * circleradius ;
float y = cos (angle) * circleradius ;
x = carte (x, 1-circleradius, circleradius, 0, 2 * circleradius) ;
y = plan (y, 1-circleradius, circleradius, 0, 2 * circleradius) ;
horServo.write(x) ; écrire à l’asservissement horizontal
vertServo.write(y) ; écrire à l’asservissement horizontal
Delay(10) ;
}
}
void loop()
{
randomhor = random (HLEFTLIMIT, HRIGHTLIMIT) ; fixer des limites
randomvert = random (VTOPLIMIT, VBOTLIMIT) ; fixer des limites
randomdelay = random(1000, 4000) ; déplace toutes les 1 à 4 secondes
horServo.write(randomhor) ; écrire à l’asservissement horizontal
vertServo.write(randomvert) ; écrire à l’asservissement vertical
Delay(randomdelay) ; retarder une quantité aléatoire de temps (à moins de valeurs définies ci-dessus)
}
[Fin du CODE]