RegulationIntensite/mesure.cpp

130 lines
2.8 KiB
C++
Raw Normal View History

2017-02-15 19:48:31 +01:00
#include <stdarg.h>
#include "arduino.h"
#include "mesure.h"
courant::courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r)
{
this->pinPWM = pinPWM;
this->pinU1 = pinU1;
this->pinU2 = pinU2;
this->r = r;
pinMode(pinPWM, 1);
pinMode(pinU1, 0);
pinMode(pinU2, 0);
bridgeU1Enable = 0;
bridgeU2Enable = 0;
bridgeU1RapportR = 1;
bridgeU2RapportR = 1;
}
courant::courant(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable, ...)
{
this->pinPWM = pinPWM;
this->pinU1 = pinU1;
this->pinU2 = pinU2;
this->r = r;
pinMode(pinPWM, 1);
pinMode(pinU1, 0);
pinMode(pinU2, 0);
this->bridgeU1Enable = bridgeU1Enable;
this->bridgeU2Enable = bridgeU2Enable;
va_list ap;
va_start(ap, bridgeU2Enable);
if(bridgeU1Enable)
{
this->bridgeU1Enable = bridgeU1Enable;
this->bridgeU2Enable = bridgeU2Enable;
bridgeU1RapportR = va_arg(ap, float);
if(bridgeU2Enable)
bridgeU2RapportR = va_arg(ap, float);
else
bridgeU2RapportR = 1;
}
else
{
this->bridgeU1Enable = 0;
this->bridgeU2Enable = bridgeU2Enable;
bridgeU1RapportR = 1;
if(bridgeU2Enable)
bridgeU2RapportR = va_arg(ap, float);
else
bridgeU2RapportR = 1;
}
va_end(ap);
}
void courant::config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r)
{
this->pinPWM = pinPWM;
this->pinU1 = pinU1;
this->pinU2 = pinU2;
this->r = r;
pinMode(pinPWM, 1);
pinMode(pinU1, 0);
pinMode(pinU2, 0);
bridgeU1Enable = 0;
bridgeU2Enable = 0;
bridgeU1RapportR = 1;
bridgeU2RapportR = 1;
}
void courant::config(uint8_t pinPWM, uint8_t pinU1, uint8_t pinU2, int r, uint8_t bridgeU1Enable, uint8_t bridgeU2Enable, ...)
{
this->pinPWM = pinPWM;
this->pinU1 = pinU1;
this->pinU2 = pinU2;
this->r = r;
pinMode(pinPWM, 1);
pinMode(pinU1, 0);
pinMode(pinU2, 0);
this->bridgeU1Enable = bridgeU1Enable;
this->bridgeU2Enable = bridgeU2Enable;
va_list ap;
va_start(ap, bridgeU2Enable);
if(bridgeU1Enable)
{
this->bridgeU1Enable = bridgeU1Enable;
this->bridgeU2Enable = bridgeU2Enable;
bridgeU1RapportR = va_arg(ap, float);
if(bridgeU2Enable)
bridgeU2RapportR = va_arg(ap, float);
else
bridgeU2RapportR = 1;
}
else
{
this->bridgeU1Enable = 0;
this->bridgeU2Enable = bridgeU2Enable;
bridgeU1RapportR = 1;
if(bridgeU2Enable)
bridgeU2RapportR = va_arg(ap, float);
else
bridgeU2RapportR = 1;
}
va_end(ap);
}
void courant::lireTension()
{
u1RAW = analogRead(pinU1);
u2RAW = analogRead(pinU2);
u1 = (u1RAW*(5.0/1024.0))*bridgeU1RapportR;
u2 = (u2RAW*(5.0/1024.0))*bridgeU2RapportR;
}
float courant::lireCourant()
{
lireTension();
float i = ((u1-u2)/820.0)*1000;
return i;
}
float courant::lireTensionU1()
{
return u1;
}
float courant::lireTensionU2()
{
return u2;
}