Étape 17 :
Code
#include
Base de servo ;
Servo Joint1 ;
Servo Joint2 ;
Grabber servo ;
const int analogInPin1 = A1 ; Broche d’entrée analogique auquel est attaché le potentiomètre
const int analogInPin2 = A2 ; Broche d’entrée analogique auquel est attaché le potentiomètre
const int analogInPin3 = A3 ; Broche d’entrée analogique auquel est attaché le potentiomètre
const int analogInPin4 = A4 ; Broche d’entrée analogique auquel est attaché le potentiomètre
int sensorValue1 = 0 ; valeur lue dans le pot
int sensorValue2 = 0 ; valeur lue dans le pot
int sensorValue3 = 0 ; valeur lue dans le pot
int sensorValue4 = 0 ; valeur lue dans le pot
void setup() {}
initialiser une communication série à 9600 bits/s :
Serial.Begin(9600) ;
Base.Attach(3) ;
Joint1.Attach(4) ;
Joint2.Attach(5) ;
Grabber.Attach(6) ;
}
void loop() {}
lire l’analogue en valeur :
sensorValue1 = analogRead(analogInPin1) ;
sensorValue2 = analogRead(analogInPin2) ;
sensorValue3 = analogRead(analogInPin3) ;
sensorValue4 = analogRead(analogInPin4) ;
imprimer les résultats de la série monitor :
Serial.Print ("Joint \nBase:") ;
Serial.Print(sensorValue1) ;
Serial.Print ("Joint de fond =") ;
Serial.Print(sensorValue2) ;
Serial.Print ("articulation supérieure =") ;
Serial.Print(sensorValue3) ;
Serial.Print ("Grabber =") ;
Serial.Print(sensorValue4) ;
Mappez les résultats au servo contrôle paramètre
Base.Write (carte (sensorValue1, 500, 200, 150, 45)) ;
Joint1.Write (carte (sensorValue2, 680, 300, 50, 130)) ;
Joint2.Write (carte (sensorValue3, 400, 800, 140, 30)) ;
Grabber.Write (carte (sensorValue4, 250, 320, 180, 80)) ;
}
La bibliothèque de contrôles servo Servo.h est incluse dans notre code. Comme notre code porte uniquement sur des fonctions simples, nous n’irons pas trop profondément dans la base de la langue.
Mécanisme de mappage de motion
Son mécanisme de mappage motion comprend 3 étapes :
1. Lisez la tension aux bornes de la résistance de l’axe d’entrée analogique. Le lecture varie de 0-1023, qui indique la tension 0-5v proportionnellement.
Code :
sensorValue1 = analogRead(analogInPin1) ;
sensorValue2 = analogRead(analogInPin2) ;
sensorValue3 = analogRead(analogInPin3) ;
sensorValue4 = analogRead(analogInPin4) ;
2. basé sur l’orientation initiale du servo, mappez la valeur d’entrée pour correspondre à la position voulue de servo proportionnellement.
3. envoyer le paramètre position sur la broche de sortie numérique pour contrôler le mouvement du servo.
Code :
Base.Write (carte (sensorValue1, 500, 200, 150, 45)) ;
Joint1.Write (carte (sensorValue2, 680, 300, 50, 130)) ;
Joint2.Write (carte (sensorValue3, 400, 800, 140, 30)) ;
Grabber.Write (carte (sensorValue4, 250, 320, 180, 80)) ;
La fonction map() dans le code ci-dessus est utilisée pour mapper la lecture sur le paramètre d’angle du servo. XXX.write() fonction est utilisée pour envoyer ces valeurs mappés à l’asservissement.
Calibration
Comme la relation tension-position est peut être considéré à peu près linéaire, un moyen facile pour définir le mappage de paramètre est d’abattre les lectures d’entrée analogiques à 2 positions différentes (ici nous recommandons point médian ou points de terminaison) et en correspondance avec le paramètre de position du servo.
En conséquence, notre première étape consiste à accrocher le bras contrôle pour le microcontrôleur via un câble USB, ouvrez le programme IDE Arduino, copiez le code ci-dessus dans la fenêtre et transférez-le sur la puce. Assurez-vous que le type de puce droite et COM port est sélectionné.
Si tout se passe bien, la tension de chaque résistance peut être lu de la série monitor. Assurez-vous que le moniteur de la série est la valeur fixée à bande droite (9600 dans notre cas).
Ensuite, déplacer chacun de l’articulation pour certains certaines positions et lire
les valeurs d’entrée analogiques de la série surveillent et leur duvet blanc. Puis ajustez le palonnier à ces positions et de prendre des paramètres de position. Enfin, mapper les valeurs d’entrée à des postes de servo et envoyer ces valeurs par l’intermédiaire de broches de sortie numérique.
Les paramètres de mappage de jouer vous donnera un meilleur résultat de requête de synchronisation.
Afin d’améliorer l’exactitude des informations, nous pouvons même ajouter plus de postes comme référence et de les mapper par morceaux.