Classes et code de la partie pompe du Robot 2021

Dependencies:   mbed ident_crac

Committer:
smarecar
Date:
Tue Jan 19 07:11:38 2021 +0000
Revision:
5:88ab89ab12ad
Parent:
4:4bae30d48662
+com

Who changed what in which revision?

UserRevisionLine numberNew contents of line
goldmas 0:253443d82cba 1 #include "bloc_monopompe.h"
smarecar 5:88ab89ab12ad 2 // creation du constructeur bloc_monopompe
goldmas 0:253443d82cba 3
goldmas 0:253443d82cba 4 bloc_monopompe::bloc_monopompe (PinName pompe, PinName electrovanne, PinName capteur)
goldmas 0:253443d82cba 5 : _pompe(pompe), _electrovanne(electrovanne), _capteur(capteur)
goldmas 0:253443d82cba 6 {
smarecar 5:88ab89ab12ad 7 _pompe.period_us(20) ; // definition de la periode d'une pwm de la pompe
goldmas 0:253443d82cba 8 }
goldmas 0:253443d82cba 9
smarecar 5:88ab89ab12ad 10 // 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)
smarecar 5:88ab89ab12ad 11 // 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
goldmas 4:4bae30d48662 12 void bloc_monopompe::aspirer (void)
goldmas 0:253443d82cba 13 {
goldmas 0:253443d82cba 14 _pompe = PWM_POMPE ;
goldmas 0:253443d82cba 15 _electrovanne = ELEC_OUVERTE ;
goldmas 0:253443d82cba 16 wait_ms(100) ;
goldmas 0:253443d82cba 17
goldmas 0:253443d82cba 18 if(_capteur.read() >= SEUIL_CPT)
goldmas 0:253443d82cba 19 {
goldmas 0:253443d82cba 20 _electrovanne = ELEC_FERME ;
goldmas 0:253443d82cba 21 wait_ms(100) ;
goldmas 0:253443d82cba 22 if(_capteur.read() >= SEUIL_CPT)
goldmas 0:253443d82cba 23 {
goldmas 0:253443d82cba 24 _pompe = 0 ;
goldmas 0:253443d82cba 25 _gobelet_en_place = 1 ;
goldmas 0:253443d82cba 26 }
goldmas 0:253443d82cba 27 else
goldmas 0:253443d82cba 28 {
goldmas 0:253443d82cba 29 _electrovanne = ELEC_OUVERTE ;
goldmas 0:253443d82cba 30 _gobelet_en_place = 0 ;
goldmas 0:253443d82cba 31 }
goldmas 0:253443d82cba 32 }
goldmas 0:253443d82cba 33 }
goldmas 0:253443d82cba 34
smarecar 5:88ab89ab12ad 35 // la fonction bloc_monopompe::relacher relache le goblet en ouvrant l'electrovanne, et effectue a nouveau une verification:
smarecar 5:88ab89ab12ad 36 // si le goblet a ete correctement relacher ou non. La variable _gobelet_en_place nous indique si le goblet est correctement attraper ou non
goldmas 4:4bae30d48662 37 void bloc_monopompe::relacher (void)
goldmas 0:253443d82cba 38 {
goldmas 0:253443d82cba 39 _electrovanne = ELEC_OUVERTE ;
goldmas 0:253443d82cba 40 wait_ms(100) ;
goldmas 0:253443d82cba 41 if(_capteur.read() >= SEUIL_CPT)
goldmas 0:253443d82cba 42 _gobelet_en_place = 1 ;
goldmas 0:253443d82cba 43 else
goldmas 0:253443d82cba 44 _gobelet_en_place = 0 ;
goldmas 0:253443d82cba 45 }
smarecar 5:88ab89ab12ad 46 // 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
smarecar 5:88ab89ab12ad 47 // ces informations sont retourne dans un char ou les 3 derniers bits representes chaque element du bloc
goldmas 4:4bae30d48662 48 char bloc_monopompe::etat_actuel (void)
goldmas 0:253443d82cba 49 {
goldmas 4:4bae30d48662 50 char etat_groupe = 0 ;
goldmas 4:4bae30d48662 51 bool etat_pompe;
goldmas 4:4bae30d48662 52 bool etat_electrovanne ;
goldmas 4:4bae30d48662 53
goldmas 4:4bae30d48662 54 if(_pompe.read() != 0) //test de la pompe
goldmas 4:4bae30d48662 55 etat_pompe = 1 ;
goldmas 4:4bae30d48662 56 else
goldmas 4:4bae30d48662 57 etat_pompe = 0 ;
goldmas 4:4bae30d48662 58
goldmas 4:4bae30d48662 59 if(_capteur.read() >= SEUIL_CPT) //test du capteur
goldmas 0:253443d82cba 60 _gobelet_en_place = 1 ;
goldmas 0:253443d82cba 61 else
goldmas 0:253443d82cba 62 _gobelet_en_place = 0 ;
goldmas 0:253443d82cba 63
goldmas 4:4bae30d48662 64 if(_electrovanne.read()) //test de l'electrovanne
goldmas 4:4bae30d48662 65 etat_pompe = 1 ;
goldmas 4:4bae30d48662 66 else
goldmas 4:4bae30d48662 67 etat_pompe = 0 ;
goldmas 4:4bae30d48662 68
goldmas 4:4bae30d48662 69 // contenue du char : (cela evite l'utilisation de pointeurs (car on a la flemme))
goldmas 4:4bae30d48662 70 //0000 0 "bit pompe" "bit elec" "bit cpt"
goldmas 4:4bae30d48662 71 return etat_groupe = (etat_pompe << 2) + (etat_electrovanne << 1) + _gobelet_en_place ;
goldmas 4:4bae30d48662 72 }
goldmas 4:4bae30d48662 73
smarecar 5:88ab89ab12ad 74 // La fonction bloc_monopompe::stop_pompe stop la pompe et laisse l'electrovanne ouverte
smarecar 5:88ab89ab12ad 75 void bloc_monopompe::stop_pompe (void)
goldmas 4:4bae30d48662 76 {
goldmas 4:4bae30d48662 77 _pompe = PWM_STOP_POMPE ;
goldmas 4:4bae30d48662 78 _electrovanne = ELEC_OUVERTE ;
goldmas 0:253443d82cba 79 }