This commit is contained in:
Cameron Bray 2020-05-16 18:52:12 +02:00
parent b01f407157
commit 5bfd6e3687
6 changed files with 44 additions and 19 deletions

View file

@ -4,9 +4,9 @@
#include "../../include/AnalogDevices/AnalogDevice.h" #include "../../include/AnalogDevices/AnalogDevice.h"
//AnalogDevice /////////////////// //AnalogDevice ///////////////////
AnalogDevice::AnalogDevice(int val, int temps) : Device(), val(val), temps(temps) {} AnalogDevice::AnalogDevice(float val, int temps) : Device(), val(val), temps(temps) {}
int AnalogDevice::getVal() const { float AnalogDevice::getVal() const {
return val; return val;
} }
@ -14,6 +14,6 @@ int AnalogDevice::getTemps() const {
return temps; return temps;
} }
AnalogSensor::AnalogSensor(int val, int temps) : AnalogDevice(val, temps) {} AnalogSensor::AnalogSensor(float val, int temps) : AnalogDevice(val, temps) {}
AnalogActuator::AnalogActuator(int val, int temps) : AnalogDevice(val, temps) {} AnalogActuator::AnalogActuator(float val, int temps) : AnalogDevice(val, temps) {}

View file

@ -6,14 +6,19 @@
//classe AnalogSensorTemperature //classe AnalogSensorTemperature
AnalogSensorTemperature::AnalogSensorTemperature(int val,int temps):AnalogDevice(val,temps){ AnalogSensorTemperature::AnalogSensorTemperature(int val,int temps):AnalogDevice(val,temps){
alea=1; alea = -1;
} }
void AnalogSensorTemperature::run(){ void AnalogSensorTemperature::run(){
int cpt = 0;
while(1){ while(1){
alea=1-alea; if((ptrmem!=NULL)&&(cpt%5==0))
if(ptrmem!=NULL)
*ptrmem=val+alea; *ptrmem=val+alea;
sleep(temps); sleep(temps);
cpt ++;
} }
} }
void AnalogSensorTemperature::setAlea(int alea) {
AnalogSensorTemperature::alea = alea;
}

View file

@ -4,8 +4,21 @@
#include "../../../include/DigitalDevices/DigitalActuators/DigitalActuatorRadiator.h" #include "../../../include/DigitalDevices/DigitalActuators/DigitalActuatorRadiator.h"
DigitalActuatorRadiator::DigitalActuatorRadiator(int temps) : DigitalActuator(temps) {} DigitalActuatorRadiator::DigitalActuatorRadiator(int temps, float threshold) : DigitalActuator(temps),
threshold(threshold) {}
void DigitalActuatorRadiator::activate() { void DigitalActuatorRadiator::activate() {
DigitalDevice::state = HIGH; DigitalDevice::state = HIGH;
} }
void DigitalActuatorRadiator::Run() {
int previousState = LOW;
while (1){
state = *ptrmem;
if ((state != previousState)||(state == HIGH)){
AnalogSensorTemperature::setAlea(1);
} else if((state != previousState)||(state == LOW)) {
AnalogSensorTemperature::setAlea(-1);
}
}
}

View file

@ -11,24 +11,24 @@
class AnalogDevice : public Device{ class AnalogDevice : public Device{
protected: protected:
int val; float val;
// temps entre 2 prises de valeurs // temps entre 2 prises de valeurs
int temps; int temps;
// valeur de temperature mesuree // valeur de temperature mesuree
public: public:
AnalogDevice(int val, int temps); AnalogDevice(float val, int temps);
int getVal() const; float getVal() const;
int getTemps() const; int getTemps() const;
}; };
class AnalogSensor : public AnalogDevice{ class AnalogSensor : public AnalogDevice{
public: public:
AnalogSensor(int val, int temps); AnalogSensor(float val, int temps);
}; };
class AnalogActuator : public AnalogDevice{ class AnalogActuator : public AnalogDevice{
public: public:
AnalogActuator(int val, int temps); AnalogActuator(float val, int temps);
}; };
#endif //PROJET_VICTORAVECUNK_ANALOGDEVICE_H #endif //PROJET_VICTORAVECUNK_ANALOGDEVICE_H

View file

@ -12,15 +12,18 @@
#include <fstream> #include <fstream>
#include "../AnalogDevice.h" #include "../AnalogDevice.h"
// exemple de capteur analogique de temperature, ne pas oublier d'heriter de Device // exemple de capteur analogique de temperature, ne pas oublier d'heriter de Device
class AnalogSensorTemperature: public AnalogDevice { class AnalogSensorTemperature: public AnalogDevice {
private:
// fait osciller la valeur du cpateur de 1
int alea;
public: public:
// fait osciller la valeur du cpateur de 1
static int alea; //TODO modifier dans diagramme de classe
//constructeur ne pas oublier d'initialiser la classe mere //constructeur ne pas oublier d'initialiser la classe mere
AnalogSensorTemperature(int d,int t); AnalogSensorTemperature(int d,int t);
static void setAlea(int alea); //TODO mettre dans diagramme de classe
// thread representant le capteur et permettant de fonctionner independamment de la board // thread representant le capteur et permettant de fonctionner independamment de la board
virtual void run(); virtual void run();
}; };

View file

@ -7,11 +7,15 @@
#include "../DigitalDevice.h" #include "../DigitalDevice.h"
#include "../../../include/AnalogDevices/AnalogSensors/AnalogSensorTemperature.h"
class DigitalActuatorRadiator : public DigitalActuator { class DigitalActuatorRadiator : public DigitalActuator {
private:
float threshold;
public: public:
DigitalActuatorRadiator(int temps); DigitalActuatorRadiator(int temps, float threshold);
void activate(); void activate();
void Run();
}; };