Classes et code de la partie pompe du Robot 2021
Dependencies: mbed ident_crac
bloc_monopompe.cpp
- Committer:
- smarecar
- Date:
- 2021-01-19
- Revision:
- 5:88ab89ab12ad
- Parent:
- 4:4bae30d48662
File content as of revision 5:88ab89ab12ad:
#include "bloc_monopompe.h" // creation du constructeur bloc_monopompe bloc_monopompe::bloc_monopompe (PinName pompe, PinName electrovanne, PinName capteur) : _pompe(pompe), _electrovanne(electrovanne), _capteur(capteur) { _pompe.period_us(20) ; // definition de la periode d'une pwm de la pompe } // la fonction bloc_monopompe::aspirer permet d'activer la pompe et fermer l'electrovanne lorsque le capteur de pression capte une difference de pression (regle selon un seuil) // Et effectue une verificarion si le goblet a ete correctement attraper ou non. La variable _gobelet_en_place nous indique si le goblet est correctement attraper ou non void bloc_monopompe::aspirer (void) { _pompe = PWM_POMPE ; _electrovanne = ELEC_OUVERTE ; wait_ms(100) ; if(_capteur.read() >= SEUIL_CPT) { _electrovanne = ELEC_FERME ; wait_ms(100) ; if(_capteur.read() >= SEUIL_CPT) { _pompe = 0 ; _gobelet_en_place = 1 ; } else { _electrovanne = ELEC_OUVERTE ; _gobelet_en_place = 0 ; } } } // la fonction bloc_monopompe::relacher relache le goblet en ouvrant l'electrovanne, et effectue a nouveau une verification: // si le goblet a ete correctement relacher ou non. La variable _gobelet_en_place nous indique si le goblet est correctement attraper ou non void bloc_monopompe::relacher (void) { _electrovanne = ELEC_OUVERTE ; wait_ms(100) ; if(_capteur.read() >= SEUIL_CPT) _gobelet_en_place = 1 ; else _gobelet_en_place = 0 ; } // La fonction bloc_monopompe::etat_actuel retourne l'etat de chaque element (pompe et electrovanne active ou non, et si le capteur de pression capte qql chose ou non // ces informations sont retourne dans un char ou les 3 derniers bits representes chaque element du bloc char bloc_monopompe::etat_actuel (void) { char etat_groupe = 0 ; bool etat_pompe; bool etat_electrovanne ; if(_pompe.read() != 0) //test de la pompe etat_pompe = 1 ; else etat_pompe = 0 ; if(_capteur.read() >= SEUIL_CPT) //test du capteur _gobelet_en_place = 1 ; else _gobelet_en_place = 0 ; if(_electrovanne.read()) //test de l'electrovanne etat_pompe = 1 ; else etat_pompe = 0 ; // contenue du char : (cela evite l'utilisation de pointeurs (car on a la flemme)) //0000 0 "bit pompe" "bit elec" "bit cpt" return etat_groupe = (etat_pompe << 2) + (etat_electrovanne << 1) + _gobelet_en_place ; } // La fonction bloc_monopompe::stop_pompe stop la pompe et laisse l'electrovanne ouverte void bloc_monopompe::stop_pompe (void) { _pompe = PWM_STOP_POMPE ; _electrovanne = ELEC_OUVERTE ; }