projet crepp_git/crepp-projects/simplecdbot · branche main
UtilsServo.h Voir sur GitLab
/*
 * Copyright (c) 2012 by Xavier HINAULT - support@mon-club-elec.fr
 *
 * This file is free software; you can redistribute it and/or modify
 * it under the terms of either the GNU General Public License version 3
 * or the GNU Lesser General Public License version 3, both as
 * published by the Free Software Foundation.
 */

#ifndef UtilsServo_h
#define UtilsServo_h

#include "Arduino.h"
#include "Servo.h"
#include "Utils.h"


class UtilsServo {

  private : // variables internes

  int _vitesseServos; // variable utilisée pour délai entre pour vitesse servomoteur en ms  
	int _pasServos; // variable utilisée pour cran angle entre 2 positions intermédiaires (degrés)

	int _ANGLE_MIN; // angle position MIN en degrés
	int _POS_MIN; // largeur impulsion pour position ANGLE_MIN degrés du servomoteur

	int _ANGLE_MAX; // angle position MAX en degrés
	int _POS_MAX; // largeur impulsion pour position ANGLE_MAX degrés du servomoteur

	boolean _debug; // flag de message de debug  

	int _nombreServos; // variable pour mémoriser le nombre de servomoteurs

	//-- todo : pb de portée avec ces variables
	int _indexServoPan; // index utilisé pour servo Pan
	int _indexServoTilt; // index utilisé pour servo Tilt

	int _brochesServos[12]; // tableau des broches des servomoteurs 

	float _anglesServos[12][3]; // tableau interne des angles des servomoteurs 

	//------ pour une raison mytérieuse... mettre les déclas de int etc... avant 

	Utils _utils; // objet utils donnant accès aux fonctions de la lib

  public :

	Servo _servos[12]; // tableau interne des objets servomoteurs 

  
  public :
  	UtilsServo(); // constructeur
  	//UtilsServo(Servo *servos, float (*anglesServosIn)[3], int nombreServosIn); // constructeur
	UtilsServo(int nombreServosIn); // constructeur

	void anglesServo(int index, float angle0, float angle1, float angle2); // initialise angles du servomoteur 

	void init( int brochesServosIn[]); // initialise les servomoteurs

	float  angle(float valeur_angle); 
	void vitesseServos(int delaiVitesse); // fixe delai entre 2 pas, en ms
	void debug(boolean debugIn); // activation / désactivation debug

	void home ();
	void toHome(); 

	void servo(int indexServo, float toAngle);

	void servoTo( Servo toServo, float fromAngle, float toAngle, int toVitesse, int toPas);
	void servoTo( int indexServo, float toAngle);

	void servoToR( Servo toServo, float fromAngle, float toAngle, int toVitesse, int toPas);
	void servoToR( int indexServo, float toAngle);

	void servosSync( float S[], int tailleIn); 
	void servosSync( float S0, float S1);
	void servosSync( float S1, float S2, float S3, float S4, float S5) ;
	void servosSync( float S1, float S2, float S3, float S4, float S5, float S6, float S7, float S8, float S9, float S10, float S11, float S12) ;

	void servosSyncR(float S[], int tailleIn); 
	void servosSyncR( float S0, float S1);
	void servosSyncR( float S0, float S1, float S2, float S3, float S4);
	void servosSyncR( float S1, float S2, float S3, float S4, float S5, float S6, float S7, float S8, float S9, float S10, float S11, float S12);

	void analyseChaine(String chaineReceptionIn); 


  private : // fonctions internes

};


#endif