carte esclave pompe 2020 V1
Dependencies: mbed ident_crac
Diff: class_ventouse.cpp
- Revision:
- 2:4cc8fa2f64be
- Parent:
- 0:84a8c24e29ae
- Child:
- 3:cf33f9d4d6ff
- Child:
- 4:82c90657da4a
diff -r 8a55f1d5cb26 -r 4cc8fa2f64be class_ventouse.cpp --- a/class_ventouse.cpp Tue May 07 08:33:42 2019 +0000 +++ b/class_ventouse.cpp Tue May 07 13:14:29 2019 +0000 @@ -1,11 +1,10 @@ #include "class_ventouse.h" -#define SEUIL 0.3 +#define SEUIL 0.30 - -Ventouse::Ventouse(PinName pinPompe, PinName pinElectrovanne, PinName pinCapteurPression) : m_pinPompe(pinPompe), -m_pinElectrovanne(pinElectrovanne), m_pinCapteurPression(pinCapteurPression) +Ventouse::Ventouse(PinName pinPompe, PinName pinElectrovanne, PinName pinCapteurPression, char index) : m_pinPompe(pinPompe), +m_pinElectrovanne(pinElectrovanne), m_pinCapteurPression(pinCapteurPression), m_index(index) { m_pompe = new PwmOut(m_pinPompe); m_electrovanne = new PwmOut(m_pinElectrovanne); @@ -16,6 +15,62 @@ m_pompe->write(0); m_electrovanne->write(0); + + flag_attraper = 0; + flag_relacher = 0; + + etat = Attente; + m_ack = 0; +} + +void Ventouse::automate() +{ + switch(etat) + { + case Attente : + if(flag_attraper) + { + attraper(); + etat = Attraper; + } + break; + + case Attraper : + if(getPression()) + { + etat = Attraper_ok; + }else if(flag_relacher) + { + relacher(); + etat = Relacher; + } + break; + + case Attraper_ok : + if(flag_relacher) + { + relacher(); + wait(0.5); + etat = Relacher; + } + break; + + case Relacher : + if(!getPression()) + { + m_electrovanne->write(0.0); + etat = Attente; + } + break; + + } +} + + +void Ventouse::action(bool action) +{ + flag_attraper = action; + flag_relacher = !action; } void Ventouse::attraper() @@ -32,7 +87,7 @@ } -int Ventouse::getPression() +bool Ventouse::getPression() { if(m_pression->read() > SEUIL){ return 1; @@ -43,7 +98,7 @@ } -int Ventouse::getPompe() +bool Ventouse::getPompe() { if(m_pompe->read() > 0){ return 1; @@ -65,4 +120,3 @@ -