Classes et code de la partie pompe du Robot 2021
Dependencies: mbed ident_crac
bloc_monopompe.cpp@5:88ab89ab12ad, 2021-01-19 (annotated)
- Committer:
- smarecar
- Date:
- Tue Jan 19 07:11:38 2021 +0000
- Revision:
- 5:88ab89ab12ad
- Parent:
- 4:4bae30d48662
+com
Who changed what in which revision?
User | Revision | Line number | New 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 | } |