Restructuration du projet entier

This commit is contained in:
Cameron Bray 2020-05-16 17:13:01 +02:00
parent a070cc44eb
commit f70cd29467
32 changed files with 439 additions and 216 deletions

View file

@ -0,0 +1,5 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/AnalogDevices/AnalogActuators/AnalogActuatorMotor.h"

View file

@ -0,0 +1,19 @@
//
// Created by camer on 16/05/2020.
//
#include "../../include/AnalogDevices/AnalogDevice.h"
//AnalogDevice ///////////////////
AnalogDevice::AnalogDevice(int val, int temps) : Device(), val(val), temps(temps) {}
int AnalogDevice::getVal() const {
return val;
}
int AnalogDevice::getTemps() const {
return temps;
}
AnalogSensor::AnalogSensor(int val, int temps) : AnalogDevice(val, temps) {}
AnalogActuator::AnalogActuator(int val, int temps) : AnalogDevice(val, temps) {}

View file

@ -0,0 +1,5 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/AnalogDevices/AnalogSensors/AnalogSensorHumidity.h"

View file

@ -0,0 +1,18 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/AnalogDevices/AnalogSensors/AnalogSensorLuminosity.h"
//AnalogSensorLuminosity ///////////////////////////
AnalogSensorLuminosity::AnalogSensorLuminosity(int temps):AnalogDevice(200, temps){}
void AnalogSensorLuminosity::run(){
while(1){
val = luminosite_environnement;
if(ptrmem!=NULL){
*ptrmem = val;
}
sleep(temps);
}
}

View file

@ -0,0 +1,5 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/AnalogDevices/AnalogSensors/AnalogSensorManometre.h"

View file

@ -0,0 +1,5 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/AnalogDevices/AnalogSensors/AnalogSensorPHmetre.h"

View file

@ -0,0 +1,19 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/AnalogDevices/AnalogSensors/AnalogSensorTemperature.h"
//classe AnalogSensorTemperature
AnalogSensorTemperature::AnalogSensorTemperature(int val,int temps):AnalogDevice(val,temps){
alea=1;
}
void AnalogSensorTemperature::run(){
while(1){
alea=1-alea;
if(ptrmem!=NULL)
*ptrmem=val+alea;
sleep(temps);
}
}

View file

@ -0,0 +1,5 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/DigitalDevices/DigitalActuators/DigitalActuatorElectrovanne.h"

View file

@ -0,0 +1,5 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/DigitalDevices/DigitalActuators/DigitalActuatorRadiator.h"

View file

@ -0,0 +1,33 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/DigitalDevices/DigitalActuators/IntelligentDigitalActuatorLED.h"
// IntelligentDigitalActuatorLED //////////////////
IntelligentDigitalActuatorLED::IntelligentDigitalActuatorLED(int t):DigitalDevice(t){}
void IntelligentDigitalActuatorLED::run(){
int previousState = LOW; //initialisee a eteint
while(1){
if(ptrmem!=NULL) {
state = *ptrmem;
if (state == LOW) {
cout << "((((eteint))))\n";
if (state != previousState) {
luminosite_environnement -= 50;
}
previousState = state;
} else { //state == HIGH
cout << "((((allume))))\n";
if (state != previousState) {
luminosite_environnement += 50;
}
previousState = state;
}
}
sleep(temps);
}
}

View file

@ -0,0 +1,21 @@
//
// Created by camer on 16/05/2020.
//
#include "../../include/DigitalDevices/DigitalDevice.h"
//DigitalDevice ///////////////////
DigitalDevice::DigitalDevice(int temps) : Device(), state(LOW), temps(temps) {}
int DigitalDevice::getState() const {
return state;
}
int DigitalDevice::getTemps() const {
return temps;
}
//DigitalSensors
DigitalSensor::DigitalSensor(int temps) : DigitalDevice(temps) {}
DigitalActuator::DigitalActuator(int temps) : DigitalDevice(temps) {}

View file

@ -0,0 +1,30 @@
//
// Created by camer on 16/05/2020.
//
#include "../../../include/DigitalDevices/DigitalSensors/ExternalDigitalSensorButton.h"
//ExternalDigDevice/////////////////////////
ExternalDigitalSensorButton::ExternalDigitalSensorButton(int temps):DigitalSensor(temps) {}
int ExternalDigitalSensorButton::getState(){
setState(); //determine if on.txt exists before getting state
return state;
}
void ExternalDigitalSensorButton::setState() {
if (ifstream("D:\\Documents\\Etudes\\INSA\\4A\\C++\\Projet_VictorAvecUnK\\src\\on.txt")){
state = HIGH;
} else {
state = LOW;
}
}
void ExternalDigitalSensorButton::run() {
while (1) {
*ptrmem = this->getState();
sleep(temps);
}
}

View file

@ -1,5 +1,9 @@
#include "core_simulation.h"
#include "mydevices.h"
#include "include/AnalogDevices/AnalogSensors/AnalogSensorTemperature.h"
#include "include/DigitalDevices/DigitalActuators/IntelligentDigitalActuatorLED.h"
#include "include/AnalogDevices/AnalogSensors/AnalogSensorLuminosity.h"
#include "include/DigitalDevices/DigitalSensors/ExternalDigitalSensorButton.h"
int main(){

View file

@ -1,3 +0,0 @@
#!/usr/bin/bash
echo "g++ -Wall -std=c++11 board.cpp core_simulation.cpp mydevices.cpp sketch_ino.cpp -o arduino"
g++ -Wall -std=c++11 board.cpp core_simulation.cpp mydevices.cpp sketch_ino.cpp -o arduino

View file

@ -2,7 +2,6 @@
#include <thread>
#include <unistd.h>
#include <string.h>
#include "core_simulation.h"
// class BoardException

View file

@ -91,24 +91,24 @@ public:
class Board{
public:
// valeur sur les pin
unsigned short io[MAX_IO_PIN];
unsigned short io[MAX_IO_PIN];
// pin d'entree ou de sortie
enum typeio stateio[MAX_IO_PIN];
enum typeio stateio[MAX_IO_PIN];
// threads representant chaque senseur/actionneur sur le pins analogique et digitale
thread *tabthreadpin[MAX_IO_PIN];
thread *tabthreadpin[MAX_IO_PIN];
// representation du bus I2C
I2C bus;
I2C bus;
// representation de la liaison terminal
Terminal Serial;
Terminal Serial;
// threads representant chaque senseur/actionneur sur le bus I2C
thread *tabthreadbus[MAX_I2C_DEVICES];
thread *tabthreadbus[MAX_I2C_DEVICES];
// simulation de la boucle de controle arduino
void run();
// accroachage d'un senseur/actionneur à une pin
void pin(int p, Device& s);
// accroachage d'un senseur/actionneur à une adresse du bus I2C
void i2c(int addr,Device& dev);
void i2c(int addr,Device& dev);
// fonction arduino : configuration d'une pin en entree ou en sortie
void pinMode(int p,enum typeio t);
// fonction arduino : ecriture HIGH ou LOW sur une pin
@ -120,9 +120,9 @@ public:
// fonction arduino : ecriture analogique sur une pin
int analogRead(int i);
// fonction arduino : initialisation de la carte arduino
void setup();
void setup();
// fonction arduino : boucle de controle de la carte arduino
void loop();
void loop();
};
#endif

View file

@ -0,0 +1,14 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_ANALOGACTUATORMOTOR_H
#define PROJET_VICTORAVECUNK_ANALOGACTUATORMOTOR_H
class AnalogActuatorMotor {
};
#endif //PROJET_VICTORAVECUNK_ANALOGACTUATORMOTOR_H

View file

@ -0,0 +1,34 @@
//
// Created by camer on 16/05/2020.
//
#include "../../core_simulation.h"
#include "../../mydevices.h"
#ifndef PROJET_VICTORAVECUNK_ANALOGDEVICE_H
#define PROJET_VICTORAVECUNK_ANALOGDEVICE_H
class AnalogDevice : public Device{
protected:
int val;
// temps entre 2 prises de valeurs
int temps;
// valeur de temperature mesuree
public:
AnalogDevice(int val, int temps);
int getVal() const;
int getTemps() const;
};
class AnalogSensor : public AnalogDevice{
public:
AnalogSensor(int val, int temps);
};
class AnalogActuator : public AnalogDevice{
public:
AnalogActuator(int val, int temps);
};
#endif //PROJET_VICTORAVECUNK_ANALOGDEVICE_H

View file

@ -0,0 +1,14 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_ANALOGSENSORHUMIDITY_H
#define PROJET_VICTORAVECUNK_ANALOGSENSORHUMIDITY_H
class AnalogSensorHumidity {
};
#endif //PROJET_VICTORAVECUNK_ANALOGSENSORHUMIDITY_H

View file

@ -0,0 +1,23 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_ANALOGSENSORLUMINOSITY_H
#define PROJET_VICTORAVECUNK_ANALOGSENSORLUMINOSITY_H
#include <iostream>
#include <thread>
#include <unistd.h>
#include <string.h>
#include <fstream>
#include "../AnalogDevice.h"
class AnalogSensorLuminosity: public AnalogDevice{
public:
AnalogSensorLuminosity(int t);
virtual void run();
};
#endif //PROJET_VICTORAVECUNK_ANALOGSENSORLUMINOSITY_H

View file

@ -0,0 +1,14 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_ANALOGSENSORMANOMETRE_H
#define PROJET_VICTORAVECUNK_ANALOGSENSORMANOMETRE_H
class AnalogSensorManometre {
};
#endif //PROJET_VICTORAVECUNK_ANALOGSENSORMANOMETRE_H

View file

@ -0,0 +1,14 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_ANALOGSENSORPHMETRE_H
#define PROJET_VICTORAVECUNK_ANALOGSENSORPHMETRE_H
class AnalogSensorPHmetre {
};
#endif //PROJET_VICTORAVECUNK_ANALOGSENSORPHMETRE_H

View file

@ -0,0 +1,29 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_ANALOGSENSORTEMPERATURE_H
#define PROJET_VICTORAVECUNK_ANALOGSENSORTEMPERATURE_H
#include <iostream>
#include <thread>
#include <unistd.h>
#include <string.h>
#include <fstream>
#include "../AnalogDevice.h"
// exemple de capteur analogique de temperature, ne pas oublier d'heriter de Device
class AnalogSensorTemperature: public AnalogDevice {
private:
// fait osciller la valeur du cpateur de 1
int alea;
public:
//constructeur ne pas oublier d'initialiser la classe mere
AnalogSensorTemperature(int d,int t);
// thread representant le capteur et permettant de fonctionner independamment de la board
virtual void run();
};
#endif //PROJET_VICTORAVECUNK_ANALOGSENSORTEMPERATURE_H

View file

@ -0,0 +1,14 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_DIGITALACTUATORELECTROVANNE_H
#define PROJET_VICTORAVECUNK_DIGITALACTUATORELECTROVANNE_H
class DigitalActuatorElectrovanne {
};
#endif //PROJET_VICTORAVECUNK_DIGITALACTUATORELECTROVANNE_H

View file

@ -0,0 +1,14 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_DIGITALACTUATORRADIATOR_H
#define PROJET_VICTORAVECUNK_DIGITALACTUATORRADIATOR_H
class DigitalActuatorRadiator {
};
#endif //PROJET_VICTORAVECUNK_DIGITALACTUATORRADIATOR_H

View file

@ -0,0 +1,26 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_INTELLIGENTDIGITALACTUATORLED_H
#define PROJET_VICTORAVECUNK_INTELLIGENTDIGITALACTUATORLED_H
#include <iostream>
#include <thread>
#include <unistd.h>
#include <string.h>
#include <fstream>
#include "../DigitalDevice.h"
class IntelligentDigitalActuatorLED: public DigitalDevice{
public:
// initialisation du temps de rafraichiisement
IntelligentDigitalActuatorLED(int t);
// thread representant l'actionneur et permettant de fonctionner independamment de la board
virtual void run();
};
#endif //PROJET_VICTORAVECUNK_INTELLIGENTDIGITALACTUATORLED_H

View file

@ -0,0 +1,33 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_DIGITALDEVICE_H
#define PROJET_VICTORAVECUNK_DIGITALDEVICE_H
#include "../../core_simulation.h"
#include "../../mydevices.h"
class DigitalDevice : public Device {
protected:
int state;
int temps;
public:
DigitalDevice(int temps);
int getState() const;
int getTemps() const;
};
class DigitalSensor : public DigitalDevice{
public:
DigitalSensor(int temps);
};
class DigitalActuator : public DigitalDevice{
public:
DigitalActuator(int temps);
};
#endif //PROJET_VICTORAVECUNK_DIGITALDEVICE_H

View file

@ -0,0 +1,22 @@
//
// Created by camer on 16/05/2020.
//
#ifndef PROJET_VICTORAVECUNK_EXTERNALDIGITALSENSORBUTTON_H
#define PROJET_VICTORAVECUNK_EXTERNALDIGITALSENSORBUTTON_H
#include "../DigitalDevice.h"
class ExternalDigitalSensorButton : public DigitalSensor{
public:
ExternalDigitalSensorButton(int temps);
int getState();
void setState();
virtual void run();
};
#endif //PROJET_VICTORAVECUNK_EXTERNALDIGITALSENSORBUTTON_H

View file

@ -3,90 +3,8 @@
//int luminosite_environnement = 200;
using namespace std;
//DigitalDevice ///////////////////
DigitalDevice::DigitalDevice(int temps) : Device(), state(0), temps(temps) {}
int DigitalDevice::getState() const {
return state;
}
int DigitalDevice::getTemps() const {
return temps;
}
//AnalogDevice ///////////////////
AnalogDevice::AnalogDevice(int val, int temps) : Device(), val(val), temps(temps) {}
int AnalogDevice::getVal() const {
return val;
}
int AnalogDevice::getTemps() const {
return temps;
}
//classe AnalogSensorTemperature
AnalogSensorTemperature::AnalogSensorTemperature(int val,int temps):AnalogDevice(val,temps){
alea=1;
}
void AnalogSensorTemperature::run(){
while(1){
alea=1-alea;
if(ptrmem!=NULL)
*ptrmem=val+alea;
sleep(temps);
}
}
//AnalogSensorLuminosity ///////////////////////////
AnalogSensorLuminosity::AnalogSensorLuminosity(int temps):AnalogDevice(200, temps){}
void AnalogSensorLuminosity::run(){
while(1){
val = luminosite_environnement;
if(ptrmem!=NULL){
*ptrmem = val;
}
sleep(temps);
}
}
// IntelligentDigitalActuatorLED //////////////////
IntelligentDigitalActuatorLED::IntelligentDigitalActuatorLED(int t):DigitalDevice(t){
}
void IntelligentDigitalActuatorLED::run(){
int previousState = LOW; //initialisee a eteint
while(1){
if(ptrmem!=NULL) {
state = *ptrmem;
if (state == LOW) {
cout << "((((eteint))))\n";
if (state != previousState) {
luminosite_environnement -= 50;
}
previousState = state;
} else { //state == HIGH
cout << "((((allume))))\n";
if (state != previousState) {
luminosite_environnement += 50;
}
previousState = state;
}
}
sleep(temps);
}
}
// classe I2CActuatorScreen
I2CActuatorScreen::I2CActuatorScreen ():Device(){
}
I2CActuatorScreen::I2CActuatorScreen ():Device(){}
void I2CActuatorScreen::run(){
while(1){
@ -99,30 +17,6 @@ void I2CActuatorScreen::run(){
}
//ExternalDigDevice/////////////////////////
ExternalDigitalSensorButton::ExternalDigitalSensorButton(int temps):DigitalDevice(temps) {}
int ExternalDigitalSensorButton::getState(){
setState(); //determine if on.txt exists before getting state
return state;
}
void ExternalDigitalSensorButton::setState() {
if (ifstream("on.txt")){
state = 1;
} else {
state = 0;
}
}
void ExternalDigitalSensorButton::run() {
while (1) {
*ptrmem = this->getState();
sleep(temps);
}
}
//TODO Capteur de temperature a revoir avec conditions
//TODO Electrovanne / moteur (a voir food)
//TODO Radiateur rechauffer terrarium

View file

@ -9,87 +9,11 @@
#include "core_simulation.h"
static int luminosite_environnement = 200;
class DigitalDevice : public Device {
protected:
int state;
int temps;
public:
DigitalDevice(int temps);
int getState() const;
int getTemps() const;
};
class AnalogDevice : public Device{
protected:
int val;
// temps entre 2 prises de valeurs
int temps;
// valeur de temperature mesuree
public:
AnalogDevice(int val, int temps);
int getVal() const;
int getTemps() const;
};
// exemple de capteur analogique de temperature, ne pas oublier d'heriter de Device
class AnalogSensorTemperature: public AnalogDevice {
private:
// fait osciller la valeur du cpateur de 1
int alea;
public:
//constructeur ne pas oublier d'initialiser la classe mere
AnalogSensorTemperature(int d,int t);
// thread representant le capteur et permettant de fonctionner independamment de la board
virtual void run();
};
class AnalogSensorLuminosity: public AnalogDevice{
public:
AnalogSensorLuminosity(int t);
virtual void run();
};
// exemple d'actionneur digital : une led, ne pas oublier d'heriter de Device
class DigitalActuatorLED: public Device {
private:
// etat de la LED
int state;
// temps entre 2 affichage de l etat de la led
int temps;
public:
// initialisation du temps de rafraichiisement
DigitalActuatorLED(int t);
// thread representant l'actionneur et permettant de fonctionner independamment de la board
virtual void run();
};
class IntelligentDigitalActuatorLED: public DigitalDevice{
public:
// initialisation du temps de rafraichiisement
IntelligentDigitalActuatorLED(int t);
// thread representant l'actionneur et permettant de fonctionner independamment de la board
virtual void run();
};
// exemple d'actionneur sur le bus I2C permettant d'echanger des tableaux de caracteres : un ecran, ne pas oublier d'heriter de Device
class I2CActuatorScreen : public Device{
protected:
// memorise l'affichage de l'ecran
char buf[I2C_BUFFER_SIZE];
char buf[I2C_BUFFER_SIZE];
public:
// constructeur
@ -97,21 +21,5 @@ public:
// thread representant le capteur et permettant de fonctionner independamment de la board
virtual void run();
};
class ExternalDigitalSensorButton : public DigitalDevice{
public:
ExternalDigitalSensorButton(int temps);
int getState();
void setState();
virtual void run();
};
//class ExternalDigitalSensorButton: public Device
#endif

0
on.txt Normal file
View file

View file

@ -16,7 +16,7 @@ void Board::setup(){
void Board::loop(){
char buf[100];
int val;
int val1;
int val1;
static int cpt=0;
static int bascule=0;
int i=0;
@ -44,9 +44,9 @@ void Board::loop(){
}
// on eteint et on allume la LED
if(analogRead(4))
digitalWrite(0,HIGH);
digitalWrite(0,HIGH);
else
digitalWrite(0,LOW);
digitalWrite(0,LOW);
bascule=1-bascule;
}