//////////////////////////////////////////////////////////////////// class CStateMachineRotaryWithSpeed: public CStateMachineRotary { public: CStateMachineRotaryWithSpeed(int brocheAinit, int brocheBinit); float getSpeed(); //méthode accesseur pour accéder à l'attribut privé speed private: float speed; //vitesse mesurée unsigned long lastPulseTime; //horodatage du dernier front void frontDetecte(); //implémentation pour effectuer des traitements lorsqu'un front est detecté }; //////////////////////////////////////////////////////////////////// //Implémentation du constructeur de la classe fille, exécutée après avoir exécuté le constructeur de la classe mère CStateMachineRotaryWithSpeed::CStateMachineRotaryWithSpeed(int brocheAinit, int brocheBinit): CStateMachineRotary(brocheAinit, brocheBinit){ lastPulseTime=micros(); //initialisation de la date initiale pour l'horodatage des fronts speed=0; //initialise vitesse nulle au démarrage. Attention, en simu, l'encodeur génère des fronts parasites } //////////////////////////////////////////////////////////////////// //implémentation de la méthode frontDetecte() qui n'était pas implémentée dans la classe mère void CStateMachineRotaryWithSpeed::frontDetecte() { // à compléter } //implémentation de la mesure de vitesse float CStateMachineRotaryWithSpeed::getSpeed(){ //à faire: calculer la vitesse et l'affecter à l'attribut speed return speed; }