carte esclave pompe 2020 V1

Dependencies:   mbed ident_crac

Committer:
marwanesaich
Date:
Tue May 07 13:14:29 2019 +0000
Revision:
2:4cc8fa2f64be
Parent:
0:84a8c24e29ae
Child:
3:cf33f9d4d6ff
Child:
4:82c90657da4a
gestion pompes avec automates sans ACK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marwanesaich 0:84a8c24e29ae 1 #include "class_ventouse.h"
marwanesaich 0:84a8c24e29ae 2
marwanesaich 2:4cc8fa2f64be 3 #define SEUIL 0.30
marwanesaich 0:84a8c24e29ae 4
marwanesaich 0:84a8c24e29ae 5
marwanesaich 2:4cc8fa2f64be 6 Ventouse::Ventouse(PinName pinPompe, PinName pinElectrovanne, PinName pinCapteurPression, char index) : m_pinPompe(pinPompe),
marwanesaich 2:4cc8fa2f64be 7 m_pinElectrovanne(pinElectrovanne), m_pinCapteurPression(pinCapteurPression), m_index(index)
marwanesaich 0:84a8c24e29ae 8 {
marwanesaich 0:84a8c24e29ae 9 m_pompe = new PwmOut(m_pinPompe);
marwanesaich 0:84a8c24e29ae 10 m_electrovanne = new PwmOut(m_pinElectrovanne);
marwanesaich 0:84a8c24e29ae 11 m_pression = new AnalogIn(m_pinCapteurPression);
marwanesaich 0:84a8c24e29ae 12
marwanesaich 0:84a8c24e29ae 13 m_pompe->period_us(50);
marwanesaich 0:84a8c24e29ae 14 m_electrovanne->period_us(50);
marwanesaich 0:84a8c24e29ae 15
marwanesaich 0:84a8c24e29ae 16 m_pompe->write(0);
marwanesaich 0:84a8c24e29ae 17 m_electrovanne->write(0);
marwanesaich 2:4cc8fa2f64be 18
marwanesaich 2:4cc8fa2f64be 19 flag_attraper = 0;
marwanesaich 2:4cc8fa2f64be 20 flag_relacher = 0;
marwanesaich 2:4cc8fa2f64be 21
marwanesaich 2:4cc8fa2f64be 22 etat = Attente;
marwanesaich 2:4cc8fa2f64be 23 m_ack = 0;
marwanesaich 2:4cc8fa2f64be 24 }
marwanesaich 2:4cc8fa2f64be 25
marwanesaich 2:4cc8fa2f64be 26 void Ventouse::automate()
marwanesaich 2:4cc8fa2f64be 27 {
marwanesaich 2:4cc8fa2f64be 28 switch(etat)
marwanesaich 2:4cc8fa2f64be 29 {
marwanesaich 2:4cc8fa2f64be 30 case Attente :
marwanesaich 2:4cc8fa2f64be 31 if(flag_attraper)
marwanesaich 2:4cc8fa2f64be 32 {
marwanesaich 2:4cc8fa2f64be 33 attraper();
marwanesaich 2:4cc8fa2f64be 34 etat = Attraper;
marwanesaich 2:4cc8fa2f64be 35 }
marwanesaich 2:4cc8fa2f64be 36 break;
marwanesaich 2:4cc8fa2f64be 37
marwanesaich 2:4cc8fa2f64be 38 case Attraper :
marwanesaich 2:4cc8fa2f64be 39 if(getPression())
marwanesaich 2:4cc8fa2f64be 40 {
marwanesaich 2:4cc8fa2f64be 41 etat = Attraper_ok;
marwanesaich 2:4cc8fa2f64be 42 }else if(flag_relacher)
marwanesaich 2:4cc8fa2f64be 43 {
marwanesaich 2:4cc8fa2f64be 44 relacher();
marwanesaich 2:4cc8fa2f64be 45 etat = Relacher;
marwanesaich 2:4cc8fa2f64be 46 }
marwanesaich 2:4cc8fa2f64be 47 break;
marwanesaich 2:4cc8fa2f64be 48
marwanesaich 2:4cc8fa2f64be 49 case Attraper_ok :
marwanesaich 2:4cc8fa2f64be 50 if(flag_relacher)
marwanesaich 2:4cc8fa2f64be 51 {
marwanesaich 2:4cc8fa2f64be 52 relacher();
marwanesaich 2:4cc8fa2f64be 53 wait(0.5);
marwanesaich 2:4cc8fa2f64be 54 etat = Relacher;
marwanesaich 2:4cc8fa2f64be 55 }
marwanesaich 2:4cc8fa2f64be 56 break;
marwanesaich 2:4cc8fa2f64be 57
marwanesaich 2:4cc8fa2f64be 58 case Relacher :
marwanesaich 2:4cc8fa2f64be 59 if(!getPression())
marwanesaich 2:4cc8fa2f64be 60 {
marwanesaich 2:4cc8fa2f64be 61 m_electrovanne->write(0.0);
marwanesaich 2:4cc8fa2f64be 62 etat = Attente;
marwanesaich 2:4cc8fa2f64be 63 }
marwanesaich 2:4cc8fa2f64be 64 break;
marwanesaich 2:4cc8fa2f64be 65
marwanesaich 2:4cc8fa2f64be 66 }
marwanesaich 2:4cc8fa2f64be 67 }
marwanesaich 2:4cc8fa2f64be 68
marwanesaich 2:4cc8fa2f64be 69
marwanesaich 2:4cc8fa2f64be 70 void Ventouse::action(bool action)
marwanesaich 2:4cc8fa2f64be 71 {
marwanesaich 2:4cc8fa2f64be 72 flag_attraper = action;
marwanesaich 2:4cc8fa2f64be 73 flag_relacher = !action;
marwanesaich 0:84a8c24e29ae 74 }
marwanesaich 0:84a8c24e29ae 75
marwanesaich 0:84a8c24e29ae 76 void Ventouse::attraper()
marwanesaich 0:84a8c24e29ae 77 {
marwanesaich 0:84a8c24e29ae 78 m_pompe->write(0.5);
marwanesaich 0:84a8c24e29ae 79 m_electrovanne->write(0.0);
marwanesaich 0:84a8c24e29ae 80
marwanesaich 0:84a8c24e29ae 81 }
marwanesaich 0:84a8c24e29ae 82
marwanesaich 0:84a8c24e29ae 83 void Ventouse::relacher()
marwanesaich 0:84a8c24e29ae 84 {
marwanesaich 0:84a8c24e29ae 85 m_pompe->write(0.0);
marwanesaich 0:84a8c24e29ae 86 m_electrovanne->write(1.0);
marwanesaich 0:84a8c24e29ae 87
marwanesaich 0:84a8c24e29ae 88 }
marwanesaich 0:84a8c24e29ae 89
marwanesaich 2:4cc8fa2f64be 90 bool Ventouse::getPression()
marwanesaich 0:84a8c24e29ae 91 {
marwanesaich 0:84a8c24e29ae 92 if(m_pression->read() > SEUIL){
marwanesaich 0:84a8c24e29ae 93 return 1;
marwanesaich 0:84a8c24e29ae 94 }
marwanesaich 0:84a8c24e29ae 95 else{
marwanesaich 0:84a8c24e29ae 96 return 0;
marwanesaich 0:84a8c24e29ae 97 }
marwanesaich 0:84a8c24e29ae 98
marwanesaich 0:84a8c24e29ae 99 }
marwanesaich 0:84a8c24e29ae 100
marwanesaich 2:4cc8fa2f64be 101 bool Ventouse::getPompe()
marwanesaich 0:84a8c24e29ae 102 {
marwanesaich 0:84a8c24e29ae 103 if(m_pompe->read() > 0){
marwanesaich 0:84a8c24e29ae 104 return 1;
marwanesaich 0:84a8c24e29ae 105 }
marwanesaich 0:84a8c24e29ae 106 else{
marwanesaich 0:84a8c24e29ae 107 return 0;
marwanesaich 0:84a8c24e29ae 108 }
marwanesaich 0:84a8c24e29ae 109 }
marwanesaich 0:84a8c24e29ae 110
marwanesaich 0:84a8c24e29ae 111 void Ventouse::setPompe(float val)
marwanesaich 0:84a8c24e29ae 112 {
marwanesaich 0:84a8c24e29ae 113 m_pompe->write(val);
marwanesaich 0:84a8c24e29ae 114 }
marwanesaich 0:84a8c24e29ae 115
marwanesaich 0:84a8c24e29ae 116 void Ventouse::setElectrovanne(float val)
marwanesaich 0:84a8c24e29ae 117 {
marwanesaich 0:84a8c24e29ae 118 m_electrovanne->write(val);
marwanesaich 0:84a8c24e29ae 119 }
marwanesaich 0:84a8c24e29ae 120
marwanesaich 0:84a8c24e29ae 121
marwanesaich 0:84a8c24e29ae 122