en fait l'idée initiale est simuler un niveau laser sur un bull, de façon à garder la lame droite lorsque le bull bouge.
au départ je voulais utiliser un gyro d'hélicoptère mais je n'étais pas sur de mon coup.
les gyros qu'on trouve pour l'arduino ne sont vraiment pas cher.
voici un exemple sur ebay ;
http://www.ebay.fr/itm/Accelerometre-3- ... 418ebda457
première étape : piloter le servo avec le gyro
la librairie pour le MMA7455:
https://code.google.com/p/mma-7455-ardu ... loads/list
étape réussi, voici le code :
Code : Tout sélectionner
/***********************************************************
* (c) Octobre 2015 - david@rabbitzone.info
* Programme permettant de piloter un servo avec un
* gyroscope MMA7455
* CONNECTIONS:
* +5V et Masse connecté à l'Arduino (le module a un régulateur 3.3V)
* SCL - à l'Arduino A5
* SDA - à l'Arduino A4
***********************************************************/
/*-----( Import des librairies nécessaires )-----*/
#include <Wire.h>
#include <MMA_7455.h>
#include <Servo.h>
/*-----( Declare objects )-----*/
MMA_7455 mySensor = MMA_7455(); //Pour activer le gyro
Servo myservo; //déclare le servo
/*-----( Declare Variables )-----*/
char xVal; //Variables pour les valeurs de l'axe X du gyro
int Sval; //Variable pour le calcul de la position du servo
void setup() /****** SETUP: RUNS ONCE ******/
{
myservo.attach(9); //Le servo est sur la PIN Digitale 9
myservo.write(90); //Le servo est positionné au neutre
Serial.begin(9600);
delay(100);
Serial.println("Pilote servo");
// Paramètrer la sensibilité du gyro
// 2 = 2g, 4 = 4g, 8 = 8g
mySensor.initSensitivity(2); // suffisant pour notre cas
/* Calibration du gyro */
mySensor.calibrateOffset(-10.0, 13.0, -25.0);
} //--(end setup )---
void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
xVal = mySensor.readAxis('x'); //récupérer la valeur X du gyro
Sval = map(xVal, -57, 63, 0, 180); //calcul de la valeur du servo par rapport au limite du gyro (-57 et 63)
myservo.write(Sval); //postionne le servo suivant la valeur calculé
/* les lignes suivantes permettent de voir les valeurs X du gyro et
* les valeurs appliquées au servo */
Serial.print("X = ");
Serial.print(xVal, DEC);
Serial.print(" S = ");
Serial.println(Sval, DEC);
delay(20);
/* ce delay permet de régler la sensibilité du mouvement du servo
plus il est élevé, plus le servo bougera en saccade */
} //--(end main loop )---
/*-----( Declare User-written Functions )-----*/
//*********( THE END )***********
étape suivante :
- tester sur un système hydraulique
- corriger
- valider
à suivre...