Bonjour,
Je vous présente un petit sketch basé sur la centrale inertielle que j'avais présenté auparavant.
Le code de cette centrale inertielle consistait à voir les paramètres X,Y,Z ainsi que d'autres paramètres provenant de la centrale.
Vous pouvez voir le code ici:
http://forum.arduino.cc/index.php?topic=181653.0 J'ai donc fait une petite vidéo que vous pouvez voir, qui illustre le fonctionnement de la plateforme:
www.youtube.com/watch?v=EgdUB15jqTY
Pour la partie code, elle se décompose en deux parties.
Le code principal, responsable du fonctionnement de la plateforme:
#include <FreeSixIMU.h>
#include <FIMU_ADXL345.h>
#include <FIMU_ITG3200.h>
#include <Wire.h>
#include <Servo.h>
float angles[3];
Servo servo_x;
Servo servo_y;
Servo servo_z;
int pos_x = 0;
int pos_y = 0;
int pos_z = 0;
FreeSixIMU sixDOF = FreeSixIMU();
void setup()
{
Serial.begin(9600);
Wire.begin();
servo_z.attach(10);
servo_z.write(90);
servo_x.attach(11);
servo_y.attach(12);
sixDOF.init();
delay(5);
}
void loop()
{
sixDOF.getYawPitchRoll(angles);
pos_x = (1570-angles[1]*9.55);
servo_x.writeMicroseconds(pos_x);
pos_y = (1400+angles[2]*9.55);
servo_y.writeMicroseconds(pos_y);
//pos_z = (1500+angles[0]*9.55);
//servo_z.writeMicroseconds(pos_z);
//printData();
}
Et le second, lié à l'affichage des paramètre des servos, afin de pouvoir les étalonner que j'ai nommé "printData"
void printData()
{
Serial.print("X:");
Serial.print(angles[1]);
Serial.print(" ");
Serial.print("Pos_X:");
Serial.print(pos_x);
Serial.print(" || ");
Serial.print("Y:");
Serial.print(angles[2]);
Serial.print(" ");
Serial.print("Pos_Y:");
Serial.print(pos_y);
Serial.print(" || ");
Serial.print("Z:");
Serial.print(angles[0]);
Serial.print(" ");
Serial.print("Pos_Z:");
Serial.print(pos_z);
Serial.print(" ");
Serial.println(" ");
delay(5);
}
Je vous conseil donc de désactiver la partie "printData" durant le fonctionnement de la plateforme, c'est beaucoup plus fluide.
Amitiés,