From acb5c35fe1ab07825296377207ecdccfd5958981 Mon Sep 17 00:00:00 2001 From: bray Date: Fri, 22 May 2020 17:27:40 +0200 Subject: [PATCH] Menu.cpp v0 --- OtherDevices/I2CDevices/Keyboard.cpp | 12 ++++++ app/include/Menu.h | 24 +++++++++++ app/src/Menu.cpp | 63 ++++++++++++++++++++++++++++ board.cpp | 6 ++- core_simulation.cpp | 2 + core_simulation.h | 2 + include/I2CDevices/Keyboard.h | 10 ++++- sketch_ino.cpp | 62 ++++++++++++++------------- 8 files changed, 148 insertions(+), 33 deletions(-) create mode 100644 app/include/Menu.h create mode 100644 app/src/Menu.cpp diff --git a/OtherDevices/I2CDevices/Keyboard.cpp b/OtherDevices/I2CDevices/Keyboard.cpp index 192888a..c142e96 100644 --- a/OtherDevices/I2CDevices/Keyboard.cpp +++ b/OtherDevices/I2CDevices/Keyboard.cpp @@ -3,3 +3,15 @@ // #include "../../include/I2CDevices/Keyboard.h" + +Keyboard::Keyboard(): Device() {} + +//void Keyboard::run() {} + +void Keyboard::saisie() { + cin >> buf; + if (i2cbus!=NULL){ + while (!(i2cbus->isEmptyRegister(i2caddr))) {} + Device::i2cbus->write(i2caddr, buf, I2C_BUFFER_SIZE); + } +} diff --git a/app/include/Menu.h b/app/include/Menu.h new file mode 100644 index 0000000..923fdf9 --- /dev/null +++ b/app/include/Menu.h @@ -0,0 +1,24 @@ +// +// Created by camer on 22/05/2020. +// + +#ifndef PROJET_VICTORAVECUNK_MENU_H +#define PROJET_VICTORAVECUNK_MENU_H +#include +#include + +class Menu { +protected: + int id; + int nbreChoices; + int choice; + std::list> list; +public: + Menu(); + std::string getMessage(); + void nextChoice(); + void update(std::string message); +}; + + +#endif //PROJET_VICTORAVECUNK_MENU_H diff --git a/app/src/Menu.cpp b/app/src/Menu.cpp new file mode 100644 index 0000000..f866971 --- /dev/null +++ b/app/src/Menu.cpp @@ -0,0 +1,63 @@ +// +// Created by camer on 22/05/2020. +// + +#include "../include/Menu.h" + +Menu::Menu() : id(0), choice(0) { + list.push_back(*(new std::pair(1,"liste tortue"))); + list.push_back(*(new std::pair(1,"management tortue"))); + list.push_back(*(new std::pair(1,"Gestion terrarium"))); + + list.push_back(*(new std::pair(3,"ajouter tortue"))); + list.push_back(*(new std::pair(3,"supprimer tortue"))); + + list.push_back(*(new std::pair(4,"Temperature max"))); + list.push_back(*(new std::pair(4,"Temperature min"))); + list.push_back(*(new std::pair(4,"Profondeur max"))); + list.push_back(*(new std::pair(4,"Profondeur min"))); +} + +std::string Menu::getMessage() { + int cpt = 0; + std::string message = ""; + std::list>::iterator it; + for (it = list.begin(); it != list.end() ; it++) { + if (it->first == id){ + if (it->first == choice){ + message += "->" + it->second; + } else { + message += it->second; + } + ++cpt; + } + } + return message; +} + +void Menu::nextChoice() { + choice = (choice + 1) % nbreChoices; +} + +void Menu::update(std::string message) { + if (message == "n"){ + nextChoice(); + } else if (message == "liste tortue"){ + id = 2; + } else if (message == "management tortue"){ + id = 3; + nbreChoices = 2; + } else if (message == "gestion terrarium"){ + id = 4; + nbreChoices = 4; + } +} diff --git a/board.cpp b/board.cpp index 661026a..9725de5 100644 --- a/board.cpp +++ b/board.cpp @@ -7,6 +7,7 @@ #include "include/DigitalDevices/DigitalActuators/DigitalActuatorRadiator.h" #include "include/DigitalDevices/DigitalActuators/DigitalActuatorElectrovanne.h" #include "include/I2CDevices/Screen.h" +#include "include/I2CDevices/Keyboard.h" int main(){ // creation d'une board @@ -16,6 +17,7 @@ int main(){ //DigitalActuatorLED led1(DELAY); IntelligentDigitalActuatorLED led1(DELAY); Screen screen; + Keyboard keyboard; AnalogSensorLuminosity luminosite(DELAY); ExternalDigitalSensorButton button(DELAY); AnalogSensorManometre manometre(PRESSURE,DELAY); @@ -27,10 +29,12 @@ int main(){ esp8266.pin(1,temperature); //esp8266.pin(0,led1); esp8266.pin(2, electrovanne); - esp8266.i2c(1,screen); esp8266.pin(4, button); esp8266.pin(5, manometre); esp8266.pin(0, radiator); + + esp8266.i2c(1,screen); + esp8266.i2c(2,keyboard); // allumage de la carte esp8266.run(); diff --git a/core_simulation.cpp b/core_simulation.cpp index 581fd33..ba8820b 100644 --- a/core_simulation.cpp +++ b/core_simulation.cpp @@ -174,3 +174,5 @@ void Board::i2c(int addr,Device& dev){ tabthreadbus[addr]=new thread(&Device::run,&dev); } + + diff --git a/core_simulation.h b/core_simulation.h index 16d5afb..1154635 100644 --- a/core_simulation.h +++ b/core_simulation.h @@ -126,6 +126,8 @@ public: void setup(); // fonction arduino : boucle de controle de la carte arduino void loop(); + void TemperatureManagement(); + void PressureManagement(); }; #endif diff --git a/include/I2CDevices/Keyboard.h b/include/I2CDevices/Keyboard.h index 889b556..32cc0ae 100644 --- a/include/I2CDevices/Keyboard.h +++ b/include/I2CDevices/Keyboard.h @@ -5,9 +5,15 @@ #ifndef PROJET_VICTORAVECUNK_KEYBOARD_H #define PROJET_VICTORAVECUNK_KEYBOARD_H +#include "../../core_simulation.h" -class Keyboard { - +class Keyboard : public Device{ +protected: + char buf[I2C_BUFFER_SIZE]; +public: + Keyboard(); + //virtual void run(); + void saisie(); }; diff --git a/sketch_ino.cpp b/sketch_ino.cpp index a8c058d..5f9baeb 100644 --- a/sketch_ino.cpp +++ b/sketch_ino.cpp @@ -34,37 +34,9 @@ void Board::loop(){ static int bascule=0; int i=0; //for(i=0;i<10;i++){ - // if (i%3==0) { - // lecture sur la pin 1 : capteur de temperature - temperature.setValue(analogRead(1)); - sprintf(buf, "temperature %f", temperature.getValue()); - Serial.println(buf); + TemperatureManagement(); + PressureManagement(); - if ((temperature.is2Low()) && (terrarium.getRadState() == LOW)) { - digitalWrite(0, HIGH); - terrarium.setRadState(HIGH); - } - else if ((temperature.is2High() ) && (terrarium.getRadState() == HIGH)) { - digitalWrite(0, LOW); - terrarium.setRadState(LOW); - } - - - // lecture sur la pin 2 : capteur de temperature - pressure.setValue(analogRead(5)); - sprintf(buf, "pressure %f", pressure.getValue()); - Serial.println(buf); - - if ((pressure.is2Low()) && (terrarium.getTapState() == LOW)) { - digitalWrite(2, HIGH); - terrarium.setTapState(HIGH); - } - else if ((pressure.is2High() ) && (terrarium.getTapState() == HIGH)) { - digitalWrite(2, LOW); - terrarium.setTapState(LOW); - } - - // } @@ -81,4 +53,34 @@ void Board::loop(){ } +void Board::TemperatureManagement() { + char buf[100]; + temperature.setValue(analogRead(1)); + sprintf(buf, "temperature %f", temperature.getValue()); + Serial.println(buf); + if ((temperature.is2Low()) && (terrarium.getRadState() == LOW)) { + digitalWrite(0, HIGH); + terrarium.setRadState(HIGH); + } + else if ((temperature.is2High() ) && (terrarium.getRadState() == HIGH)) { + digitalWrite(0, LOW); + terrarium.setRadState(LOW); + } +} + +void Board::PressureManagement() { + char buf[100]; + pressure.setValue(analogRead(5)); + sprintf(buf, "pressure %f", pressure.getValue()); + Serial.println(buf); + + if ((pressure.is2Low()) && (terrarium.getTapState() == LOW)) { + digitalWrite(2, HIGH); + terrarium.setTapState(HIGH); + } + else if ((pressure.is2High() ) && (terrarium.getTapState() == HIGH)) { + digitalWrite(2, LOW); + terrarium.setTapState(LOW); + } +}