Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed ident_crac
class_ventouse.cpp
00001 #include "class_ventouse.h" 00002 //valeur de seuil des capteurs de pression 00003 float seuil[NB_VENTOUSES] = {0.1, 0.1, 0.1, 0.1, 0.1, 0.1}; 00004 #define PWM_POMPE 0.7 00005 #define PWM_ELECTROVANNE 0.3 00006 00007 Ventouse::Ventouse(PinName pinPompe, PinName pinElectrovanne, PinName pinCapteurPression, char index) : m_pinPompe(pinPompe), 00008 m_pinElectrovanne(pinElectrovanne), m_pinCapteurPression(pinCapteurPression), m_index(index) 00009 { 00010 m_pompe = new PwmOut(m_pinPompe); 00011 m_electrovanne = new PwmOut(m_pinElectrovanne); 00012 m_pression = new AnalogIn(m_pinCapteurPression); 00013 00014 m_pompe->period_us(20); 00015 m_electrovanne->period_us(20); 00016 00017 m_pompe->write(0); 00018 m_electrovanne->write(0); 00019 00020 flag_attraper = 0; 00021 flag_relacher = 0; 00022 00023 etat = Attente; 00024 m_ack = 0; 00025 flag_electrovanne = 1; 00026 } 00027 00028 void Ventouse::automate() 00029 { 00030 switch(etat) 00031 { 00032 case Attente : 00033 if(flag_attraper) 00034 { 00035 attraper(); 00036 etat = Attraper; 00037 } 00038 break; 00039 00040 case Attraper : 00041 wait_ms(10.0); 00042 if(getPression()==1) 00043 { 00044 etat = Attraper_ok; 00045 }else if(flag_relacher) 00046 { 00047 relacher(); 00048 etat = Relacher; 00049 } 00050 break; 00051 00052 case Attraper_ok : 00053 if(flag_relacher) 00054 { 00055 relacher(); 00056 etat = Relacher; 00057 } 00058 break; 00059 00060 case Relacher : 00061 wait_ms(10.0); 00062 if(getPression() == 0) 00063 { 00064 if(flag_electrovanne) m_electrovanne->write(0); 00065 etat = Attente; 00066 } 00067 break; 00068 } 00069 } 00070 00071 void Ventouse::action(bool action) 00072 { 00073 flag_attraper = action; 00074 flag_relacher = !action; 00075 } 00076 00077 void Ventouse::attraper() 00078 { 00079 m_pompe->write(PWM_POMPE); 00080 if(flag_electrovanne) m_electrovanne->write(0.0); 00081 //modifier ligne de condition 00082 } 00083 00084 void Ventouse::relacher() 00085 { 00086 if(flag_electrovanne) m_electrovanne->write(PWM_ELECTROVANNE); 00087 m_pompe->write(0.0); 00088 } 00089 00090 bool Ventouse::getPression() 00091 { 00092 if(m_pression->read() > seuil[m_index]){ 00093 return 1; 00094 } 00095 else{ 00096 return 0; 00097 } 00098 } 00099 00100 bool Ventouse::getPompe() 00101 { 00102 if(m_pompe->read() > 0){ 00103 return 1; 00104 } 00105 else{ 00106 return 0; 00107 } 00108 } 00109 00110 void Ventouse::setPompe(float val) 00111 { 00112 m_pompe->write(val); 00113 } 00114 00115 void Ventouse::setElectrovanne(int val) 00116 { 00117 if(flag_electrovanne)m_electrovanne->write(val); 00118 }
Generated on Thu Jul 28 2022 00:11:33 by
