diff --git a/OtherDevices/I2CDevices/Keyboard.cpp b/OtherDevices/I2CDevices/Keyboard.cpp index c142e96..d538f10 100644 --- a/OtherDevices/I2CDevices/Keyboard.cpp +++ b/OtherDevices/I2CDevices/Keyboard.cpp @@ -7,11 +7,20 @@ Keyboard::Keyboard(): Device() {} //void Keyboard::run() {} +bool Keyboard::saisie = false; -void Keyboard::saisie() { - cin >> buf; - if (i2cbus!=NULL){ - while (!(i2cbus->isEmptyRegister(i2caddr))) {} - Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE); +void Keyboard::run() { + while (1) { + if (saisie && i2cbus != NULL) { + cin >> buf; + 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))) {} + Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE); + } + sleep(3); } } diff --git a/app/src/Menu.cpp b/app/src/Menu.cpp index 4a38c96..5730bdc 100644 --- a/app/src/Menu.cpp +++ b/app/src/Menu.cpp @@ -168,10 +168,17 @@ void Menu::menuNext() { else if(id == 5){ listId.push_back(id); id = 11; + choice = 2; } else if (id == 11){ listId.push_back(id); id = 12; + choice = 2; + } + else if (id == 12){ + listId.clear(); + id = 0; + choice = 0; } } diff --git a/app/src/Terrarium.cpp b/app/src/Terrarium.cpp index 4171c3c..e207efa 100644 --- a/app/src/Terrarium.cpp +++ b/app/src/Terrarium.cpp @@ -5,7 +5,8 @@ #include "../include/Terrarium.h" #include "../../core_simulation.h" 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 { return radState; diff --git a/app/src/Tortue.cpp b/app/src/Tortue.cpp index 8f3c2f0..3472ffb 100644 --- a/app/src/Tortue.cpp +++ b/app/src/Tortue.cpp @@ -7,7 +7,9 @@ //#include -Tortue::Tortue() {} +Tortue::Tortue() { + ++nbTortue; +} Tortue::Tortue(const string &nom, const std::string &naissance, const string &sexe) : nom(nom), sexe(sexe), naissance(naissance) { nbTortue ++; diff --git a/back.txt b/back.txt new file mode 100644 index 0000000..e69de29 diff --git a/board.cpp b/board.cpp index 5dd2a08..fd31ff7 100644 --- a/board.cpp +++ b/board.cpp @@ -26,15 +26,12 @@ int main(){ Board esp8266; // achat des senseurs et actionneurs AnalogSensorTemperature temperature(TEMP,DELAY); - //DigitalActuatorLED led1(DELAY); - IntelligentDigitalActuatorLED led1(DELAY); Screen screen; Keyboard keyboard; - AnalogSensorLuminosity luminosite(DELAY); - ExternalDigitalSensorButton buttonNext(DELAY, btnNextPath); - ExternalDigitalSensorButton buttonPrev(DELAY, btnPrevPath); - ExternalDigitalSensorButton buttonOK(DELAY, btnOkPath); - ExternalDigitalSensorButton buttonBack(DELAY, btnBackPath); + ExternalDigitalSensorButton buttonNext(DELAY + 2, btnNextPath); + ExternalDigitalSensorButton buttonPrev(DELAY + 2, btnPrevPath); + ExternalDigitalSensorButton buttonOK(DELAY + 2, btnOkPath); + ExternalDigitalSensorButton buttonBack(DELAY + 2, btnBackPath); AnalogSensorManometre manometre(PRESSURE,DELAY); DigitalActuatorRadiator radiator(DELAY); DigitalActuatorElectrovanne electrovanne(DELAY); diff --git a/core_simulation.h b/core_simulation.h index 1154635..2cc2127 100644 --- a/core_simulation.h +++ b/core_simulation.h @@ -13,7 +13,7 @@ #define LOW 0 #define MAX_I2C_DEVICES 4 #define I2C_BUFFER_SIZE 1024 -#define MAX_IO_PIN 6 +#define MAX_IO_PIN 10 using namespace std; diff --git a/include/I2CDevices/Keyboard.h b/include/I2CDevices/Keyboard.h index 32cc0ae..dcb5a50 100644 --- a/include/I2CDevices/Keyboard.h +++ b/include/I2CDevices/Keyboard.h @@ -6,14 +6,16 @@ #define PROJET_VICTORAVECUNK_KEYBOARD_H #include "../../core_simulation.h" +#include class Keyboard : public Device{ protected: char buf[I2C_BUFFER_SIZE]; public: + static bool saisie; Keyboard(); - //virtual void run(); - void saisie(); + virtual void run(); + //void saisie(); }; diff --git a/sketch_ino.cpp b/sketch_ino.cpp index 5df52fd..f602d89 100644 --- a/sketch_ino.cpp +++ b/sketch_ino.cpp @@ -4,6 +4,7 @@ #include "app/include/TerrariumParameter.h" #include "app/include/Menu.h" #include "app/include/Tortue.h" +#include "include/I2CDevices/Keyboard.h" Terrarium *terrarium = new Terrarium(1); @@ -14,11 +15,11 @@ TerrariumParameter *pressure = new TerrariumParameter(3000, Menu *menu = new Menu(); -list tortues; +list * tortues = new list; list::iterator iteratorT; -string message; -string input; +string message = ""; +string input = ""; @@ -40,10 +41,10 @@ void Board::setup(){ digitalWrite(0,LOW); //pinMode(6, OUTPUT); - 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("Camille","03/09/2017", "non binary"))); - tortues.push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse"))); + 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("Camille","03/09/2017", "non binary"))); + tortues->push_back(*(new Tortue("Clarisse","03/05/1843", "danseuse"))); } @@ -77,33 +78,35 @@ void Board::loop() { message = menu->getMessage(); } - if (i % 2 == 0) { - if (analogRead(3) == HIGH && (terrarium->getPrevState() != analogRead(3))) { - terrarium->setPrevState(HIGH); - menu->previousChoice(); - } else if (analogRead(3) == LOW && (terrarium->getPrevState() != analogRead(3))) { - terrarium->setPrevState(LOW); - } - if (analogRead(4) == HIGH && (terrarium->getNextState() != analogRead(4))) { - terrarium->setNextState(HIGH); - menu->nextChoice(); - } else if (analogRead(4) == LOW && (terrarium->getNextState() != analogRead(4))) { - terrarium->setNextState(LOW); - } - if (analogRead(6) == HIGH && (terrarium->getOkState() != analogRead(6))) { - terrarium->setOkState(HIGH); - cout << "OK" << endl; - menu->menuNext(); - } else if (analogRead(6) == LOW && (terrarium->getOkState() != analogRead(6))) { - terrarium->setOkState(LOW); - cout << "NOK" << endl; - } - if (analogRead(7) == HIGH && (terrarium->getBackState() != analogRead(7))) { - terrarium->setBackState(HIGH); - menu->menuBack(); - } else if (analogRead(7) == LOW && (terrarium->getBackState() != analogRead(7))) { - terrarium->setBackState(LOW); - } + int a3 = analogRead(3); + int a4 = analogRead(4); + int a6 = analogRead(6); + int a7 = analogRead(7); + if ( a3 == HIGH && (terrarium->getPrevState() != a3)) { + terrarium->setPrevState(HIGH); + menu->previousChoice(); + } else if (a3 == LOW && (terrarium->getPrevState() != a3)) { + terrarium->setPrevState(LOW); + } + else if (a4 == HIGH && (terrarium->getNextState() != a4)) { + terrarium->setNextState(HIGH); + menu->nextChoice(); + } else if (a4 == LOW && (terrarium->getNextState() != a4)) { + terrarium->setNextState(LOW); + } + else if (a6 == HIGH && (terrarium->getOkState() != a6)) { + terrarium->setOkState(HIGH); + cout << "OK" << endl; + menu->menuNext(); + } else if (a6 == LOW && (terrarium->getOkState() != a6)) { + terrarium->setOkState(LOW); + cout << "NOK" << endl; + } + else if (a7 == HIGH && (terrarium->getBackState() != a7)) { + terrarium->setBackState(HIGH); + menu->menuBack(); + } else if (a7 == LOW && (terrarium->getBackState() != a7)) { + terrarium->setBackState(LOW); } // cout << buf << endl; @@ -112,35 +115,63 @@ void Board::loop() { //sprintf(buf,"%f",temperature.getValue()); if (menu->getId() == 2){ - iteratorT = tortues.begin(); + iteratorT = tortues->begin(); for (int j = 0; j < menu->getChoice(); ++j) { iteratorT++; } //cout << iteratorT->getInfo() << endl; message += iteratorT->getInfo(); } - if (cpt % 5 == 0) { + if (cpt % 3 == 0) { strcpy(buf, message.c_str()); - bus.write(1, buf, 150); + if (buf != NULL) bus.write(1, buf, 150); } if (menu->getId() == 5){ - Tortue * newTortue = new Tortue(); - /*while (1){ - bus.requestFrom(2,inputBuf,150); - - }*/ - cin >> input; - newTortue->setNom(input); - tortues.push_back(*newTortue); - menu->menuNext(); + Keyboard::saisie = true ; + sleep(5); + if ( (&bus!=NULL)&&!(bus.isEmptyRegister(2))) { + bus.requestFrom(2, inputBuf, 150); + if (inputBuf[0] != '\0') { + input = ""; + Tortue *newTortue = new Tortue(); + for (int j = 0; inputBuf[j] != '\0'; ++j) { + input += inputBuf[j]; + } + newTortue->setNom(input); + tortues->push_back(*newTortue); + menu->menuNext(); + break; + } + } } else if (menu->getId() == 11){ - cin >> input; - tortues.back().setNaissance(input); - menu->menuNext(); + Keyboard::saisie = true ; + 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(); + break; + } + } } else if (menu->getId() == 12){ - cin >> input; - tortues.back().setSexe(input); + Keyboard::saisie = true ; + 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++;