//ajoute une broche pour la remise à zero de position dans n'importe quel état class CStateMachineRotaryWithSpeedAndReset: public CStateMachineRotaryWithSpeed { public: CStateMachineRotaryWithSpeedAndReset(int brocheAinit, int brocheBinit,int brocheRinit); //Ce constructeur dispose d'un paramètre supplémentaire pour configurer la broche utilisée pour le bouton private: int brocheR; //un nouvel attribut pour stocker le numéro de la broche servant au reset void actionSurTousLesEtats(); //implémentation de la méthode permettant de gérer l'action "appui sur le bouton reset" indépendamment de l'état courant de la machine à état }; //////////////////////////////////////////////////////////////////// CStateMachineRotaryWithSpeedAndReset::CStateMachineRotaryWithSpeedAndReset(int brocheAinit, int brocheBinit,int brocheRinit): CStateMachineRotaryWithSpeed(brocheAinit, brocheBinit){ brocheR=brocheRinit; pinMode(brocheR,INPUT_PULLUP); } //////////////////////////////////////////////////////////////////// void CStateMachineRotaryWithSpeedAndReset::actionSurTousLesEtats(){ if (digitalRead(brocheR)==0){ //ici on dévie légèrement du modèle de la machine à état car il faudrait idéalement avoir lu cette entrée en même temps que les autres à l'étape lecture des entrées position=0; //Serial.println("raz position"); } }