Ajout tortue fonctionne

This commit is contained in:
Cameron Bray 2020-05-26 23:08:53 +02:00
parent 0856b5762c
commit eea602662f
9 changed files with 117 additions and 68 deletions

View file

@ -7,11 +7,20 @@
Keyboard::Keyboard(): Device() {} Keyboard::Keyboard(): Device() {}
//void Keyboard::run() {} //void Keyboard::run() {}
bool Keyboard::saisie = false;
void Keyboard::saisie() { void Keyboard::run() {
while (1) {
if (saisie && i2cbus != NULL) {
cin >> buf; cin >> buf;
if (i2cbus!=NULL){ while (!(i2cbus->isEmptyRegister(i2caddr))) {}
Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
saisie = false;
} else if (i2cbus != NULL){
buf[0] = '\0';
while (!(i2cbus->isEmptyRegister(i2caddr))) {} while (!(i2cbus->isEmptyRegister(i2caddr))) {}
Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE); Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE);
} }
sleep(3);
}
} }

View file

@ -168,10 +168,17 @@ void Menu::menuNext() {
else if(id == 5){ else if(id == 5){
listId.push_back(id); listId.push_back(id);
id = 11; id = 11;
choice = 2;
} }
else if (id == 11){ else if (id == 11){
listId.push_back(id); listId.push_back(id);
id = 12; id = 12;
choice = 2;
}
else if (id == 12){
listId.clear();
id = 0;
choice = 0;
} }
} }

View file

@ -5,7 +5,8 @@
#include "../include/Terrarium.h" #include "../include/Terrarium.h"
#include "../../core_simulation.h" #include "../../core_simulation.h"
Terrarium::Terrarium(int id) : id(id), Terrarium::Terrarium(int id) : id(id),
radState(LOW), tapState(LOW){} radState(LOW), tapState(LOW), NextState{LOW},
PrevState(LOW), OKState(LOW), BackState(LOW){}
int Terrarium::getRadState() const { int Terrarium::getRadState() const {
return radState; return radState;

View file

@ -7,7 +7,9 @@
//#include <string> //#include <string>
Tortue::Tortue() {} Tortue::Tortue() {
++nbTortue;
}
Tortue::Tortue(const string &nom, const std::string &naissance, const string &sexe) : nom(nom), sexe(sexe), naissance(naissance) { Tortue::Tortue(const string &nom, const std::string &naissance, const string &sexe) : nom(nom), sexe(sexe), naissance(naissance) {
nbTortue ++; nbTortue ++;

0
back.txt Normal file
View file

View file

@ -26,15 +26,12 @@ int main(){
Board esp8266; Board esp8266;
// achat des senseurs et actionneurs // achat des senseurs et actionneurs
AnalogSensorTemperature temperature(TEMP,DELAY); AnalogSensorTemperature temperature(TEMP,DELAY);
//DigitalActuatorLED led1(DELAY);
IntelligentDigitalActuatorLED led1(DELAY);
Screen screen; Screen screen;
Keyboard keyboard; Keyboard keyboard;
AnalogSensorLuminosity luminosite(DELAY); ExternalDigitalSensorButton buttonNext(DELAY + 2, btnNextPath);
ExternalDigitalSensorButton buttonNext(DELAY, btnNextPath); ExternalDigitalSensorButton buttonPrev(DELAY + 2, btnPrevPath);
ExternalDigitalSensorButton buttonPrev(DELAY, btnPrevPath); ExternalDigitalSensorButton buttonOK(DELAY + 2, btnOkPath);
ExternalDigitalSensorButton buttonOK(DELAY, btnOkPath); ExternalDigitalSensorButton buttonBack(DELAY + 2, btnBackPath);
ExternalDigitalSensorButton buttonBack(DELAY, btnBackPath);
AnalogSensorManometre manometre(PRESSURE,DELAY); AnalogSensorManometre manometre(PRESSURE,DELAY);
DigitalActuatorRadiator radiator(DELAY); DigitalActuatorRadiator radiator(DELAY);
DigitalActuatorElectrovanne electrovanne(DELAY); DigitalActuatorElectrovanne electrovanne(DELAY);

View file

@ -13,7 +13,7 @@
#define LOW 0 #define LOW 0
#define MAX_I2C_DEVICES 4 #define MAX_I2C_DEVICES 4
#define I2C_BUFFER_SIZE 1024 #define I2C_BUFFER_SIZE 1024
#define MAX_IO_PIN 6 #define MAX_IO_PIN 10
using namespace std; using namespace std;

View file

@ -6,14 +6,16 @@
#define PROJET_VICTORAVECUNK_KEYBOARD_H #define PROJET_VICTORAVECUNK_KEYBOARD_H
#include "../../core_simulation.h" #include "../../core_simulation.h"
#include <unistd.h>
class Keyboard : public Device{ class Keyboard : public Device{
protected: protected:
char buf[I2C_BUFFER_SIZE]; char buf[I2C_BUFFER_SIZE];
public: public:
static bool saisie;
Keyboard(); Keyboard();
//virtual void run(); virtual void run();
void saisie(); //void saisie();
}; };

View file

@ -4,6 +4,7 @@
#include "app/include/TerrariumParameter.h" #include "app/include/TerrariumParameter.h"
#include "app/include/Menu.h" #include "app/include/Menu.h"
#include "app/include/Tortue.h" #include "app/include/Tortue.h"
#include "include/I2CDevices/Keyboard.h"
Terrarium *terrarium = new Terrarium(1); Terrarium *terrarium = new Terrarium(1);
@ -14,11 +15,11 @@ TerrariumParameter *pressure = new TerrariumParameter(3000,
Menu *menu = new Menu(); Menu *menu = new Menu();
list<Tortue> tortues; list<Tortue> * tortues = new list<Tortue>;
list<Tortue>::iterator iteratorT; list<Tortue>::iterator iteratorT;
string message; string message = "";
string input; string input = "";
@ -40,10 +41,10 @@ void Board::setup(){
digitalWrite(0,LOW); digitalWrite(0,LOW);
//pinMode(6, OUTPUT); //pinMode(6, OUTPUT);
tortues.push_back(*(new Tortue("Marvin","03/09/1996","male"))); tortues->push_back(*(new Tortue("Marvin","03/09/1996","male")));
tortues.push_back(*(new Tortue("Clara","03/09/2008", "female"))); tortues->push_back(*(new Tortue("Clara","03/09/2008", "female")));
tortues.push_back(*(new Tortue("Camille","03/09/2017", "non binary"))); tortues->push_back(*(new Tortue("Camille","03/09/2017", "non binary")));
tortues.push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse"))); tortues->push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse")));
} }
@ -77,34 +78,36 @@ void Board::loop() {
message = menu->getMessage(); message = menu->getMessage();
} }
if (i % 2 == 0) { int a3 = analogRead(3);
if (analogRead(3) == HIGH && (terrarium->getPrevState() != analogRead(3))) { int a4 = analogRead(4);
int a6 = analogRead(6);
int a7 = analogRead(7);
if ( a3 == HIGH && (terrarium->getPrevState() != a3)) {
terrarium->setPrevState(HIGH); terrarium->setPrevState(HIGH);
menu->previousChoice(); menu->previousChoice();
} else if (analogRead(3) == LOW && (terrarium->getPrevState() != analogRead(3))) { } else if (a3 == LOW && (terrarium->getPrevState() != a3)) {
terrarium->setPrevState(LOW); terrarium->setPrevState(LOW);
} }
if (analogRead(4) == HIGH && (terrarium->getNextState() != analogRead(4))) { else if (a4 == HIGH && (terrarium->getNextState() != a4)) {
terrarium->setNextState(HIGH); terrarium->setNextState(HIGH);
menu->nextChoice(); menu->nextChoice();
} else if (analogRead(4) == LOW && (terrarium->getNextState() != analogRead(4))) { } else if (a4 == LOW && (terrarium->getNextState() != a4)) {
terrarium->setNextState(LOW); terrarium->setNextState(LOW);
} }
if (analogRead(6) == HIGH && (terrarium->getOkState() != analogRead(6))) { else if (a6 == HIGH && (terrarium->getOkState() != a6)) {
terrarium->setOkState(HIGH); terrarium->setOkState(HIGH);
cout << "OK" << endl; cout << "OK" << endl;
menu->menuNext(); menu->menuNext();
} else if (analogRead(6) == LOW && (terrarium->getOkState() != analogRead(6))) { } else if (a6 == LOW && (terrarium->getOkState() != a6)) {
terrarium->setOkState(LOW); terrarium->setOkState(LOW);
cout << "NOK" << endl; cout << "NOK" << endl;
} }
if (analogRead(7) == HIGH && (terrarium->getBackState() != analogRead(7))) { else if (a7 == HIGH && (terrarium->getBackState() != a7)) {
terrarium->setBackState(HIGH); terrarium->setBackState(HIGH);
menu->menuBack(); menu->menuBack();
} else if (analogRead(7) == LOW && (terrarium->getBackState() != analogRead(7))) { } else if (a7 == LOW && (terrarium->getBackState() != a7)) {
terrarium->setBackState(LOW); terrarium->setBackState(LOW);
} }
}
// cout << buf << endl; // cout << buf << endl;
//sprintf(buf,"%s",menu.getMessage().c_str()); //sprintf(buf,"%s",menu.getMessage().c_str());
@ -112,35 +115,63 @@ void Board::loop() {
//sprintf(buf,"%f",temperature.getValue()); //sprintf(buf,"%f",temperature.getValue());
if (menu->getId() == 2){ if (menu->getId() == 2){
iteratorT = tortues.begin(); iteratorT = tortues->begin();
for (int j = 0; j < menu->getChoice(); ++j) { for (int j = 0; j < menu->getChoice(); ++j) {
iteratorT++; iteratorT++;
} }
//cout << iteratorT->getInfo() << endl; //cout << iteratorT->getInfo() << endl;
message += iteratorT->getInfo(); message += iteratorT->getInfo();
} }
if (cpt % 5 == 0) { if (cpt % 3 == 0) {
strcpy(buf, message.c_str()); strcpy(buf, message.c_str());
bus.write(1, buf, 150); if (buf != NULL) bus.write(1, buf, 150);
} }
if (menu->getId() == 5){ if (menu->getId() == 5){
Tortue * newTortue = new Tortue(); Keyboard::saisie = true ;
/*while (1){ sleep(5);
if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
bus.requestFrom(2, inputBuf, 150); bus.requestFrom(2, inputBuf, 150);
if (inputBuf[0] != '\0') {
}*/ input = "";
cin >> input; Tortue *newTortue = new Tortue();
for (int j = 0; inputBuf[j] != '\0'; ++j) {
input += inputBuf[j];
}
newTortue->setNom(input); newTortue->setNom(input);
tortues.push_back(*newTortue); tortues->push_back(*newTortue);
menu->menuNext(); menu->menuNext();
break;
}
}
} else if (menu->getId() == 11){ } else if (menu->getId() == 11){
cin >> input; Keyboard::saisie = true ;
tortues.back().setNaissance(input); sleep(5);
if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
bus.requestFrom(2, inputBuf, 150);
if (inputBuf[0] != '\0') {
input = "";
for (int j = 0; inputBuf[j] != '\0'; ++j) {
input += inputBuf[j];
}
tortues->back().setNaissance(input);
menu->menuNext(); menu->menuNext();
break;
}
}
} else if (menu->getId() == 12){ } else if (menu->getId() == 12){
cin >> input; Keyboard::saisie = true ;
tortues.back().setSexe(input); if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) {
bus.requestFrom(2, inputBuf, 150);
if (inputBuf[0] != '\0') {
input = "";
for (int j = 0; inputBuf[j] != '\0'; ++j) {
input += inputBuf[j];
}
tortues->back().setSexe(input);
menu->menuNext();
}
}
} }
cpt++; cpt++;